Flutter cloud_firestore:如何将Cloud Firestore文档中的地图或数组字段添加到DropdownButton中?

时间:2020-05-10 13:13:47

标签: flutter dart google-cloud-firestore dropdownbutton

我正在使用Flutter和Cloud Firestore。我有一个名为“ MySurveys”的收藏集,一个名为“ FirestoreTestSurvey”的文档,然后是地图和一系列政党(分别为a01和a_ge_vi)。

我正在尝试将此政党列表放入下拉菜单,以便用户可以选择要投票的政党,然后将其发送给Firestore。我在应用程序中预定义了List值时就已经对此进行了管理,但是我希望该选项可以通过Cloud Firestore添加/删除聚会。

我的代码是:

                        new StreamBuilder<QuerySnapshot>(
                            stream: Firestore.instance
                                .collection("MySurveys")
                                .snapshots(),
                            builder: (context, snapshot) {
                              var length = snapshot.data.documents.length;
                              DocumentSnapshot ds =
                                  snapshot.data.documents[length - 1];
                              return DropdownButton(
                                items: snapshot.data.documents
                                    .map((DocumentSnapshot document) {
                                  return DropdownMenuItem<String>(
                                      value: document.data['a01'].toString(),
                                      child: Text(
                                        document.data['a01'].toString(),
                                      ));
                                }).toList(),
                                onChanged: (selectedParty) {
                                  setState(() {
                                    submittedParty = selectedParty;
                                  });
                                },
                                value: submittedParty,
                                isExpanded: true,
                              );
                            }),

我有以下代码,但是当我使用地图或数组值时,它只在一个字符串中显示所有选项。然后,当我单击选项时,出现以下错误:

════════ (2) Exception caught by widgets library ═══════════════════════════════════════════════════
There should be exactly one item with [DropdownButton]'s value: [Conservatives, Labour, Liberal Democrats, SNP, Plaid Cymru, Brexit Party, Other, I would not vote]. 
Either zero or 2 or more [DropdownMenuItem]s were detected with the same value
'package:flutter/src/material/dropdown.dart':
Failed assertion: line 805 pos 15: 'items == null || items.isEmpty || value == null ||
              items.where((DropdownMenuItem<T> item) {
                return item.value == value;
              }).length == 1'

我可以看到我的错误是它不是将字段转换为列表,而是将单个字符串转换为字符串,但是我不确定原因-我对此很陌生。任何帮助将不胜感激。

0 个答案:

没有答案