flutter WillPopScope拦截导航返回,实现退出确认弹窗或点击两次退出

属性 const WillPopScope({Key? key,required this.child,//布局内容required this.onWillP

属性

const WillPopScope({Key? key,required this.child,//布局内容required this.onWillPop,//返回拦截处理})

需要注意:WillPopScope必须包裹在布局的最外层。
使用实例:


main() {runApp( MaterialApp(home: _WillPopScopeWidget(),));
}
class _WillPopScopeWidget extends StatefulWidget {@overrideState<StatefulWidget> createState() => _WillPopScopeState();
}class _WillPopScopeState extends State<_WillPopScopeWidget> {String msg = '按返回键退出';@overrideWidget build(BuildContext context) => WillPopScope(child:  Scaffold(body: Center(child: Text(msg),),),onWillPop: () async {var result = await showDialog<bool>(builder: (BuildContext context) {return AlertDialog(shape: const RoundedRectangleBorder(),backgroundColor: Colors.red,elevation: 0,title: const Text('提示'),content: const Text('确定要退出吗?'),actions: [TextButton(onPressed: () {Navigator.of(context).pop( false);},child: const Text('取消')),TextButton(onPressed: () {Navigator.of(context).pop( true);},child: const Text('确定'))],);},context: context);return result!;},);
}