【问题标题】:How to dismissed showDialog with backBoutton?如何用 backBoutton 解除 showDialog?
【发布时间】:2021-01-23 16:18:12
【问题描述】:

我在 FloatingActionButton 内部调用了一个 showDialog,我想在单击后退按钮时关闭 showDialog,但它返回到上一页而不关闭

我的代码

 FloatingActionButton(
          onPressed: () async {
        
            await showDialog(
              context: context,
              // useRootNavigator: false,
              builder: (BuildContext context) {
                return AlertDialog(
                  title: Text("Dialog"),
........)

【问题讨论】:

  • 你的意思是物理安卓设备上的后退按钮?
  • 是的............
  • @krumpli 有什么想法吗?

标签: flutter dart


【解决方案1】:

因为您传递了错误的页面上下文。我今天遇到了同样的问题,我通过这样做解决了它

 FloatingActionButton(
      onPressed: () async {
    
        await showDialog(
          context: context,
          // useRootNavigator: false,
          builder: (BuildContext dialogContext) {
            return AlertDialog(
              title: Text("Dialog"),
........)

然后我用dialogContext弹出对话框

Navigator.of(dialogContext).pop();

【讨论】:

  • 如何检测按下的后退按钮?
  • backButton 不会关闭对话框,您可以提供一个关闭对话框的按钮。
  • 如果你想检测物理后退按钮被按下而不是你 WillPopScope
  • 您可以检测到使用 WillPopScope 按下的后退按钮。 stackoverflow.com/a/49356916/10659482
  • 这正是我所说的。感谢 Akif 的链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2020-03-02
相关资源
最近更新 更多