gpt4 book ai didi

Firebase:进入页面后停止刷新数据

转载 作者:IT王子 更新时间:2023-10-29 06:42:02 26 4
gpt4 key购买 nike

我目前有一个导航栏,可以在存储在列表中的不同 Containers 之间切换。 Containers 之一包含一个 StreamBuilder 以设置来自 firebase 的监听器。但是,我的问题是每次我从该页面导航并返回该页面时,该页面都会“刷新”并再次从 firebase 中提取数据。我希望它不要这样做,因为这会导致我的阅读量增加,从而产生成本。

我目前的代码是这样的:

StreamBuilder(
stream:
Firestore.instance.collection('Lessons').limit(4).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return const Text('Loading your Lessons....');
print("rebuilt");
return ListView.builder(
itemExtent: 80.0,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildListItem(context, snapshot.data.documents[index]),
);
}),

有没有办法让之前加载的类(class)在下次返回页面时显示?

最佳答案

它发生是因为你正在使用

stream: Firestore.instance.collection('Lessons').limit(4).snapshots(),

在您的 build() 方法中,它可以被多次调用。

所以更好的方法是声明一个变量,如:

Stream stream;

然后在您的 initState 中将其定义为:

@override
void initState() {
super.initState();
stream = Firestore.instance.collection('Lessons').limit(4).snapshots();
}

然后你可以像这样使用它:

stream: steam

因为 initState 在树中只被调用一次(除非你正在做一些其他特殊的事情),所以你只需要一次读取请求,然后你可以在任何你想要的地方使用它。

关于Firebase:进入页面后停止刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57472582/

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