搜索插件、代码仓与 APP 分类

插件详情v0.0.6

popup_menu_plus

一个完全用 Dart 编写的 Flutter 弹出菜单小部件,支持 iOS 和 Android。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
898
喜欢数
30
Pub 分数
150

安装插件

flutter pub add popup_menu_plus

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

popup_menu_plus 是一个 Flutter 包,提供了一个可自定义的弹出菜单小部件,完全用 Dart 实现。它在 iOS 和 Android 上提供原生般的功能,并支持 Web、macOS、Windows 和 Linux 等多个平台。该包通过点击或手势触发的上下文敏感菜单来增强用户交互体验。它设计轻量,易于集成,并与现代 Flutter 开发实践兼容。开发者可以通过自定义项目和样式选项扩展其行为。

适合场景

  • 应用中的上下文操作
  • 用户设置菜单
  • 下拉式导航
  • 表单的可自定义弹窗
  • 平台一致的用户界面元素

主要特点

  • 跨平台兼容性
  • 完全用 Dart 编写
  • 支持手势触发
  • 可扩展的物品自定义
  • 轻量且高效

适合对象

  • 开发跨平台应用的开发者
  • 需要一致菜单UI的团队
  • 需要上下文操作菜单的应用程序
  • 具有严格性能约束的项目
  • UI密集型应用

使用建议

  • 需要手动处理菜单定位
  • 内置主题选项有限
  • 可能需要额外的逻辑来处理复杂交互
  • 未针对非常大的菜单项进行优化
  • 依赖于 Flutter 的手势系统

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Popup Menu Plus

This project is a fork of chinabrant/popup_menu.

This project was written completely in dart, and it supports both iOS and Android.

Screenshots

Todo

  • [ ] show/hide animation

Usage

You can find the demo at the 'example' folder.

PopupMenu menu = PopupMenu(
      context: context,
      config: const MenuConfig(
        backgroundColor: Colors.green,
        lineColor: Colors.greenAccent,
        highlightColor: Colors.lightGreenAccent,
      ),
      items: [
        PopUpMenuItem(title: 'Copy', image: Image.asset('assets/copy.png')), 
        PopUpMenuItem(title: 'Home', image: Icon(Icons.home, color: Colors.white,)), 
        PopUpMenuItem(title: 'Mail', image: Icon(Icons.mail, color: Colors.white,)), 
        PopUpMenuItem(title: 'Power', image: Icon(Icons.power, color: Colors.white,)),
        PopUpMenuItem(title: 'Setting', image: Icon(Icons.settings, color: Colors.white,)), 
        PopUpMenuItem(title: 'Traffic', image: Icon(Icons.traffic, color: Colors.white,))], 
      onClickMenu: onClickMenu, 
      onShow: onShow,
      onDismiss: onDismiss);

menu.show(rect: rect);


or

PopupMenu menu = PopupMenu(
        context: context,
        config: const MenuConfig(
            backgroundColor: Colors.green,
            lineColor: Colors.greenAccent,
            highlightColor: Colors.lightGreenAccent,
        ),
        items: [
          PopUpMenuItem(title: 'Copy', image: Image.asset('assets/copy.png')),
          PopUpMenuItem(
              title: 'Home',
              textStyle: TextStyle(fontSize: 10.0, color: Colors.tealAccent),
              image: Icon(
                Icons.home,
                color: Colors.white,
              )),
          PopUpMenuItem(
              title: 'Mail',
              image: Icon(
                Icons.mail,
                color: Colors.white,
              )),
          PopUpMenuItem(
              title: 'Power',
              image: Icon(
                Icons.power,
                color: Colors.white,
              )),
          PopUpMenuItem(
              title: 'Setting',
              image: Icon(
                Icons.settings,
                color: Colors.white,
              )),
          PopUpMenuItem(
              title: 'PopupMenu',
              image: Icon(
                Icons.menu,
                color: Colors.white,
              ))
        ],
        onClickMenu: onClickMenu,
        onDismiss: onDismiss);
    menu.show(widgetKey: btnKey2);

with custom content:

PopupMenu menu = PopupMenu(
        context: context,
        config: const MenuConfig(
            type: MenuType.custom,
            itemHeight: 200,
            itemWidth: 200,
            backgroundColor: Colors.green,
        ),
        content: Container(
            width: 50,
            height: 50,
            color: Colors.red,
          ),
        onClickMenu: onClickMenu,
        onDismiss: onDismiss);
    menu.show(widgetKey: btnKey2);

所属分类

源码仓库

使用此插件的项目

暂无相关数据。