如何确保在任何给定时间仅打开 1 个 MenuAnchor 菜单?

问题描述 投票:0回答:1

我正在使用 Flutter 的

MenuAnchor
在用户右键单击某个项目时显示上下文菜单。

问题是,如果用户打开上下文菜单,然后右键单击另一个项目 - 现在会同时显示 2 个上下文菜单(可能重叠)。

理想情况下,我希望 MenuAnchor 小部件中的任何打开的菜单在新菜单打开时关闭,以便只显示 1。

我曾考虑过将

MenuController
的状态拉到小部件树上,以便在对新对象调用
open()
之前将它们全部关闭,但是我更喜欢一种更干净的解决方案,因为可能有数百或数千个此类对象每个人都有自己的
MenuController

flutter desktop-application
1个回答
0
投票

答案是我在上下文菜单中使用了错误的小部件。

而是使用 ContextMenuController,它会自动确保只有 1 个打开的上下文菜单,并且还提供静态方法

ContextMenuController.removeAny()
来关闭所有打开的上下文菜单。

© www.soinside.com 2019 - 2024. All rights reserved.