我试图问用户,是否一定要在按下下拉菜单后更改数据。
当前,我在onChanged
之后启动警报对话框。询问用户“您确定要更改数据吗?”。如果是,我保存数据更改。如果为“否”,则关闭警报对话框。
但是,如果用户选择“否”,则数据已更改,并且我不想更改数据...如何停止更改?我有一个复杂的解决方案,其中保存了所有数据更改,并且当用户按NO时,我加载了“ NO”之前的最后一个数据保存,但是我发现这很复杂。还有其他更简单的解决方案吗?谢谢
这是我的代码:
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()),
答案 0 :(得分:1)
您应该在决策函数中更新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();
},
),
],
);
},
);
}