从下拉列表中进行另一个选择后,DropdownButton不会更改下拉列表的值。下面是我的代码。
Flexible(
child: Padding(
padding: EdgeInsets.fromLTRB(0.0, 0.0, 10.0, 0.0),
child: DropdownButton(
hint: Text('Select'),
items: list_dropdown,
onChanged: (val) {
setState(() {
wd = val;
});
},
value: wd,
)),
)
在initState中,我设置值变量
@override
void initState() {
// TODO: implement initState
super.initState();
wd = 0;
}
在全局范围内创建variale时
int wd;
我要去哪里错了?
答案 0 :(得分:0)
为什么要在全局范围内创建变量?如果要使用wd
来更改名为setState()
的变量,则必须将其放入状态类。
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
// Here wd in my state class
int wd = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Cat Attack"),
),
body: Center(
child: DropdownButton(
value: wd,
onChanged: (val) {
setState(() {
wd = val;
});
},
items: [
DropdownMenuItem(
child: Text('1'),
value: 1,
),
DropdownMenuItem(
child: Text('2'),
value: 2,
),
],
),
));
}
}
定义状态后,您可以在initState()
中覆盖wd的值。
class _AppState extends State<App> {
int wd;
@override
void initState() {
super.initState();
wd = 2;
}
请记住,您的DropdownButton的“值”应设置为“空”或为值列表中的一个。因此,如果将其设置为5,而不是1、2或null(我的DropdownMenuItem
中的值),则会出现此错误:
I / flutter(15227):══╡小组件库的异常提示UG ════════════════════════════ I / flutter(15227):构建App(dirty,state:_AppState#30354)时引发了以下断言: I / flutter(15227):'package:flutter / src / material / dropdown.dart':失败的断言:560行pos 15:'item == null || I / flutter(15227):item.isEmpty ||值== null || items.where(((DropdownMenuItem item)=> item.value == I / flutter(15227):值)。长度== 1':不正确。