Flutter 对话框未关闭颤振

Flutter 对话框未关闭颤振,flutter,alert,forceclose,Flutter,Alert,Forceclose,下面是我的警报对话框代码:我添加了Navigator.pop(上下文);在方法调用中。但它并没有结束 showLoginDialog(BuildContext context, {TextEditingController usernameController, TextEditingController loginController}) { var textController = new TextEditingController(); var nameTextControlle

下面是我的警报对话框代码:我添加了Navigator.pop(上下文);在方法调用中。但它并没有结束

 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();
showLoginDialog(构建上下文、,
{TextEditingController用户名控制器,
TextEditingController登录控制器}){
var textController=新的TextEditingController();
var nameTextController=new textededitingcontroller();
字符串dateToPost;
警觉的(
上下文:上下文,
标题:“添加配置文件”,
内容:专栏(
儿童:[
文本字段(
控制器:nameTextController,
装饰:输入装饰(
labelText:'名称',
),
),
文本字段(
控制器:textController,
onTap:()异步{
日期时间日期=日期时间(1900);
//FocusScope.of(context).requestFocus(newfocusnode());
日期=等待showDatePicker(
上下文:上下文,
initialDate:DateTime.now(),
firstDate:DateTime(1900),
lastDate:DateTime.now());
var formatter=new DateFormat('dd-MMM-yyyy');
var formatterToPost=新的日期格式('yyyy-MM-dd');
字符串格式=格式化程序。格式(日期);
dateToPost=formatterToPost.format(日期);
打印(格式化);
textController.text=已格式化;
},
装饰:输入装饰(
labelText:“出生日期”,
),
),
],
),
按钮:[
对话框按钮(
已按下:(){
Navigator.pop(上下文);
_保存数据(textController.text、nameTextController.text、,
dateToPost);
},
子:文本(
“添加”,
样式:TextStyle(颜色:Colors.white,字体大小:20),
),
)
]).show();
}

另外,在第二次单击时显示错误:方法“call”是在null上调用的。 收件人:空
已尝试调用:call()

在关闭应用程序之前,应保存数据

而不是
Navigator.pop(context)
do
Navigator.of(context.pop)(true)


我已经用计算机解决了这个问题

Navigator.of(context, rootNavigator: true).pop();

试试这个
Navigator.of(context.pop()它给出错误消息:未处理的异常:NoSuchMethodError:对null调用了getter'focusScopeNode'。收信人:那很有效,谢谢
Navigator.of(context, rootNavigator: true).pop();