在我的Flutter应用程序中,我尝试在initState中调用API,并且能够成功获得所需格式的响应。我知道这一点是因为当我尝试在按下按钮时打印变量时,我得到了正确的响应。但是,当我尝试在实际应用程序中显示此响应时,例如通过文本小部件或ListView,我得到了错误。
我是这么做的:
1.我在initState方法中调用了我的API,并且成功地得到了响应:
dynamic myArticles = {};
@override
void initState() {
super.initState();
getTopNews().then((value) {
setState(() {
myArticles = value;
});
});
}
1.我有一个按钮,它成功地显示了我希望从API获得的响应:
MaterialButton(
child: Text("Click"),
onPressed: () {
print(myArticles["articles"][0]["description"]);
}
)
//On clicked, the button prints out the value I want.
1.我添加了一个文本小部件的代码,它应该显示信息,我重新加载了应用程序,但是我得到了一个错误。
Text(myArticles["articles"][0]["description"])
// This line of code returns an error.
我从第3步得到的错误如下:
(NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: [](0))
为什么会出现此错误,如何解决?我知道我正确调用了API,并返回了正确的数据,但当我尝试在应用程序中显示相同的信息时,却出现了错误。
1条答案
按热度按时间nfeuvbwi1#
因为在第一次构建时,
myArticles
为空,myArticles["articles"]
将为null。您可以使用
?
进行修复: