对话框没有关闭颤动
Dialog box is not closing flutter
这是我的警报对话框代码:我添加了 Navigator.pop(context);在点击的方法调用中。但它没有关闭。
showLoginDialog(BuildContext context,
{TextEditingController usernameController,
TextEditingController loginController}) {
var textController = new TextEditingController();
var nameTextController = new TextEditingController();
String dateToPost;
Alert(
context: context,
title: "Add Profile",
content: Column(
children: <Widget>[
TextField(
controller: nameTextController,
decoration: InputDecoration(
labelText: 'Name',
),
),
TextField(
controller: textController,
onTap: () async {
DateTime date = DateTime(1900);
//FocusScope.of(context).requestFocus(new FocusNode());
date = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime.now());
var formatter = new DateFormat('dd MMM yyyy');
var formatterToPost = new DateFormat('yyyy-MM-dd');
String formatted = formatter.format(date);
dateToPost = formatterToPost.format(date);
print(formatted);
textController.text = formatted;
},
decoration: InputDecoration(
labelText: 'Birth Date',
),
),
],
),
buttons: [
DialogButton(
onPressed: () {
Navigator.pop(context);
_saveData(textController.text, nameTextController.text,
dateToPost);
},
child: Text(
"Add",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
另外,第二次点击时显示错误:方法 'call' 被调用为 null。
接收者:空
尝试调用:call()
您应该在关闭应用程序之前保存数据。
而不是 Navigator.pop(context)
做 Navigator.of(context).pop(true)
onPressed: () {
_saveData(textController.text, nameTextController.text,
dateToPost);
Navigator.of(context).pop(true);
}
我已经使用
解决了这个问题
Navigator.of(context, rootNavigator: true).pop();
这是我的警报对话框代码:我添加了 Navigator.pop(context);在点击的方法调用中。但它没有关闭。
showLoginDialog(BuildContext context,
{TextEditingController usernameController,
TextEditingController loginController}) {
var textController = new TextEditingController();
var nameTextController = new TextEditingController();
String dateToPost;
Alert(
context: context,
title: "Add Profile",
content: Column(
children: <Widget>[
TextField(
controller: nameTextController,
decoration: InputDecoration(
labelText: 'Name',
),
),
TextField(
controller: textController,
onTap: () async {
DateTime date = DateTime(1900);
//FocusScope.of(context).requestFocus(new FocusNode());
date = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime.now());
var formatter = new DateFormat('dd MMM yyyy');
var formatterToPost = new DateFormat('yyyy-MM-dd');
String formatted = formatter.format(date);
dateToPost = formatterToPost.format(date);
print(formatted);
textController.text = formatted;
},
decoration: InputDecoration(
labelText: 'Birth Date',
),
),
],
),
buttons: [
DialogButton(
onPressed: () {
Navigator.pop(context);
_saveData(textController.text, nameTextController.text,
dateToPost);
},
child: Text(
"Add",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
另外,第二次点击时显示错误:方法 'call' 被调用为 null。 接收者:空 尝试调用:call()
您应该在关闭应用程序之前保存数据。
而不是 Navigator.pop(context)
做 Navigator.of(context).pop(true)
onPressed: () {
_saveData(textController.text, nameTextController.text,
dateToPost);
Navigator.of(context).pop(true);
}
我已经使用
解决了这个问题Navigator.of(context, rootNavigator: true).pop();