【发布时间】:2020-04-17 07:52:08
【问题描述】:
我有 4 页。我每 4 页调用一次getRide() 方法。这意味着 4 次数据库调用。我对吗?是否可以为这种情况创建一个单例?
Firebase 服务:
class FirebaseService {
final Firestore _db = Firestore.instance;
Stream<List<RideModel>> getRide() {
return _db.collection('ride')
.snapshots()
.map((list) => list.documents.map((doc) => RideModel.fromFirestore(doc))
.toList());
}
}
调用方法:
@override
void initState() {
super.initState();
db.getRide().listen(getRide);
}
void getRide(List<RideModel> model) {
if (!mounted) return;
setState(() {
rideModel = model;
});
}
我无法通过 Navigator 传递 rideModel。因为在乘车集合中更改数据时需要更改 4 页 UI。
【问题讨论】:
-
您可以使用
Provider,其中包含您要显示的数据,当Stream获取新数据时,您将其添加到Provider和代码的其他3 部分中,您可以使用Consumer收听这些数据。所以,这样你只听一次流。 -
@CopsOnRoad 好的,谢谢。添加这样的数据
selectNotifier.value.add(productModel);对吗?我的回答错了吗? -
你的模型应该有 List
形式的数据。当数据到达流中时,首先使用 Provider.of 获取对您的提供者的引用,然后访问 List 并在其上使用 .add ,从而将该数据添加到列表中。我正在打电话,所以帮不了你。 -
@CopsOnRoad 好的。谢谢你。我会尽力让你知道
标签: firebase flutter dart google-cloud-firestore