如何解决futurebuilder 和 http json
你好,我正在开发一个带有 Flutter 的应用程序,但我在使用 Futurebuilder 时遇到了一个错误,我不明白 请帮忙
我试图通过未来的构建器根据 id 获取标题和描述
这是我的json
{"title":"15%GANT","desc":"donne 15 % sur les gants"}
这是我的未来
Future<Data> fetchData(int id,String type) async {
var queryParameters = {
'type': type,'id': id,};
String url = 'tartapain.bzh';
var uri = Uri.https(url,'/api/scan/get.php',queryParameters);
final response = await http.get(uri);
if (response.statusCode == 200) {
if (response.body != null) {
return Data.fromJson(json.decode(response.body));
}
} else {
throw Exception('Failed to load the post');
}
}
这是我的数据类
class Data {
final String title;
final String desc;
Data({
this.title,this.desc,});
factory Data.fromJson(Map<String,dynamic> json) {
print(json['desc'] + " " + json['title'] + "\n");
return Data(
desc: json['desc'],title: json['title'],);
}
}
这是 mt init
Future<Data> futureData;
@override
void initState() {
super.initState();
futureData = fetchData(widget.id,'get_info_id');
}
这是我的 futureBuilder
FutureBuilder(
future: futureData,initialData: [],builder: (context,snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: Text("Loading..."));
}
if (snapshot.hasData) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
Text(
snapshot.data.title,style: TextStyle(color: Colors.white,fontSize: 18),),Text(
snapshot.data.desc,fontSize: 12),)
],);
} else if (snapshot.hasError) {
return Text(
'${snapshot.error}',);
} else {
return CircularProgressIndicator(
valueColor:
new AlwaysStoppedAnimation<Color>(Colors.black));
}
})
我收到此错误:
“int”类型不是“Iterable”类型的子类型
解决方法
错误似乎是由应该是 String 类型的 ID 引起的。 这解决了问题。
如果值为空,我建议在您的模型中进行一些检查。
class Data {
final String title;
final String desc;
Data({
this.title,this.desc,});
factory Data.fromJson(Map<String,dynamic> json) {
//print(json['desc'] + " " + json['title'] + "\n");
return Data(
desc: (json['desc']!=null)?json['desc']:'no desc',title: (json['title']!=null)?json['title']:'no title',);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。