美文网首页Flutter圈子Flutter中文社区
模态框中执行switch以及其他更新状态不更新的问题

模态框中执行switch以及其他更新状态不更新的问题

作者: 住进混沌深海里 | 来源:发表于2019-08-15 14:58 被阅读0次

因为模态框等于是重新打开了另一个路由,所以你在AlertDialog这个widget中间更新状态不会实时更改状态

普通模态框

showDialog(
        // barrierDismissible: false, //点击外层不会关闭窗口
        context: context,
        builder: (context) => AlertDialog(
              title: Text('Caution'),
              content: Text('11111111'),
              actions: <Widget>[
                new FlatButton(
                  child: new Text("Yes"),
                  onPressed: () {},
                ),
              ],
            ));

如果只是单纯的一些提示或者确认操作,这样就可以满足了,但是有时候需要在模态框上实时更新状态,比如switch或者输入框密码回显之类的,就需要这样在AlertDialog外层包一层StatefulBuilder 写法

showDialog(
      context: context,
      barrierDismissible: false,
      builder: (context) {
        return StatefulBuilder(
          builder: (context, state) {//state重新定义一个setState
            return AlertDialog(
              content: SingleChildScrollView(
                scrollDirection: Axis.vertical,
                child: Container(
                    height: val['encrypt'] == "wpa2" ? 320 : 250,
                    child: Flex(
                      direction: Axis.vertical,
                      children: <Widget>[
                        Container(
                          padding: EdgeInsets.symmetric(vertical: 10),
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: <Widget>[
                              Text('Remember'),
                              Container(
                                  child: Switch(
                                value: savedWifi,
                                onChanged: (bool value) {
                                  state(() { //////////setState改成state或者其他你上面定义的
                                    savedWifi = !savedWifi;
                                  });
                                },
                              ))
                            ],
                          ),
                        ),
                      ],
                    )),
              ),
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(15.0)),
              actions: <Widget>[
                FlatButton(
                  child: new Text("Cancel"),
                  onPressed: () {
                    state(() {
                      password.clear();
                      username.clear();
                      _isObscure = false;
                    });
                    Navigator.of(context).pop();
                  },
                ),
                FlatButton(
                  child: new Text("Apply"),
                  onPressed: () {
                    Navigator.of(context).pop();
                    _joinWifi(val, 'join');
                    password.clear();
                    username.clear();
                  },
                ),
              ],
            );
          },
        );
      },
    );

相关文章

  • 模态框中执行switch以及其他更新状态不更新的问题

    因为模态框等于是重新打开了另一个路由,所以你在AlertDialog这个widget中间更新状态不会实时更改状态 ...

  • 记录一下关于coc的一些操作

    在vim中执行PlugUpdate:更新coc.nvim以及其他所有插件; 在vim中执行CocUpdate:更新...

  • 进阶任务10-事件应用

    实现Tab切换的功能 实现下图的模态框功能,点击模态框不隐藏,点击关闭以及模态框以外的区域模态框隐藏

  • 6、bootstrap模态框(二),传值给模态框

    模态框(一)有个问题,模态框及时不弹出,也会遮挡其他div,导致其他div虽然能看见,但是无法点击,而且点击按钮触...

  • 2017-12-27模态框更新后父组件更新--回调函数

    1 模态框更新后父组件更新--回调函数update parent component after update m...

  • 事件的应用

    1. 实现如下图Tab切换的功能 2. 实现下图的模态框功能,点击模态框不隐藏,点击关闭以及模态框以外的区域模态框隐藏

  • 进阶任务10

    1.实现如下图Tab切换的功能 2.实现下图的模态框功能,点击模态框不隐藏,点击关闭以及模态框以外的区域模态框隐藏

  • 事件的应用

    1.实现如下图Tab切换的功能: 2.实现下图的模态框功能,点击模态框不隐藏,点击关闭以及模态框以外的区域模态框隐藏

  • SSM框架的(CRUD)_修改_创建员工修改模态框22

    修改逻辑 1、点击编辑 2、弹出用户修改的模态框(显示用户信息) 3、点击更新,完成用户修改 一、新增修改模态框 ...

  • 事件的应用

    题目1: 实现如下图Tab切换的功能 地址 题目2:实现下图的模态框功能,点击模态框不隐藏,点击关闭以及模态框以外...

网友评论

    本文标题:模态框中执行switch以及其他更新状态不更新的问题

    本文链接:https://www.haomeiwen.com/subject/uwjzjctx.html