在showDialog上打开键盘时重新创建页面

时间:2019-06-08 02:10:17

标签: flutter

我的flutter项目有问题,我创建了一个按钮来显示带有表单和文本字段的对话框,当对话框打开时,我点击texfield,重新创建页面,这是我的代码

void _showDialog(){
    showDialog(
      context: context,
      builder: (BuildContext context) {

        return CupertinoAlertDialog(
          title: Text('Add New'),
          content: Card(
            color: Colors.transparent,
            elevation: 0.0,
            child: Column(
            children: <Widget>[
              TextField(
                decoration: InputDecoration(
                labelText: "Item",
                filled: true,
                fillColor: Colors.grey.shade50),
              ),
            ],
          ),
        ),
      );

      },
    );
  }

我该如何解决?非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

嗯,从您的代码来看,没有什么看起来很奇怪...也许您应该共享整个类,或者从树的另一部分共享您的业务逻辑(例如,重新构建视图的流)... 我在模拟器中做了一个基本测试,并且工作正常。

但是现在我发现您正在使用StatefulWidget,因为您可以访问上下文,所以还有许多其他代码正在执行setState()。

答案 1 :(得分:0)

通过按TextField来打开或关闭键盘会重建Scaffold或用于包裹屏幕的任何材料。这是正常现象。

通过“重新创建页面”,您是说它失去了状态吗? (它会丢失数据的值,例如,如果您使用热重启而不是热重启),那么,这不是标准行为,我们可能需要您的页面/代码上的更多信息才能解决此问题。