gpt4 book ai didi

flutter - 将已完成的 future 传递给 FutureBuilder 时避免单帧等待状态

转载 作者:行者123 更新时间:2023-12-03 03:59:18 24 4
gpt4 key购买 nike

我有一个 Future<PostData> 的列表我用它来为类似 tinder 的滑动提要消费创建预加载机制,但我遇到了一些问题。事实上,当刷卡时,我会使用我的 List<Future<PostData>> 中已加载的下一个帖子重建卡片堆栈。 .

事情是,即使我的 future 已经完成,我得到一个 ConnectionState.waiting 的框架在我 future builder 中使 UI 抖动。

此限制记录在文档中:

A side-effect of this is that providing a new but already-completed future to a FutureBuilder will result in a single frame in the ConnectionState.waiting state. This is because there is no way to synchronously determine that a Future has already completed.

我想知道,有没有办法避免这个问题?

干杯!

最佳答案

不确定是否可以使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com