flutter - 如何在flutter中拥有相同数据类型的多个流提供者?

标签 flutter flutter-provider

我想要从两个不同的 Firebase 集合中获得两个 QuerySnapshot 类型的流提供程序。当我尝试只创建两个具有相同值的流提供程序时,其中一个流提供程序只是覆盖了另一个。是否有可能以某种方式区分相同数据类型的两个流提供者?这是我当前的两个提供程序的代码:

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StreamProvider.value(value: FirestoreHelper.getClassCollectionReference(context).snapshots()),
        StreamProvider.value(value: FirestoreHelper.getTaskCollectionReference(context).snapshots()),
      ],
      

最佳答案

是的,总有办法的。您可以做的是为任何查询创建自定义类或模型类,然后将来自该查询的快照与自定义类映射。

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

关于flutter - 如何在flutter中拥有相同数据类型的多个流提供者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065920/

相关文章:

firebase - Flutter,FieldValue.removeArray()无法正常工作

linux - 异常 : No Linux desktop project configured error on flutter project

flutter - 在小部件上方找不到正确的提供商

当 sqflite 数据库数据更改时,Flutter 提供程序监听器不会自行更新

flutter - 动态添加/删除小部件以在Flutter onTap中列出

flutter - Flutter和Future <bool>无法与 bool 值比较

dart - FirebaseAnimatedList itemBuilder 错误

flutter - 尽管 Stream.empty() 在数据库为空时应该返回,但为什么 RiverPod StreamProvider 仍停留在加载状态

asynchronous - 初始化我的 BLoC 时应该如何处理异步调用?

flutter - 提供者 NotifyListeners 不更新消费者