我有一个Future<PostData>
列表,可用于创建预加载机制来应付类似火种的轻扫提要,但我遇到了一些问题。实际上,刷卡时,我使用List<Future<PostData>>
中已经加载的下一个帖子重建卡堆栈。
问题是,即使我的 future 已经完成,我的 future builder 中也会出现一帧ConnectionState.waiting
,这会导致UI抖动。
在文档中记录了此限制:
我想知道,有没有办法避免这个问题?
干杯!
最佳答案
不确定您可以使用FutureBuilder
实现这一点。
考虑创建一个将处理网络,缓存等的类。
然后使用ValueListenableBuilder
收听其更改。
像这样:
class PostsRetriever{
//handles loading, caching of posts
}
class PostsWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final postsRetriever = Provider.of<PostsRetriever>(context);
return ValueListenableBuilder<PostData>(
valueListenable: postsRetriever.currentPost,
builder: (context, currentPost, _) {
//some ui that will draw currentPost'
return RawMaterialButton(onPressed: postsRetriever.loadNext());
};
}
您将需要provider库。
关于flutter - 将已经完成的Future传递给FutureBuilder时避免单帧等待状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58451500/