firebase - 除非我热刷新,否则数据流不会在 iOS 上显示
问题描述
我正在创建一个以 firebase 作为后端的颤振应用程序。我有一个数据流,它从 Firestore 集合中提取数据,并在将其转换为列表后将其呈现在 Cupertino Picker 中。问题是当我启动应用程序并使用选择器导航到页面时,列表是空的,除非我热刷新。当我弹出上下文并使用选择器登陆页面时,数据也会显示,否则它是空的。
我的流是这样的:
Stream<List<DataModel>> get myData {
return myDataCollection.snapshots().map(_myDataListFromSnapshot);
}
并将其映射到我的模型并将其转换为如下列表:
List<DataModel> _myDataListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return DataModel(
name: doc.data['name'] ?? '',
country: doc.data['country'] ?? '');
}).toList();
}
这是我的选择器:
return CupertinoPicker(
useMagnifier: true,
magnification: 1.1,
squeeze: 2,
backgroundColor: CupertinoColors.white,
itemExtent: 50,
onSelectedItemChanged: (int index) {},
children: myData.map((myData) {
return Text(
myData.name + ' ' + myData.country,
);
}).toList(),
);
有什么我做的不对。我会很感激我能得到的任何帮助。谢谢
解决方案
您需要使用async
和await
。问题是这样的。您的方法将如下所示:
Future<List<DataModel>> get myData async {
return await myDataCollection.snapshots().map(_myDataListFromSnapshot);
}
您可以从这里阅读更多内容。
推荐阅读
- java - 如何使 Kotlin 库像 Java 库一样?
- python - 如何使用卡尔曼滤波器模型检测峰值
- android - 滚动时recyclerview中的两个复选框更改状态
- angularjs - 为什么使用 AngularJS 在 HTML 页面中显示 JSON 答案的 {{variable_name}} 不起作用?
- html - css中的过渡/动画后元素不需要的小移动
- docker - 在 docker 中构建 rust 项目会导致 Cargo 无法下载依赖项
- javascript - 如何从 href 属性获取宽度和高度
- php - PDO 没有将 MS Access DB 的输出发送到 php
- mongodb - MongoDB多组聚合
- php - AuthnetWebhook 包签名密钥验证