如何在 Flutter 离开屏幕前显示确认对话框
How to show confirm dialog before leave screen in Flutter
我想在处理或离开屏幕之前显示警告对话框,或者在最晚显示警告 SnackBar,我该怎么做?
我知道如何显示对话框和 SnackBar,但我不知道我在哪里或何时尝试在处理生命挂钩时这样做,但它出错了。由于在显示对话框之前处理了上下文。
您可以使用 WillPopScope
小部件:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
final value = await showDialog<bool>(
context: context,
builder: (context) {
return AlertDialog(
content: Text('Are you sure you want to exit?'),
actions: <Widget>[
FlatButton(
child: Text('No'),
onPressed: () {
Navigator.of(context).pop(false);
},
),
FlatButton(
child: Text('Yes, exit'),
onPressed: () {
Navigator.of(context).pop(true);
},
),
],
);
}
);
return value == true;
},
child: Scaffold(
appBar: AppBar(),
body: SafeArea(
child: Container()
),
),
);
}
我想在处理或离开屏幕之前显示警告对话框,或者在最晚显示警告 SnackBar,我该怎么做?
我知道如何显示对话框和 SnackBar,但我不知道我在哪里或何时尝试在处理生命挂钩时这样做,但它出错了。由于在显示对话框之前处理了上下文。
您可以使用 WillPopScope
小部件:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
final value = await showDialog<bool>(
context: context,
builder: (context) {
return AlertDialog(
content: Text('Are you sure you want to exit?'),
actions: <Widget>[
FlatButton(
child: Text('No'),
onPressed: () {
Navigator.of(context).pop(false);
},
),
FlatButton(
child: Text('Yes, exit'),
onPressed: () {
Navigator.of(context).pop(true);
},
),
],
);
}
);
return value == true;
},
child: Scaffold(
appBar: AppBar(),
body: SafeArea(
child: Container()
),
),
);
}