首页 > 解决方案 > 除非我热刷新,否则我的 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) 返回到屏幕。我已经为此工作了几个星期,但没有成功。请帮忙。

谢谢。

标签: firebaseflutterflutter-cupertinocupertinopicker

解决方案


推荐阅读