单击弹出项目时未显示警报对话框。有啥解决办法吗?

Posted

技术标签:

【中文标题】单击弹出项目时未显示警报对话框。有啥解决办法吗?【英文标题】:Alert Dialogue is not showing on popup item click. Any solution?单击弹出项目时未显示警报对话框。有什么解决办法吗? 【发布时间】:2022-01-16 23:28:18 【问题描述】:

这是我的 PopupMenuButton

                        PopupMenuButton(
                            icon:
                                Icon(Icons.more_vert, color: Colors.white),
                            itemBuilder: (context) => [
                                  PopupMenuItem(
                                    onTap: () 
                                      showMyDialog();
                                    ,
                                    child: Text(
                                      "Edit Profile Picture",
                                      style: TextStyle(
                                          color: AppColors.pinkColor),
                                    ),
                                    value: 1,
                                  ),
                                  PopupMenuItem(
                                   
                                    child: Text(
                                      "Edit  Cover Picture",
                                      style: TextStyle(
                                          color: AppColors.pinkColor),
                                    ),
                                    value: 2,
                                  ),
                                  PopupMenuItem(
                                  
                                    child: Text(
                                      "Setting",
                                      style: TextStyle(
                                          color: AppColors.pinkColor),
                                    ),
                                    value: 3,
                                  )
                                ])

这是我的对话功能

Future<void> _showMyDialog() async 
    return showDialog<void>(
      context: context,
      barrierDismissible: false, // user must tap button!
      builder: (BuildContext context) 
        return AlertDialog(
          title: const Text('AlertDialog Title'),
          content: SingleChildScrollView(
            child: ListBody(
              children: const <Widget>[
                Text('This is a demo alert dialog.'),
                Text('Would you like to approve of this message?'),
              ],
            ),
          ),
          actions: <Widget>[
            TextButton(
              child: const Text('Approve'),
              onPressed: () 
                Navigator.of(context).pop();
              ,
            ),
          ],
        );
      ,
    );
  

【问题讨论】:

你的方法声明是_showMyDialog(),而你的调用是showMyDialog(),没有_。尝试在声明函数时调用它。 【参考方案1】:

点击PopupMenuButton 上的任何项目以关闭它后,PopupMenuItemonTap 调用Navigator.pop

 void handleTap() 
    widget.onTap?.call();

    Navigator.pop<T>(context, widget.value);
  

当您点击该项目时,它会显示_showMyDialog(),但由于调用了Navigator.pop而立即关闭它,这就是为什么您会发现PopupMenuItem在点击后打开。

只是Navigator.pop 正在关闭showDialog 而不是PopupMenuButton 的项目。我们可以提供一些延迟来关闭PopupMenuItem,然后可以调用_showMyDialog();

PopupMenuItem(
  onTap: () 
    Future.delayed(Duration.zero).then((value) 
      _showMyDialog();
    );
  ,

【讨论】:

非常感谢 Yeasin Sheikh 随意接受作为答案【参考方案2】:

假设如果您将函数声明为_showMyDialogue(),那么在调用该函数时应该使用_showMyDialogue()。在您的情况下,您在调用它时忽略了“_”。这就是问题所在。

【讨论】:

解决不了问题 任何错误信息?? 不会有错误信息,但是看不到对话框。 请在发布答案之前测试问题。我不喜欢对某人宝贵的时间投反对票。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于单击弹出项目时未显示警报对话框。有啥解决办法吗?的主要内容,如果未能解决你的问题,请参考以下文章

系统资源不足是怎么造成的?有啥解决办法?病毒可以引起吗?

outlook邮箱打开时为何总是弹出“记住我的凭据”对话框。有啥办法解决?

JavaScript 中的打开文件对话框

使用警报对话框android的颜色ListView项目

Android - 单击按钮时未显示权限对话框

Android简单的警报对话框[重复]