我现在想实现的是,通过获取到的帖子列表,然后通过帖子的发贴人获取头像并且异步加载。现在有两个不同的代码,前者不能实现是因为 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(() { // 目的: 更新头像
})
}
}
// 成功,头像被一个个加载了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.