【问题标题】:How to set fetch Firestore data into dropdown menu in flutter如何在颤动中将获取 Firestore 数据设置为下拉菜单
【发布时间】:2021-09-10 13:36:57
【问题描述】:

我需要将我的 Firestore 数据设置到下拉菜单中。 但是当我尝试这样做时,我得到了一个像这样的下拉菜单。

如何将我的抓取数据正确设置到下拉菜单中。

这是我的代码...?

class _DropDownState extends State<DropDown> {
  final Stream<QuerySnapshot> _cupCakeStream = FirebaseFirestore.instance
      .collection('cupcake')
      .snapshots(includeMetadataChanges: true);

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _cupCakeStream,
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
          return Text('Something went wrong');
        }

        if (snapshot.connectionState == ConnectionState.waiting) {
          return Text("Loading");
        }
        return Container(
          child: ListView(
            shrinkWrap: true,
            children: snapshot.data!.docs.map((DocumentSnapshot document) {
              Map<String, dynamic> data =
                  document.data()! as Map<String, dynamic>;
              return DropdownSearch<String>(
                  mode: Mode.MENU,
                  showSelectedItems: true,
                  items: [data["cupcake_name"]],
                  label: "Select  Category",
                  popupItemDisabled: (String s) => s.startsWith('I'),
                  onChanged: print,
              );
            }).toList(),
          ),
        );
      },
    );
  }
}

编辑后 -

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您正在为每个文档创建一个DropdownSearch 小部件。相反,您应该创建一个 DropdownSearch 小部件,所有文档都在 items 属性中。

    return Container(
      child: DropdownSearch<String>(
          mode: Mode.MENU,
          showSelectedItems: true,
          items: snapshot.data!.docs.map((DocumentSnapshot document) {
              Map<String, dynamic> data = document.data()! as Map<String, dynamic>;
              return data["cupcake_name"];
          }).toList().cast<String>(),
          label: "Select  Category",
          popupItemDisabled: (String s) => s.startsWith('I'),
          onChanged: print,
      ),
    );
    

    【讨论】:

    • 无法将参数类型“Iterable”分配给参数类型“List?”。当我尝试您的代码时,我遇到了这样的错误
    • 我更新了代码来解决这个问题,但是向前总是首先搜索您收到的错误消息,因为这个错误消息非常普遍。 :-/
    • 很抱歉给您带来不便。但仍然是错误。我尝试了一切..但没有工作。 -"参数类型'Item'不能赋值给参数类型'List'"
    • “参数类型'Item'”中的Item是指什么?
    • 类型:QuerySnapshot?我仍然无法加载我的下拉菜单
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2023-03-13
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多