firebase - 除非我热刷新,否则我的 cupertino Picker 不会显示儿童
问题描述
我有一个 flutter 上的 cupertino 选择器,它可以从 firestore 获取它的孩子。
return CupertinoPicker(
itemExtent: 50,
onSelectedItemChanged: (int index) {
setState(() {
_selectedUserId = user[index].userId;
_selectedUserName = user[index].name;
IosUserDropdownList.selectedUserId = user[index].userId;
IosUserDropdownList.selectedUserName = user[index].name;
});
print(_selectedUserId);
print(_selectedUserName);
},
children: user.map((user) {
return CupertinoButton(
onPressed: () {},
child: Text(
user.name,
style: TextStyle(color: CupertinoColors.activeBlue),
),
);
}).toList(),
);
这就是我从 Firestore 获取用户的方式:
Stream<List<UserData>> get users {
return userCollection.snapshots().map(_userListFromSnapshot);
}
并使用我的 UserData 模型将其转换为 List:
List<UserData> _userListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return UserData(
name: doc.data['name'] ?? '',
userId: doc.documentID ?? '');
}).toList();
}
问题是当我使用选择器导航到页面时,我在选择器上看不到任何数据。但是,当我进行热刷新时,数据会显示出来。
当我在下一页时,选择器还会显示数据并使用选择器将 Navigator.pop(context) 返回到屏幕。我已经为此工作了几个星期,但没有成功。请帮忙。
谢谢。
解决方案
推荐阅读
- python - 如何使用 for 循环 while 用列表填充字典的值?
- android - 全新安装 Android Studio + 模拟器,模拟器吃 CPU + 电池
- c++ - 为什么 arr[i++] vs arr[i]++ 这样做?
- sqlite - 布尔变量更新在 SQLite 中表现异常
- reactjs - 反应:将按钮值与输入文本连接起来
- ios - Swift UI 自动从初始屏幕导航到另一个屏幕,并带有延迟时间
- ios - 在没有 Xcode 的情况下制作 Cocoa App,例如:使用 VIM 进行编辑和 Swift 编译器
- image - 在 react-native 中,我如何在 ios 和 android 的图像上添加水印
- java - 在android上拆分逗号和一一显示值
- reactjs - 如何在 React Native 中在没有 setState 的情况下更改点击视图区域