har*_*B10 0 dart drop-down-menu flutter
我有一个包含多个选项的下拉菜单。为了简单起见,让我们说它们是:“A”、“B”和“C”。
这是我的代码片段:
children: <Widget>[
FormBuilder(
key: _fbKey,
autovalidate: true,
child: Column(
children: <Widget>[
FormBuilderDropdown(
attribute: "value",
decoration: InputDecoration(
labelText: "Choose something?"),
hint: Text('Select Option'),
validators: [FormBuilderValidators.required()],
items: user.option.map((v) {
return DropdownMenuItem(
value: v,
child: ListTile(
leading: Image.asset(
'assets/img/image.png',
width: 50,
height: 50,
),
title: Text("${v.option}"),
));
}).toList(),
),
],
),
// if v.option == "A" is selected here build Widget A()
// if v.option == "B" is selected here build Widget B()
// if v.option == "C" is selected here build Widget C()
),
Run Code Online (Sandbox Code Playgroud)
所以,基于下拉选择我想呈现适当的小部件。如果在下拉菜单中选择了 A,如果在下拉菜单中选择了 B,如果选择了 B,或者如果选择了 C,我该如何构建小部件 A?
不过,这必须动态改变,任何帮助都是好的。
小智 6
我认为最简单的方法是创建一个函数来呈现您的小部件,让我们调用它_renderWidget(),在该函数内部,您可以有如下内容:
_renderWidget() {
if(condition == A) {
return Text('Widget A'); // this could be any Widget
} else if(condition == B) {
return Text('Widget B');
} else {
return Text('Widget C');
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的DropdownButton onChanged函数中,您可以根据下拉值更改条件:
onChanged(String value) {
if(value == 'something') {
setState(() {
condition = A; // A, B or C
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以_renderWidget()在要显示它们的小部件内调用您的函数,例如,假设是一个Container小部件。
Container(
child: _renderWidget()
)
Run Code Online (Sandbox Code Playgroud)
当然,所有这些都需要在一个StatefulWidget.
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |