flutter - FLutter:迭代列表时在 null 上调用了方法“[]”
问题描述
这是我到现在为止的源代码。你能告诉我出了什么问题以及为什么我会收到这个错误吗?
任何帮助,将不胜感激。谢谢!
错误是:
Data[0] 中的错误它显示 Flutter:迭代列表导入“package:flutter/material.dart”时,方法“[]”在 null 上被调用;
class MyGetHttpDataState extends State<MyGetHttpData> {
final String url = "*******";
List data, a; int index; // Function to get the JSON data
Future<String> getJSONData() async {
var response = await http.get(url);
print(response.body);
setState(() {
json.decode(response.body);
data = dataConvertedToJSON['data']; index = 0;
});
return "Successfull";
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar( title: new Text('List Test'), ),
body: new Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
for (var name in data[0]['INCI']) Text(name)
], ), ), ));
}
@override
void initState() {
super.initState();
this.getJSONData();
}
}
解决方案
只需将您的代码更改为此!
Future<String> getJSONData() async {
var response = await http.get(url);
setState(() {
var dataConvertedToJSON = json.decode(response.body);
data = dataConvertedToJSON['data'];
data = data[0]['INCI'];
});
return "Successfull";
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar( title: new Text('List Test'), ),
body: new Center(
child: data != null ? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
for (var name in data) Text(name)
],
) : new CircularProgressIndicator(),
),
)
);
}