编辑:
因为现在显示数据,如果我在错误发生后进行了hot reload
操作。我假设我的Future
中未包含的其他FutureBuilder
会触发该错误。
这里是实际功能:
List<Feed> feedList = [];
List<User> userList = [];
@override
void initState() {
super.initState();
getFeed = getFeedAll();
this.getUsers();
}
Future<List<Feed>> getFeedAll() async {
var res = await http.get(
Uri.encodeFull(APIServices.httpDomain + APIServices.postGetAll),
headers: {"Authorization": "Bearer " + Constants.token});
if (res.statusCode == 200) {
var data = json.decode(res.body);
this.getUsers();
feedList = data.map<Feed>((json) => Feed.fromJson(json)).toList();
}
return feedList;
}
Future<List<User>> getUsers() async {
var res = await http.get(
Uri.encodeFull(APIServices.httpDomain + APIServices.usersAll),
headers: {"Authorization": "Bearer " + Constants.token});
if (res.statusCode == 200) {
var data = json.decode(res.body);
userList = data.map<User>((json) => User.fromJson(json)).toList();
}
return userList;
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getFeed,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Container(
padding: EdgeInsets.all(10),
child: feedListWidget(snapshot.data));
} else {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Center(
child: Container(
width: 50,
height: 50,
child: CircularProgressIndicator(),
),
),
);
}
},
);
}
现在,我正在userList
小部件中使用feedListWidget
。
我很确定getUsers()
会触发该错误。
如何在getUsers()
中包含FutureBuilder
?
因为那是我认为可以解决我问题的方法。
答案 0 :(得分:0)
似乎您没有在这里等待数据:
getFeed = getFeedAll();
this.getUsers();
使用await
执行该操作
getFeed = await getFeedAll();
await this.getUsers();