如何在flutter中串流嵌套的集合

时间:2020-07-15 14:27:58

标签: android flutter dart google-cloud-firestore flutter-provider

我在firestore中有以下集合,集合名称为“ 商店”,在该集合下我具有“ itemList ”的子集合。 我想使用“ 商店” ID访问“ 商品清单”。 以下是我的更改通知器。

runApp(MultiProvider(
providers: [ChangeNotifierProvider.value(value: ShopProvider.initialize()),
  ChangeNotifierProxyProvider<ShopProvider, ItemProvider>(
    create: (_) => ItemProvider.initialize(),
    update: (_, shop, item) => item..docId = shop..documentID,
    //instead of creating a new object Prod(), just reuse the existing one and set the new values
  )
  ],
child: MyApp(),
));

这是我的itemProvider

class ItemProvider with ChangeNotifier {
  String _docId;
  bool _isLoading = false;
  bool get isLoading => _isLoading;

  List<Item> _items = [];
  List<Item> get items => _items;

  set docId(String docId) => _docId = docId;

  ItemProvider.initialize(){
    initState();
  }

  Future initState() async {
    var res = await ItemServices.streamItems(_docId);
    res.listen((r) {
      _items = r;
      notifyListeners();
    });
  }
}

和我的ItemServices

class ItemServices {

  static Future<Stream<List<Item>>> streamItems(String docId) async {
    var ref = Firestore.instance.collection('shops').document(docId).collection('itemList');

    return ref.snapshots().map((list) => list.documents.map((doc) => Item.fromFirestore(doc)).toList());
  }
}

请给我同样的建议。 我的消防站收藏 My firestore collection

0 个答案:

没有答案