我正在使用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'
我可以看到我的错误是它不是将字段转换为列表,而是将单个字符串转换为字符串,但是我不确定原因-我对此很陌生。任何帮助将不胜感激。