FLutter:迭代列表时在 null 上调用了方法“[]”
Posted
技术标签:
【中文标题】FLutter:迭代列表时在 null 上调用了方法“[]”【英文标题】:FLutter : The method '[]' was called on null when iterating list 【发布时间】:2019-12-04 00:51:55 【问题描述】:这是我到现在为止的源代码。您能告诉我哪里出了问题以及为什么会出现此错误吗?
任何帮助将不胜感激。谢谢!
错误是:
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();
【问题讨论】:
当我运行代码时它显示错误 1 秒然后给我结果 如果我做不到,我能做什么? 显示什么错误? 在 null 上调用了方法“[]”。如果我删除: for (var name in data[0]['INCI']) Text(name) no more error there 你想要什么?打印 INCI 或其他内容中的所有值? 【参考方案1】:只需将您的代码更改为这个!
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(),
),
)
);
【讨论】:
但是当我进行另一次搜索但没有找到结果时,它给了我最后一个结果,我想显示“未找到” 只需将new CircularProgressIndicator(),
更改为new Text("Not Found")
兄弟,对不起,如果我再次打扰,但是当我使用 AlertDialog 时,它给了我这样的黑屏 i.stack.imgur.com/J2aHA.png
您何时何地使用它?
codepile.net/pile/ZER40Jom 我正在使用自定义对话框 giffy import 'package:giffy_dialog/giffy_dialog.dart';以上是关于FLutter:迭代列表时在 null 上调用了方法“[]”的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:更新数据时在 null 上调用成员函数 getClientOriginalName()
NoSuchMethodError:在 null 上调用了方法 '[]' - Flutter