Flutter 如何基于从颤振中的第一个下拉按钮选择加载第二个下拉按钮?

Flutter 如何基于从颤振中的第一个下拉按钮选择加载第二个下拉按钮?,flutter,dropdown,Flutter,Dropdown,我有两个下拉列表。现在,我想显示secocnd下拉只有当第一个被选中,否则它应该是隐藏。我如何在这段代码中做到这一点,请任何人帮助我 如何根据下拉选择隐藏/显示小部件 'How can I hide second dropdown until first is choosen?' @override Widget build(BuildContext context) { loadDatalistDropexpensety

我有两个下拉列表。现在,我想显示secocnd下拉只有当第一个被选中,否则它应该是隐藏。我如何在这段代码中做到这一点,请任何人帮助我

如何根据下拉选择隐藏/显示小部件

'How can I hide second dropdown until first is choosen?'   

    
       
      @override
      Widget build(BuildContext context) {
        loadDatalistDropexpensetype();
        loadDatalistDropexpensetype1();
        return new Scaffold(
           appBar: AppBar(   'appbar'
            title: Text("DropDown Testing 2"),
          ),
          body: new Column(
            children: <Widget>[
              new DropdownButton(
                items: listDropexpensetype, 'item which are mentioned in function'
                  value: select,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      select=value;
                    });
                  }
              ),
              Visibility(
                visible: tcVisibility,
                child: new DropdownButton(   'this should onlt show on selection of first'
                  items: listDropexpensetype1,
                  value: selectedexpensetype,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      selectedexpensetype=value;
                    });
                  }
                ),
              ),
            ],
          ),
          
        );
      }
    }
“在选择第一个下拉列表之前,如何隐藏第二个下拉列表?”
@凌驾
小部件构建(构建上下文){
loadDatalistDropexpensetype();
loadDatalistDropexpensetype1();
归还新脚手架(
appBar:appBar('appBar'
标题:文本(“下拉测试2”),
),
正文:新栏目(
儿童:[
新下拉按钮(
items:listDropexpensetype,“函数中提到的项目”
值:选择,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
选择=值;
});
}
),
可见度(
可视性:TCV可视性,
子项:新建下拉按钮('此项仅在选择第一项时显示'
项目:listDropexpensetype1,
值:selectedexpensetype,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
selectedexpensetype=值;
});
}
),
),
],
),
);
}
}

您可以在构建函数之外存储临时变量。比如说,

String firstDropDownData=“”

在第一个下拉列表的onChange()函数中,只需更新“firstDropDownData”的值并在其中存储相关内容。一旦您在“firstDropDownData”中有了内容,您的第二个下拉列表将在UI中自动呈现

考虑将第二个下拉列表换行如下

        firstDropDownData != "" ? DropdownButton(
              items: listDropexpensetype1,
              value: selectedexpensetype,
              hint: Text("select option"),
              onChanged: (value){
                print(value.toString());
                setState(() {
                  selectedexpensetype=value;
                });
              }
            ) : Container()
更新:

根据您的要求,以下是完整的演示代码:

String firstDropDownData = "";


@override
      Widget build(BuildContext context) {
        loadDatalistDropexpensetype();
        loadDatalistDropexpensetype1();
        return Scaffold(
           appBar: AppBar(   'appbar'
            title: Text("DropDown Testing 2"),
          ),
          body: Column(
            children: <Widget>[
              DropdownButton(
                items: listDropexpensetype, 
                  value: select,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      firstDropDownData = value;
                    });
                  }
              ),
              firstDropDownData != "" ? DropdownButton(  
                  items: listDropexpensetype1,
                  value: selectedexpensetype,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      selectedexpensetype=value;
                    });
                  }
                ) : Container(),
            ],
          ),
          
        );
      }
    }
String firstDropDownData=“”;
@凌驾
小部件构建(构建上下文){
loadDatalistDropexpensetype();
loadDatalistDropexpensetype1();
返回脚手架(
appBar:appBar('appBar'
标题:文本(“下拉测试2”),
),
正文:专栏(
儿童:[
下拉按钮(
项目:listDropexpensetype,
值:选择,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
firstDropDownData=值;
});
}
),
firstDropDownData!=“下拉按钮(
项目:listDropexpensetype1,
值:selectedexpensetype,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
selectedexpensetype=值;
});
}
):Container(),
],
),
);
}
}

您可以在构建函数之外存储临时变量。比如说,

String firstDropDownData=“”

在第一个下拉列表的onChange()函数中,只需更新“firstDropDownData”的值并在其中存储相关内容。一旦您在“firstDropDownData”中有了内容,您的第二个下拉列表将在UI中自动呈现

考虑将第二个下拉列表换行如下

        firstDropDownData != "" ? DropdownButton(
              items: listDropexpensetype1,
              value: selectedexpensetype,
              hint: Text("select option"),
              onChanged: (value){
                print(value.toString());
                setState(() {
                  selectedexpensetype=value;
                });
              }
            ) : Container()
更新:

根据您的要求,以下是完整的演示代码:

String firstDropDownData = "";


@override
      Widget build(BuildContext context) {
        loadDatalistDropexpensetype();
        loadDatalistDropexpensetype1();
        return Scaffold(
           appBar: AppBar(   'appbar'
            title: Text("DropDown Testing 2"),
          ),
          body: Column(
            children: <Widget>[
              DropdownButton(
                items: listDropexpensetype, 
                  value: select,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      firstDropDownData = value;
                    });
                  }
              ),
              firstDropDownData != "" ? DropdownButton(  
                  items: listDropexpensetype1,
                  value: selectedexpensetype,
                  hint: Text("select option"),
                  onChanged: (value){
                    print(value.toString());
                    setState(() {
                      selectedexpensetype=value;
                    });
                  }
                ) : Container(),
            ],
          ),
          
        );
      }
    }
String firstDropDownData=“”;
@凌驾
小部件构建(构建上下文){
loadDatalistDropexpensetype();
loadDatalistDropexpensetype1();
返回脚手架(
appBar:appBar('appBar'
标题:文本(“下拉测试2”),
),
正文:专栏(
儿童:[
下拉按钮(
项目:listDropexpensetype,
值:选择,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
firstDropDownData=值;
});
}
),
firstDropDownData!=“下拉按钮(
项目:listDropexpensetype1,
值:selectedexpensetype,
提示:文本(“选择选项”),
一旦更改:(值){
打印(value.toString());
设置状态(){
selectedexpensetype=值;
});
}
):Container(),
],
),
);
}
}

所以我必须删除此的可见性小部件?是否?您是否也可以为我提供第一个下拉列表的代码段?执行此操作后出现此错误:检测到零个或2个或多个[DropdownMenuItem]具有相同的属性value@jsshah09如果这对你来说很好,请考虑接受这个答案。我又张贴了一个问题。请你能帮我在itSo我必须删除这个可见性小部件吗?是否?您是否也可以为我提供第一个下拉列表的代码段?执行此操作后出现此错误:检测到零个或2个或多个[DropdownMenuItem]具有相同的属性value@jsshah09如果你觉得这很好,请考虑接受这个答案。我已经发布了一个。