我想提供给StreamProvider.value我的Firestore中的嵌套集合的快照。
我在Firestore中具有以下结构:
我想获取指定订单的产品流,因为我只想通知该订单我的应用更改。
这是我当前的代码(我每天有一个订单,我希望获得当天订单的产品流):
class DatabaseService {
final CollectionReference _collOrders =
Firestore.instance.collection("orders");
Future<DocumentSnapshot> _getTodayOrder(DateTime date) async {
QuerySnapshot lastOrder = await _collOrders.getDocuments();
for (DocumentSnapshot orderData in lastOrder.documents) {
var dateOrder = DateTime.parse(orderData.data["Date"]);
int diffDays = date.difference(dateOrder).inDays;
if (diffDays == 0)
{
return orderData ;
}
}
}
Stream<QuerySnapshot> getStreamOrdersByDay(DateTime date) {
_getTodayOrder(date).then((value) {
return value.reference.collection("Products").snapshots();
});
}
}
在我的主页中:
...
@override
Widget build(BuildContext context) {
return StreamProvider<QuerySnapshot>.value(
value: DatabaseService().getStreamOrdersByDay(DateTime.now()),
child: Scaffold(
appBar: AppBar(title: Text("APiZZa")),
body: Container(...)
...
但是当我打电话时:
final orders = Provider.of<QuerySnapshot>(context);
在子窗口小部件中,“ orders”为空。我认为Flutter无需等待_getTodayOrder完成即可构建主页。您建议做什么?