因为Flutter的路由在返回上一层的时候不会刷新,所以返回时经常出问题,虽然也可以用路由.then来做页面刷新,但是页面分成好几个文件之后就变得冗余,最后决定更改退出到的页面,来避免这个问题。但是自定义Appbar中的Leading之后,手机的返回键出卖了我。最后发现了WillPopScope,用该组件来监测手机返回键。用来防止异常退出,或者做双击退出也能用这个组件来完成哦。
注意:WillPopScope要包裹在Scaffold外层,onWillPop执行 返回键要执行的事件
// 监测返回按钮
return WillPopScope(
child: Scaffold(
appBar: AppBar(
title: Text('${arguments['title']}'),
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: (){
// 返回上一层还是去新页面
if(arguments['from']=='zntb'){
Navigator.pushReplacementNamed(context, '/routename');
}else{
Navigator.pop(context);
}
},
),
centerTitle: true,
),
),
onWillPop: (){
// 手机返回键事件
if(arguments['from']=='zntb'){
Navigator.pushReplacementNamed(context, '/routename');
}else{
Navigator.pop(context);
}
},
);