Flutter&AlertDialog:加载后我的应用程序不显示警报对话框

问题描述

Flutter和AlertDialog:加载后,我的应用程序不显示警报对话框。 即使在打印警报对话框之前和之后打印了2张,该对话框也被跳过。这是为什么?请帮助我。

{
    'first_name': 'Toni','last_name': 'Stokes','assignments': [('assignment1',97),('assignment2',85),('assignment3',94),('assignment4',100)]
}

请查看我的代码,并告诉我出什么问题了。谢谢。我期待着您的回音。

解决方法

问题出在这里:

if (result) {
                                    print('Before dialog');
                                    showDialog(
                                      context: context,builder: (BuildContext context) {
                                        return AlertDialog(
                                          shape: RoundedRectangleBorder(
                                              borderRadius: BorderRadius.all(
                                                  Radius.circular(6.0))),content: Column(
                                            mainAxisSize: MainAxisSize.min,children: <Widget>[
                                              Container(
                                                padding: EdgeInsets.symmetric(
                                                    vertical: 60,horizontal: 10),child: Text(
                                                  //'Please rate with star','평가해 주셔서 감사합니다!',style: TextStyle(
                                                    fontSize: 20,fontWeight: FontWeight.bold,),InkWell(
                                                onTap: () {
                                                  Navigator.pop(context);
                                                },child: Container(
                                                  alignment: Alignment.center,height: 50,//color: primaryColor,child: Text(
                                                    AppLocalizations.of(context)
                                                        .translate('OKAY'),style: TextStyle(
                                                        color: Colors.white,fontWeight:
                                                            FontWeight.bold),],);
                                      },);
                                    print('After dialog');
                                    Navigator.pop(context);
                                  } else {
                                    print('Sth wrong');
                                  }

您要显示对话框,然后将其弹出。确保仅在单击警报对话框上的按钮之后,添加 Navigator.pop(context)方法。因此,像这样重写代码:

if (result) {
                                        print('Before dialog');
                                        showDialog(
                                          context: context,builder: (BuildContext context) {
                                            return AlertDialog(
                                              shape: RoundedRectangleBorder(
                                                  borderRadius: BorderRadius.all(
                                                      Radius.circular(6.0))),content: Column(
                                                mainAxisSize: MainAxisSize.min,children: <Widget>[
                                                  Container(
                                                    padding: EdgeInsets.symmetric(
                                                        vertical: 60,child: Text(
                                                      //'Please rate with star',style: TextStyle(
                                                        fontSize: 20,InkWell(
                                                    onTap: () {
                                                      Navigator.pop(context);
                                                    },child: Container(
                                                      alignment: Alignment.center,child: Text(
                                                        AppLocalizations.of(context)
                                                            .translate('OKAY'),style: TextStyle(
                                                            color: Colors.white,fontWeight:
                                                                FontWeight.bold),);
                                          },);
                                        print('After dialog');
                                      } else {
                                        print('Sth wrong');
                                      }
,

问题出在print('After dialog')行之后。您正在执行Navigator.pop(context);,这实际上是从导航堆栈中删除对话框。

扑朔迷离: showDialog()用于显示对话框。 Navigator.pop(context)用于删除对话框

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...