我现在想实现的是,通过获取到的帖子列表,然后通过帖子的发贴人获取头像并且异步加载。现在有两个不同的代码,前者不能实现是因为 setState 的作用域问题造成无法更新组件吗?
如果有更好的实现希望能说一下。
Future<void> _refresh() async { // 获取 topicList
topics = topicService.getTopics();
for (Topic topic in topicList) {
userService.getUserByUsername(topic.author.name).then((user) { // 异步执行
topic.author = user // 更新用户信息 其中包括用户头像 url
setState(() { // 目的: 更新头像
})
});
}
setState(() { // 更新帖子列表
})
}
// 失败,组件无法被更新
Future<void> _refresh() async { // 获取 topicList
topics = topicService.getTopics();
_getUserByTopics(topics); // 异步执行
setState(() { // 更新帖子列表
})
}
Future<void> _getUserByTopics (List<Topic> topicList) async {
for (Topic topic in topicList) {
topic.author = await userService
.getUserByUsername(topic.author.name); // 更新用户信息 其中包括用户头像 url
setState(() { // 目的: 更新头像
})
}
}
// 成功,头像被一个个加载了。
。