我想从两个不同的Firebase集合中获得两个QuerySnapshot类型的流提供程序。当我尝试仅使两个具有相同值的流提供程序时,其中一个流提供程序仅覆盖了另一个。是否可以通过某种方式区分相同数据类型的两个流提供程序?这是两个提供商的当前代码:
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
StreamProvider.value(value: FirestoreHelper.getClassCollectionReference(context).snapshots()),
StreamProvider.value(value: FirestoreHelper.getTaskCollectionReference(context).snapshots()),
],
答案 0 :(得分:0)
是的,总有办法。您可以做的是为您的任何查询创建自定义类或模型类,然后将来自该查询的快照与自定义类进行映射。
class MySnap {
final QuerySnapshot snapshot;
MySnap(this.snapshot);
}
将您的任何提供商更改为此
StreamProvider.value(value:FirestoreHelper.getClassCollectionReference(context).snapshots().map<MySnap>((snap) => MySnap(snap)),
要访问数据,请使用:
var mysnap = Provider.of<MySnap>(context);
var data = mysnap.snapshot;///This is your querysnapshot