【问题标题】:Flutter : Dialog not working from PopupMenuItem tapFlutter:对话框无法从 PopupMenuItem 点击
【发布时间】:2021-09-15 09:11:33
【问题描述】:
    showMenu(
      context: context,
      position: RelativeRect.fromLTRB(5000, appBar.preferredSize.height + statusBarHeight!, 0.0, 0.0),
      items: [
        PopupMenuItem(
          child: Text('Cancel'),
          value: 0,
          onTap: () {
            cancelDialog();
          },
        ),
      ],
    );
  cancelDialog() {
    return () {
      showDialog(
        context: context,
        builder: (BuildContext context) => OrderCancel(order!.orderId!),
      );
    };
  }

cancelDialog 未使用之前的代码打开。但它可以从另一个按钮点击正确打开

【问题讨论】:

    标签: flutter dialog flutter-dialog


    【解决方案1】:

    我今天也遇到了同样的问题。在调试时,我知道在执行 onTap 方法后,Navigator.of(context).pop(); 会被调用一次。这就是为什么您的 cancelDialog 不可见的原因。实际上,当调用 showDialog 方法时它会打开,但它也会很快弹出。 来到解决方案,您可以调用cancelDialog 方法两次。因此,即使后者弹出,前者仍然在屏幕上可见。

    onTap: () {
         cancelDialog();
         cancelDialog();
    },
    

    用上面的方法替换旧的 onTap 方法应该可以。

    【讨论】:

    • 这行得通,但奇怪的是我们必须调用一个函数两次。没有更好的办法吗?
    【解决方案2】:

    我今天遇到了同样的问题,几分钟后,我意识到您不能为此使用 onTap。您必须使用 PopupMenuButton 的 onSelected。

    见:enter link description here

    【讨论】:

    • 还是不行
    【解决方案3】:

    您可以检查以下步骤:

    1. 为了进行调查,我们需要一个最小的可运行复制 作为单个文件,这样我们就可以将您的代码复制到新项目的 lib/main.dart 中并运行以重现

    2. 如果没有其他信息,很遗憾,我们不确定如何解决此问题。因此,我们现在不情愿地关闭这个错误。如果您对我们有更多信息,请随时评论该错误;我们将立即重新开放! 感谢您的贡献。

    3. 您的 itemBuilder 函数不返回任何内容。它缺少 return 关键字。

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2019-01-12
      • 2021-01-17
      • 2020-08-31
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多