如标题所示,按后退按钮后,应用程序将关闭。
Container(
margin: EdgeInsets.only(left: 20, top: 8),
decoration: BoxDecoration(
color: colorYellow,
borderRadius: BorderRadius.all(Radius.circular(20))),
height: 40,
width: 40,
child: IconButton(
icon: Icon(Icons.arrow_back, color: Colors.white, size: 20),
onPressed: () => Navigator.of(context).pop(),
),
),
使用
Navigator.pop(context);
代替 Navigator.of(context).pop()
用 WillPopScope 包裹你的脚手架。每当按下后退按钮时,您都会在 onWillPop 处收到回调,该回调返回一个 Future。如果 Future 返回 true,则弹出屏幕。
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
// await showDialog or Show add banners or whatever
// return true if the route to be popped
return false; // return false if you want to disable device back button click
},
child: Scaffold(),
),
};
return false;
这意味着您的应用程序不会在单击后退按钮时关闭
Future<bool> onBackPress(context) {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Do you wish to exit?'),
actions: <Widget>[
TextButton(
child: Text('Cancel'),
onPressed: () => {Navigator.pop(context, false)},
),
TextButton(
onPressed: () => {Navigator.pop(context, true)},
child: Text('Exit'))
],
));
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () => onBackPress(context),
child: SafeArea(),
)};
我也遇到了同样的问题。当实现flutter_stripe时。将
**FlutterFragmentActivity**
更改为 **FlutterActivity**
解决了该问题。不知道原因