3
    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未使用以前的代码打开。但它从另一个按钮点击正确打开

4

3 回答 3

0

您可以检查以下步骤:

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

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

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

于 2021-07-04T04:37:17.043 回答
0

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

请参阅:在此处输入链接描述

于 2021-09-16T18:46:23.650 回答
0

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

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

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

于 2021-12-12T23:43:57.527 回答