Flutter 监听返回键

Flutter 监听返回键

WillPopScope的注释:

注册一个回调函数来否决用户试图关闭封闭的[ModalRoute]。

抱歉,每个字我都认识,这一句话理解不了…

通过 WillPopScope 可以实现对返回键点击事件的监听,通过 onWillPop 回调函数可以处理响应点击事件

参考自:此文章

@override
Widget build(BuildContext context) {
  return WillPopScope(
      onWillPop: _requestPop,
      child: Scaffold(
        appBar: AppBar(
          title: Text('工作须知'),
          leading: IconButton(
            icon: Icon(Icons.arrow_back),
            onPressed: () {
              print("退出${Navigator.canPop(context)}");
              if (Navigator.canPop(context)) {
                Navigator.pop(context);
              } else {
                SystemNavigator.pop();
              }
            },
          ),
        ),
       ),
    );
   }

Future<bool> _requestPop() {
    print("POP");
    if (Navigator.canPop(context)) {
      Navigator.pop(context);
    } else {
      SystemNavigator.pop();
    }
    return Future.value(false); 
  }

WillPopScope 这种模式,如果不在AppBar写Ieading处理事件,是可以监听返回按钮的,这里指左上角那个返回,实体按键是检测不到的(华为P30检测不到…)

可以考虑用plugin调android 原生参考该文章

在flutter官网中Platform adaptations有回退导航介绍:

Back navigation
On Android, the OS back button, by default, is sent to Flutter and pops the top route of the WidgetsApp’s Navigator.

On iOS, an edge swipe gesture can be used to pop the top route.

不过没啥用,2个字’然并无’

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter中,你可以使用`WillPopScope`来监听页面的返回操作。`WillPopScope`是一个Widget,它可以监听用户按下返回按钮或者类似的导航手势,然后执行相应的操作。 下面是一个示例代码,展示如何使用`WillPopScope`来监听页面返回: ```dart class YourPage extends StatelessWidget { @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () async { // 在这里执行你希望执行的操作 // 返回true表示允许返回返回false表示阻止返回 // 例如,你可以弹出一个对话框询问用户是否确认返回 bool confirmExit = await showDialog( context: context, builder: (BuildContext context) => AlertDialog( title: Text('确认退出?'), content: Text('确定要离开此页面吗?'), actions: [ FlatButton( child: Text('取消'), onPressed: () { Navigator.of(context).pop(false); // 阻止返回 }, ), FlatButton( child: Text('确定'), onPressed: () { Navigator.of(context).pop(true); // 允许返回 }, ), ], ), ); return confirmExit ?? false; // 如果对话框关闭时没有选择,则默认不允许返回 }, child: Scaffold( appBar: AppBar( title: Text('Your Page'), ), body: Center( child: Text('Your Page Content'), ), ), ); } } ``` 在上述示例中,我们将整个页面包裹在`WillPopScope`中,并指定了`onWillPop`回调函数。在回调函数中,你可以执行任何你希望在页面返回时进行的操作。在这个示例中,我们弹出一个对话框来询问用户是否确认返回。用户的选择将决定是否允许返回。 注意:`WillPopScope`只能监听物理返回按钮或者类似的导航手势,不能监听页面中的其他返回操作,例如点击一个返回按钮。如果你想监听页面中其他返回操作,你需要手动实现相应的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值