如何在下拉列表中获取所选选项的状态并在Firebase中显示
我有一个用户输入和两个选择选项下拉列表。我从状态中检索了如何在下拉列表中获取所选选项的状态并在Firebase中显示,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有一个用户输入和两个选择选项下拉列表。我从状态中检索了displayName(用户输入值)并将其显示在Firestore db中,但是,我无法从状态中获取所选选项(selectedItemA和selectedItemB),并将其显示在db中 如何获得数据库中显示的这些值(selectedItemA和selectedItemB) 陈述 使用ChangeNotifier对UserInfoState进行分类{ 字符串_displayName; 动态选择编辑; 动态_selectedItemB; ge
displayName
(用户输入值)并将其显示在Firestore db中,但是,我无法从状态中获取所选选项(selectedItemA
和selectedItemB
),并将其显示在db中
如何获得数据库中显示的这些值(selectedItemA
和selectedItemB
)
陈述
使用ChangeNotifier对UserInfoState进行分类{
字符串_displayName;
动态选择编辑;
动态_selectedItemB;
get displayName=>\u displayName;
获取selectedItemA=>\u selectedItemA;
获取selectedItemB=>\u selectedItemB;
设置显示名称(字符串值){
_显示名称=值;
notifyListeners();
}
设置selectedItemA(动态值){
_选择editema=值;
notifyListeners();
}
设置selectedItemB(动态值){
_选择editemb=值;
notifyListeners();
}
}
未来更新UserReportWithUserInfo(UserInfoState状态){
返回Global.reportRef.upsert(
({
“displayName”:state.displayName,
'selectedItemA':state.selectedItemA,
“selectedItemB”:state.selectedItemB
}),
);
}
轮廓屏
@override
void initState() {
super.initState();
myFocusNode = FocusNode();
_dropdownMenuItemsA = buildDropDownMenuItemsA(_dropdownItemsA);
selectedItemA = _dropdownMenuItemsA[0].value;
_dropdownMenuItemsB = buildDropDownMenuItemsB(_dropdownItemsB);
selectedItemB = _dropdownMenuItemsB[0].value;
}
...
List<DropdownMenuItem<ContinentListItem>> _dropdownMenuItemsA;
ContinentListItem selectedItemA;
List<DropdownMenuItem<ContinentListItem>> buildDropDownMenuItemsA(
List listItems) {
List<DropdownMenuItem<ContinentListItem>> items = List();
for (ContinentListItem listItem in listItems) {
items.add(
DropdownMenuItem(
child: Text(listItem.name),
value: listItem,
),
);
}
return items;
...
floatingActionButton: FloatingActionButton(
backgroundColor: deepOrange,
onPressed: () {
myFocusNode.requestFocus();
updateUserReportWithUserInfo(state);
changeScreen(context, BottomNavBarController());
...
TextField(
focusNode: myFocusNode,
onChanged: (value) => state.displayName = value,
),
DropdownButtonHideUnderline(
child: DropdownButton(
value: selectedItemA,
items: _dropdownMenuItemsA,
onChanged: (value) {
setState(() {
selectedItemA = value;
print(selectedItemA.name);
});
}),
),
...
DropdownButtonHideUnderline(
child: DropdownButton(
value: selectedItemB,
items: _dropdownMenuItemsB,
onChanged: (value) {
setState(() {
selectedItemB = value;
print(selectedItemB.name);
});
class ContinentListItem {
int value;
String name;
ContinentListItem({this.value, this.name});
}
@覆盖
void initState(){
super.initState();
myFocusNode=FocusNode();
_dropdownMenuItemsA=构建dropdownMenuItemsA(\u dropdownItemsA);
selectedItemA=\u dropdownMenuItemsA[0]。值;
_dropdownMenuItemsB=构建dropdownMenuItemsB(\u dropdownItemsB);
selectedItemB=\u dropdownMenuItemsB[0]。值;
}
...
列表(下拉菜单菜单项);
大陆列表项目选择编辑;
列表buildDropDownMenuItemsA(
列表项目){
列表项=列表();
用于(listItems中的listItem listItem){
items.add(
下拉菜单项(
子项:文本(listItem.name),
值:listItem,
),
);
}
退货项目;
...
浮动操作按钮:浮动操作按钮(
背景颜色:深橙色,
已按下:(){
myFocusNode.requestFocus();
updateUserReportWithUserInfo(状态);
changeScreen(上下文,BottomNavBarController());
...
文本字段(
focusNode:myFocusNode,
onChanged:(value)=>state.displayName=value,
),
下拉按钮侧下划线(
孩子:下拉按钮(
值:selectedItemA,
项目:_dropdownMenuItemsA,
一旦更改:(值){
设置状态(){
选择editema=值;
打印(选择编辑域名);
});
}),
),
...
下拉按钮侧下划线(
孩子:下拉按钮(
值:selectedItemB,
项目:_dropdownMenuItemsB,
一旦更改:(值){
设置状态(){
选择editemb=值;
打印(选择编辑emb.name);
});
类列表项{
int值;
字符串名;
大陆列表项({this.value,this.name});
}
我通过添加state.selectedItemA=selectedItemA.name;
解决了这个问题,如下所示:
setState(() {
selectedItemA = value;
});
state.selectedItemA = selectedItemA.name;
}),
setState(() {
selectedItemA = value;
});
state.selectedItemA = selectedItemA.name;
}),