Flutter 按下按钮时未显示警报对话框

Flutter 按下按钮时未显示警报对话框,flutter,dart,Flutter,Dart,用于警报对话框的类 class AlertWindow extends StatelessWidget { final String title; const AlertWindow({Key key, this.title}) : super(key: key); @override Widget build(BuildContext context) { return Builder( builder:(BuildContext context

用于警报对话框的类

class AlertWindow extends StatelessWidget {
  final String title;

  const AlertWindow({Key key, this.title}) : super(key: key);


  @override
  Widget build(BuildContext context) {

    return Builder(
        builder:(BuildContext context) {
          return AlertDialog(
            title: Text(this.title),
            actions: <Widget>[
              new FlatButton(
                  onPressed: (){
                    Navigator.of(context).pop();
                  },
                  child: new Text(
                      "OK"
                  )
              ),
            ],
          );
        }
    );
  }
}
运行此命令时,我可以在控制台中看到
print
语句,但是
AlertWindow
没有显示


我有一种预感,它可能与父级
BuildContext
有关,在我创建它时没有传递给
AlertDialog

您需要调用函数
showDialog
,才能显示
AlertDialog

class AlertWindow  {
  final String title;
  final BuildContext context;

  const AlertWindow({Key key, this.title, this.context});

  void widget(){
           showDialog(
          context: context,
          builder: (BuildContext context) {
          return AlertDialog(
            title: Text(this.title),
            actions: <Widget>[
              new FlatButton(
                  onPressed: (){
                    Navigator.of(context).pop();
                  },
                  child: new Text(
                      "OK"
                  )
              ),
            ],
          );
        }
    );
  }

  }
类警报窗口{
最后的字符串标题;
最终构建语境;
const AlertWindow({Key,this.title,this.context});
void小部件(){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(此标题),
行动:[
新扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
儿童:新文本(
“好的”
)
),
],
);
}
);
}
}
工作示例:


您需要调用函数
showDialog
,才能显示
AlertDialog

class AlertWindow  {
  final String title;
  final BuildContext context;

  const AlertWindow({Key key, this.title, this.context});

  void widget(){
           showDialog(
          context: context,
          builder: (BuildContext context) {
          return AlertDialog(
            title: Text(this.title),
            actions: <Widget>[
              new FlatButton(
                  onPressed: (){
                    Navigator.of(context).pop();
                  },
                  child: new Text(
                      "OK"
                  )
              ),
            ],
          );
        }
    );
  }

  }
类警报窗口{
最后的字符串标题;
最终构建语境;
const AlertWindow({Key,this.title,this.context});
void小部件(){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(此标题),
行动:[
新扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
儿童:新文本(
“好的”
)
),
],
);
}
);
}
}
工作示例:


尝试使用函数而不是小部件 创建一个返回未来的新函数

      Future<dynamic> _showDialog(BuildContext context){
             return showDialog(
                context: context,
                builder: (BuildContext context) {
                     return AlertDialog(
                          title: Text(this.title),
                         actions: <Widget>[
                             new FlatButton(
                                 onPressed: (){
                                  Navigator.of(context).pop();
                                 },
                           child: new Text(
                                     "OK"
                            )
                         ),
                      ],
                  );
              }
          );
       }
Future\u showDialog(构建上下文){
返回显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(此标题),
行动:[
新扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
儿童:新文本(
“好的”
)
),
],
);
}
);
}

尝试使用函数而不是小部件 创建一个返回未来的新函数

      Future<dynamic> _showDialog(BuildContext context){
             return showDialog(
                context: context,
                builder: (BuildContext context) {
                     return AlertDialog(
                          title: Text(this.title),
                         actions: <Widget>[
                             new FlatButton(
                                 onPressed: (){
                                  Navigator.of(context).pop();
                                 },
                           child: new Text(
                                     "OK"
                            )
                         ),
                      ],
                  );
              }
          );
       }
Future\u showDialog(构建上下文){
返回显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(此标题),
行动:[
新扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
儿童:新文本(
“好的”
)
),
],
);
}
);
}


我尝试了您的代码,但警报对话框仍然没有显示?我认为在执行新建警报窗口时,不会调用生成方法,您可以添加断点并调试它吗?进行
热重启
或在进行更改后重新运行应用程序。@dev aentgs进行了热重启,但尚未发出
警报。@PeterHaddad生成函数内的断点未命中,
AlertWindow
类的构造函数中没有断点。我尝试了你的代码,但警报对话框仍然没有显示?我认为在你新建AlertWindow时不会调用生成方法,您可以添加断点并调试它吗?进行
热重启
或在进行更改后重新运行应用程序。@dev aentgs进行了热重启,但尚未发出
警报。@PeterHaddad生成函数内的断点未命中,在
警报窗口
类的构造函数中没有断点。如何访问
上下文
?我在按下按钮的回调中调用函数
SignUP
。它是在
StatefulWidget的构建函数中构建的,将上下文作为参数传递给functionshould
Future
be
Future
?我想showDialog会返回一个Future,我不确定Future是否适合您。但是showDialog返回一个未来,所以动态肯定会工作您的代码工作并向我显示警报对话框,只是想知道为什么原始代码不工作?你知道吗?我怎样才能访问
上下文
?我在按下按钮的回调中调用函数
SignUP
。它是在
StatefulWidget的构建函数中构建的,将上下文作为参数传递给functionshould
Future
be
Future
?我想showDialog会返回一个Future,我不确定Future是否适合您。但是showDialog返回一个未来,所以动态肯定会工作您的代码工作并向我显示警报对话框,只是想知道为什么原始代码不工作?你知道吗?