我想将方法'getData()'返回的数据放入列表'datat',但出现此错误
:'方法'[]'在null'
上被调用
这是相应的代码:
ListeMedecinsState() {
/* Fetching Data Into ListView */
Future<String> getData() async {
var response = await http.get(
Uri.encodeFull("http://10.0.2.2:4000/user/GetAllMedecins"),
headers: {
"Accept": "application/json"
}
);
this.setState(() {
this.data = json.decode(response.body);
});
return "Success";
}
getData() ;
print(this.data[1]["email"]);
/* Fetching Data Into ListView */
}
注意:当我将数据检索到方法内部的列表中时,它没有显示错误,我想在方法范围之外使用数据,我该怎么办?
答案 0 :(得分:2)
此外,您也可以这样:
getData().then((data){
//do something with data
});
答案 1 :(得分:1)
您应 <Variable> = @()
await
但是请发布您的完整代码,以便于理解。
谢谢
答案 2 :(得分:1)
@塞巴斯蒂安是正确的。 (所以选择他的答案不是我的。我只在这里发布,这样您可以看到完整的代码)您的代码应为:
ListeMedecinsState() async { // <-- this has to be added as well
/* Fetching Data Into ListView */
Future<String> getData() async {
var response = await http.get(
Uri.encodeFull("http://10.0.2.2:4000/user/GetAllMedecins"),
headers: {
"Accept": "application/json"
}
);
this.setState(() {
this.data = json.decode(response.body);
});
return "Success";
}
await getData() ; // <--- your code needs to pause until the Future returns.
print(this.data[1]["email"]);
/* Fetching Data Into ListView */ }
答案 3 :(得分:0)
正如塞巴斯蒂安所说,您的ListeMedecinState应该是异步的。 这样您就可以等待请求,然后仅继续完成。
您的代码实际上在继续操作之前并不等待getData()方法的结果。 因此,您应先等待,然后再尝试访问获取的数据!
希望这会有所帮助!
(似乎您会讲法语,我也讲法语,以防万一您迷路了:)