flutter - 查找已停用小部件的祖先是不安全的
问题描述
我是 Flutter 的新手,我正在尝试使用 Dialog 接收数据。当在 textField 中单击时,会出现 image2 的错误...
show(BuildContext context){
var dialog = Dialog(
child: Container(
margin: EdgeInsets.all(8.0),
child: Form(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextFormField(
decoration: InputDecoration(
labelText: "Insira o número de telefone",
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(2.0)))),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Cancelar")),
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Aceitar"))
],
)
],
),
),
),
);
showDialog(context: context,builder: (context){
return dialog;
});
}
这是我的代码。
I/flutter (31032): Looking up a deactivated widget's ancestor is unsafe.
I/flutter (31032): At this point the state of the widget's element tree is no longer stable. To safely refer to a
I/flutter (31032): widget's ancestor in its dispose() method, save a reference to the ancestor by calling
I/flutter (31032): inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
I/flutter (31032):
解决方案
声明一个全局变量
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
然后在您的小部件构建的脚手架上注册密钥,例如
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
...
然后在对话框中
show(BuildContext context){
var dialog = Dialog(
child: Container(
margin: EdgeInsets.all(8.0),
child: Form(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextFormField(
decoration: InputDecoration(
labelText: "Insira o número de telefone",
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(2.0)))),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Cancelar")),
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Aceitar"))
],
)
],
),
),
),
);
将该脚手架上下文传递给 showDialog 方法
showDialog(context: _scaffoldKey.currentContext ,builder: (context){
return dialog;
});
}
推荐阅读
- makefile - 仅当目标目录中不存在文件时才下载和移动文件,否则不执行任何操作
- regex - 打字稿无法解析正则表达式中的命名组
- python-3.x - TensorFlow 服务:获取输入形状和标签
- ssas - 我们可以在 where 条件下对度量应用过滤器吗?
- pandas - 将多个列表转换为一个 DataFrame
- python - Python3 在函数 django 中使用导入的模块
- java - 我的关键侦听器/关键事件部分中是否缺少某些东西阻止精灵在 Java 中移动
- sql - 如何创建一个变量/参数,它是 SQL SSMS 中的一串值,我可以在 where 子句中用作替代项?
- javascript - 如何重置茉莉花中的间谍?
- javascript - 使 Fiori 标头字段不可见