我试图询问用户,他是否确定在按下下拉菜单后更改数据。
目前,我在 onChanged
之后启动一个警告对话框。询问用户“您确定要更改数据吗?”。如果是,我保存数据更改。如果“否”,我将关闭警报对话框。
但是如果用户选择“否”,数据已经更改,我不想更改数据......我该如何停止更改?我有一个复杂的解决方案,我保存所有数据更改,当用户按下“否”时,我加载“否”之前的最后一个数据保存,但我发现这很复杂。还有其他更简单的解决方案吗?谢谢
这是我的代码:
new DropdownButton<String>(
onChanged: (String changedValue) {
dialog(); //lanche dialog with choice of data modification
data=changedValue;
setState(() {
data;
});
},
value: data,
items: <String>['data1', 'data2', 'data3','data4', 'data5']
.map((String changedValue) {
return new DropdownMenuItem<String>(
value: changedValue,
child: new Text(changedValue),
);
}).toList()),
最佳答案
您应该更新决策函数中的 setState 数据值。检查以下代码。
new DropdownButton<String>(
onChanged: (String changedValue) {
_showDialog(changedValue); // I changed this.
},
value: data,
items: <String>['data1', 'data2', 'data3', 'data4', 'data5']
.map((String changedValue) {
return new DropdownMenuItem<String>(
value: changedValue,
child: new Text(changedValue),
);
}).toList()),
void _showDialog(selection) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: new Text("Alert Dialog title"),
content: new Text("Alert Dialog body"),
actions: <Widget>[
new FlatButton(
child: new Text("No"),
onPressed: () {
Navigator.of(context).pop();
},
),
new FlatButton(
child: new Text("Yes"),
onPressed: () {
// this is where data value updates.
setState(() {
data = selection;
});
Navigator.of(context).pop();
},
),
],
);
},
);
}
关于dart - 如何防止 Flutter 下拉菜单发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055733/