Flo*_*ran 3 dart firebase flutter google-cloud-firestore
我正在制作我的第一个 Flutter 应用程序,遇到了一个问题,但没有找到任何解决方案。
我有一个渲染 Firestore 文档的视图,有两种方法可以到达该视图:
因此,为了监听文档更改并在从链接到达时加载数据,我使用了 FirestoreBuilder,如下所示:
return FirestoreBuilder<EventDocumentSnapshot>(
ref: eventsRef.doc(args.uid),
builder: (context, AsyncSnapshot<EventDocumentSnapshot> snapshot, Widget? child) {
if (!snapshot.hasData) {
return Container();
}
Event? event = snapshot.requireData.data;
return Scafold(); //Rest of my rendering code
}
);
Run Code Online (Sandbox Code Playgroud)
当我已经拥有数据但仍监听更改时,如何避免首次调用 Firebase?主要问题是我的英雄动画因此无法工作。
我尝试使用 aStreamBuilder和initialDataparam,但由于它期待流,所以我不知道如何转换我的数据。
好吧,经过多次尝试,我自己找到了解决方案,所以我添加了可以为 null 的 Model 对象作为initialData,但让我挣扎的是如何在构建器中获取数据。您必须根据数据的来源调用不同的方法。
return StreamBuilder(
initialData: args.event
ref: eventsRef.doc(args.uid),
builder: (context, AsyncSnapshot<dynamic> snapshot) {
// Here is the trick, when data is coming from initialData you only
// need to call requireData to get your Model
Event event = snapshot.requireData is EventDocumentSnapshot ? snapshot.requireData.data : snapshot.requireData;
return Scafold(); //Rest of my rendering code
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |