我有一个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/

10-11 03:44