Есть ли способ установить значение DropdownButtonFormField программно? Я пытался манипулировать свойством value, но оно не показывает никакого эффекта.
Пример:
import 'package:flutter/material.dart';
class TestPage extends StatefulWidget {
TestPage({Key key}) : super(key: key);
@override
_TestPageState createState() => _TestPageState();
}
class _TestPageState extends State<TestPage> {
int _selectedId;
List<Item> _items = [];
@override
void initState() {
super.initState();
for (int i = 0; i < 5; i++) {
_items.add(Item(i, "choice " + i.toString()));
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Test"),
),
body: Column(
children: [
DropdownButtonFormField(
isExpanded: true,
items: _items.map((item) {
return new DropdownMenuItem(
value: item.id,
child: Text(item.text),
);
}).toList(),
onChanged: (value) {
setState(() => _selectedId = value);
},
value: _selectedId,
decoration: InputDecoration(
labelText: "select me",
),
),
RaisedButton(
child: Text('set selected'),
onPressed: () {
setState(() {
_selectedId = 3;
});
},
),
RaisedButton(
child: Text('get selected'),
onPressed: () {
print(_selectedId.toString());
},
)
],
),
);
}
}
class Item {
int id;
String text;
Item(this.id, this.text);
}
При установке _selectedId на 3 с помощью кнопки ничего не происходит, выпадающий список не обновляется. Если я установлю _selectedId на 3 при инициализации переменной, третий вариант будет выбран при загрузке страницы. Однако мне это нужно программно.