gpt4 book ai didi

flutter - Dart:在Flutter应用中最小化对Firebase的访问

转载 作者:行者123 更新时间:2023-12-03 04:49:08 27 4
gpt4 key购买 nike

我有以下小部件,该部件从给定文档ID的任务的子集合构建待办事项列表。该代码工作正常。

  Widget buildFoodList() {
return SizedBox(
child: Container(
padding: const EdgeInsets.all(10.0),
child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('tasks').document(documentID).collection('todo')
.snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return new Text('Loading...');
default:
return new ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot ds = snapshot.data.documents[index];
return new Row(
children: <Widget>[
Expanded (child:Text(ds['deadline'].toString()) ),
Expanded (child:Text(ds['description']) ),
Expanded (child:Text("\$"+ds['quantity'].toString()) ),
],
);
},
);
}
},
)
),
);

}

如您所见,我正在使用StreamBuilder。但是,我知道子集合不会改变。因此,问题在于使用StreamBuilder是否过大,因为使用流进行侦听可能会浪费资源和访问Firebase。更重要的是,使用Firebase的成本是基于访问权计算的。

总而言之,问题是是否需要使用StreamBuilder。如果不是,那么有什么替代方法可以帮助避免不必要地访问Firebase。

谢谢。

最佳答案

在需要获取Firebase集合中的所有更新,插入或删除的应用程序中,StreamBuilder是必需的(在这种情况下)。另一种方法是FutureBuilder,该方法可以一次获取数据,然后可以将其包装在Swipe中进行刷新(然后用户决定何时需要查看新数据)。

关于flutter - Dart:在Flutter应用中最小化对Firebase的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61706042/

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