我在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