如何防止Flutter下拉菜单中的更改?

时间:2019-01-05 19:57:38

标签: dart flutter dropdown

我试图问用户,是否一定要在按下下拉菜单后更改数据。

当前,我在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()),

1 个答案:

答案 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();
            },
          ),
        ],
      );
    },
  );
}