dart - 如何防止 Flutter 下拉菜单发生变化?

标签 dart flutter dropdown

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

目前,我在 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/

相关文章:

xcode - Flutter 发布版本立即崩溃,没有记录任何错误(iOS)

ios - Flutter 将 com.apple.security.network.client 添加到 *.entitlements

dart - Dart Dev Compiler是否应该支持dart:io?

flutter - 显示文字取决于在flutter中的下拉菜单选择

Azure AD 需要管理员批准

javascript - 如何让 Materialize select 下拉菜单与 React 一起使用?

android-studio - 无法使用TextFormField和FlatButton验证输入

dart - 更改 Scaffold.body 值后如何在 flutter 中隐藏抽屉

html - 尝试使用绝对位置使 div 出现在悬停时。需要帮助居中

Swift 以编程方式调整 ViewController 中的 UITableView 大小或最小化