未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤振
Posted
技术标签:
【中文标题】未处理的异常:\'String\' 类型不是\'index\' 的\'int\' 类型的子类型问题 Dart 和颤振【英文标题】:Unhandled Exception: type 'String' is not a subtype of type 'int' of 'index' Problem Dart & flutter未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤振 【发布时间】:2020-03-07 23:23:32 【问题描述】:我有这个变量问题
这是我的getdata
函数
Future <List <Deal>> getData() async
String myUrl = "http://10.25.20.27:5000/api/all";
var response = await http.get(myUrl,
headers:
'Accept':'application/json',
);
var jsonData = json.decode(response.body);
List<Deal> deals =[];
var u;
for( u in jsonData)
Deal deal = Deal(u["id"],u["name"],u["adress"],u["photo"],u["Description"],u["discount"]);
return deals;
我得到了这个错误
正在执行热重载... 在 902 毫秒内重新加载了 594 个库中的 14 个。 E/flutter(4211):[错误:flutter/lib/ui/ui_dart_state.cc(148)]未处理的异常:类型'String'不是'index'类型'int'的子类型 E/flutter (4211): #0 DatabaseHelper.getData (package:flutter_app/databasehelper.dart:116:25) E/颤振(4211): E/颤振(4211):#1 _HomeePageState.build。 (包:flutter_app/homee_page.dart:100:80) E/flutter (4211): #2 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:654:14) E/颤振(4211):#3 _InkResponseState.build。 (包:flutter/src/material/ink_well.dart:729:32) E/flutter(4211):#4 GestureRecognizer.invokeCallback(包:flutter/src/gestures/recognizer.dart:182:24) E/flutter (4211): #5 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11) E/flutter (4211): #6 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:275:7) E/flutter (4211): #7 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:455:9)
【问题讨论】:
尝试打印u
变量以查看里面的内容:print(u);
您能否分享响应 JSON 和 Deal 类以便更好地理解问题?
当我打印 ui 时得到 null 和 thisi response.body
[[id: 1, name: adresse Marrakech, adress: guéliz, photo: , Description: C'est un endroit zwiiin, 折扣: 30 , id: 2, name: Bogato, adress: guéliz, photo: , Description: bniiinnn, discount: Offres ]]
所以你的意思是u
在for( u in jsonData)
循环中为空?
这是整个循环:for(u in jsonData) Deal deal = Deal(u["id"],u["name"],u["adress"],u["照片"],u["描述"],u["折扣"]);交易。添加(交易);
【参考方案1】:
我认为你可以像下面这样创建“交易”类:-
class Deal
String id;
String name;
String adress;
String photo;
String Description;
String discount;
Deal(
this.id,
this.name,
this.adress,
this.photo,
this.Description,
this.discount,
);
然后你可以使用如下循环:-
var u;
for (u in jsonData)
Deal deal = Deal(
u["id"].toString(),
u["name"].toString(),
u["adress"].toString(),
u["photo"].toString(),
u["Description"].toString(),
u["discount"].toString());
【讨论】:
以上是关于未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤振的主要内容,如果未能解决你的问题,请参考以下文章
未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤振
未处理的异常:类型 'List<dynamic>' 不是类型 'Map<String, dynamic
未处理的异常:类型“bool”不是类型转换中“String”类型的子类型
未处理的异常:类型'List<dynamic>'不是'String'类型的子类型无法获取json数据[重复]