Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在下拉列表中获取所选选项的状态并在Firebase中显示_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

如何在下拉列表中获取所选选项的状态并在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;
                  }),