Почему вы создали переменную в глобальной области видимости? Если вы хотите изменить свою переменную с именем 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,
),
],
),
));
}
}
Вы можете переопределить значение wd в initState()
, как только вы определились в состоянии.
class _AppState extends State<App> {
int wd;
@override
void initState() {
super.initState();
wd = 2;
}
Имейте в виду, что ваше «значение» для DropdownButton должно быть установлено на «ноль» или быть одним из списка значений. Поэтому, если вы установите значение 5, а не 1, 2 или ноль, которые являются значениями в моих DropdownMenuItem
, вы получите эту ошибку:
I / трепетание (15227): ══╡ ИСКЛЮЧЕНИЕ, ЗАПРЕЩЕННОЕ БИБЛИОТЕКОЙ ВИДЖЕТОВ ════════════════════════════
I / flutter (15227): было сгенерировано следующее утверждение при сборке App (грязный, состояние: _AppState # 30354):
I / flutter (15227): 'package: flutter / src / material / dropdown.dart': ошибочное утверждение: строка 560, позиция 15: 'items == null ||
I / флаттер (15227): items.isEmpty || значение == ноль || items.where ((DropdownMenuItem item) => item.value ==
I / флаттер (15227): значение) .length == 1 ': не соответствует действительности.