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的构建函数中构建的,将上下文作为参数传递给functionshouldFuture
beFuture
?我想showDialog会返回一个Future,我不确定Future是否适合您。但是showDialog返回一个未来,所以动态肯定会工作您的代码工作并向我显示警报对话框,只是想知道为什么原始代码不工作?你知道吗?我怎样才能访问上下文
?我在按下按钮的回调中调用函数SignUP
。它是在StatefulWidget的构建函数中构建的,将上下文作为参数传递给functionshouldFuture
beFuture
?我想showDialog会返回一个Future,我不确定Future是否适合您。但是showDialog返回一个未来,所以动态肯定会工作您的代码工作并向我显示警报对话框,只是想知道为什么原始代码不工作?你知道吗?