【发布时间】:2018-07-24 03:01:32
【问题描述】:
当我选择一个项目时,对话框中的初始值不会改变。这是下拉列表的代码:
void _buildStatusDialog(String documentID) {
String _selectedText = "SDD";
showDialog<void>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Status Update"),
content: new DropdownButton<String>(
hint: Text("Status"),
value: _selectedText,
items: <String>['SDD', 'Meeting', 'Home', 'Space']
.map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
onChanged: (String val) {
_selectedText = val;
setState(() {
_selectedText = val;
});
},
),
actions: <Widget>[
FlatButton(
child: Text("UPDATE"),
onPressed: () {
.....
},
),
],
);
});
}
如何更新“提示”或显示所选项目?
【问题讨论】:
-
您的
setState调用正在更新构建对话框的小部件,而不是对话框。请注意,showDialog不会再次被调用。你需要用你自己的 StatefulWidget 替换你的对话框 -
是否可以在不创建另一个 StatefulWidget 的情况下实现这一点?
-
不,你需要创建一个新的元素, setState 可以标记脏。否则除了关闭/打开对话框之外,没有办法更新小部件
-
好的。谢谢乔纳!