首页 > 解决方案 > Flutter PopupMenuButton - 选择时不要关闭菜单

问题描述

我的弹出菜单中有一个复选框项目(PopupMenuItem)列表,它由 popupMenuButton 触发。我希望用户能够选择多个复选框,但是一旦选择了一个项目,它就会关闭窗口。

有什么办法可以防止这种情况发生吗?我需要它保持打开状态,或者立即强制它再次打开。

(我尝试创建自己的 PopupItem 类来覆盖“handleTap()”,但我需要更新父菜单视图的状态,我无法从另一个类调用它。所以我再次删除了它。)

class TopicsNotificationMenu extends StatefulWidget {

  List<Topic> topics = [];

  TopicsNotificationMenu(this.topics);

  @override
  _TopicsNotificationMenuState createState() => 
  _TopicsNotificationMenuState();


}

class _TopicsNotificationMenuState extends State<TopicsNotificationMenu> {

  _TopicsNotificationMenuState();
  
  _updateTopics(_tp){

      setState(() {
          if(_tp.value == true){
            _tp.value = false;
          }else{
            _tp.value = true;
            _registerTopic(_tp.name);
         }
      });
  }

  @override
  Widget build(BuildContext context) {


     return PopupMenuButton(
      onSelected: (value) {
        _updateTopics(value);    
      },
      itemBuilder: (BuildContext context) {  
        return widget.topics.map((var tp) {
            var _icon = (tp.value == true) ? Icons.check_box : Icons.check_box_outline_blank;
            return PopupMenuItem(
                  value: tp,
                  child: ListTile(
                    leading: Icon(_icon),
                    title: Text(tp.name),
                  ),
                );
        }).toList();
    });

 }

标签: flutter

解决方案


每次用户选择后,您都可以尝试重新打开它。我在这里做了一个例子

或者,我建议您使用所需的行为创建自己的小部件。


推荐阅读