我的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),
),
],
),
),
);
},
);
}
我该如何解决?非常感谢您的帮助
答案 0 :(得分:0)
嗯,从您的代码来看,没有什么看起来很奇怪...也许您应该共享整个类,或者从树的另一部分共享您的业务逻辑(例如,重新构建视图的流)... 我在模拟器中做了一个基本测试,并且工作正常。
但是现在我发现您正在使用StatefulWidget,因为您可以访问上下文,所以还有许多其他代码正在执行setState()。
答案 1 :(得分:0)
通过按TextField
来打开或关闭键盘会重建Scaffold
或用于包裹屏幕的任何材料。这是正常现象。
通过“重新创建页面”,您是说它失去了状态吗? (它会丢失数据的值,例如,如果您使用热重启而不是热重启),那么,这不是标准行为,我们可能需要您的页面/代码上的更多信息才能解决此问题。