【问题标题】:How to prevent changes in a dropdown in Flutter?如何防止 Flutter 中的下拉列表发生变化?
【发布时间】:2019-01-05 19:57:38
【问题描述】:

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

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

【问题讨论】:

    标签: dart flutter dropdown


    【解决方案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();
                },
              ),
            ],
          );
        },
      );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多