颤振:我怎样才能抓住后退按钮按下退出我的应用程序

Posted

技术标签:

【中文标题】颤振:我怎样才能抓住后退按钮按下退出我的应用程序【英文标题】:Flutter: How can I catch a back button press to exit my app 【发布时间】:2020-08-31 14:48:50 【问题描述】:

我正在开发一个应用程序,主要只是向用户显示来自网络服务的信息(由他们的管理员创建的信息)。在抽屉菜单上有 5 个屏幕来显示不同的信息。

用户登录后,我使用 Navigator 通过 pushReplacement 在屏幕之间移动。这意味着当前屏幕始终位于屏幕堆栈的底部。如果用户按下他们设备上的后退按钮,应用程序会立即存在。

我怎样才能捕捉到这一点,所以我可以询问用户是否要注销,然后显示登录屏幕?

感谢您的任何建议。

干杯,

保罗

【问题讨论】:

【参考方案1】:

您可以使用WillPopScope 小部件并更改onWillPop 参数来执行此操作。我发布的示例与您想要的类似,因为它显示了一个警报对话框,可以确定接下来会发生什么。 FlatButton onPressed 代码可能不是您正在寻找的代码,您必须根据您的实现来处理它 这是示例代码来自@AironTark 对this related question 的回答。

@override
Widget build(BuildContext context) 
  return WillPopScope(
    child: Scaffold(...),
    onWillPop: () => showDialog<bool>(
      context: context,
      builder: (c) => AlertDialog(
        title: Text('Warning'),
        content: Text('Do you really want to exit'),
        actions: [
          FlatButton(
            child: Text('Yes'),
            onPressed: () => Navigator.pop(c, true),
          ),
          FlatButton(
            child: Text('No'),
            onPressed: () => Navigator.pop(c, false),
          ),
        ],
      ),
    ),
  );

【讨论】:

完美。非常感谢帮忙。效果很好!祝你有美好的一天。

以上是关于颤振:我怎样才能抓住后退按钮按下退出我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在颤振中,按下后退按钮时如何返回上一个 URL?

在颤动中按下移动后退按钮后网站应用程序未退出

使用后退按钮颤振测试 WillPopScope

如何在颤振中使用嵌套的 WillPopScope

按下后退按钮时如何退出?

按下后退按钮时保存