popup_menu_2
Lightweight and customizable Flutter popup menus designed to keep user attention on the current context.
✨ Highlights
- Context-aware popup positioning.
- Supports both tap and long-press triggers.
- Grid-style menu with configurable columns.
- Dismiss-on-click-away behavior.
- Works across Flutter-supported platforms.
📸 Preview
📦 Installation
Add dependency to your pubspec.yaml:
dependencies:
popup_menu_2: ^0.1.5
Then run:
flutter pub get
🚀 Quick Start
ContextualMenu
import 'package:flutter/material.dart';
import 'package:popup_menu_2/popup_menu_2.dart';
final GlobalKey targetKey = GlobalKey();
ContextualMenu(
targetWidgetKey: targetKey,
maxColumns: 2,
dismissOnClickAway: true,
backgroundColor: Colors.black87,
items: [
ContextPopupMenuItem(
onTap: () async {},
child: const Icon(Icons.add, color: Colors.white),
),
ContextPopupMenuItem(
onTap: () async {},
child: const Icon(Icons.remove, color: Colors.white),
),
],
child: Icon(Icons.more_vert, key: targetKey),
)
CustomPopupMenu + Controller
import 'package:flutter/material.dart';
import 'package:popup_menu_2/popup_menu_2.dart';
final controller = CustomPopupMenuController();
CustomPopupMenu(
controller: controller,
pressType: PressType.singleClick,
menuBuilder: () => Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: const Text('Hello from popup_menu_2'),
),
child: const Icon(Icons.touch_app),
)
⚙️ Core Options
ContextualMenu:maxColumns,dismissOnClickAway,position,backgroundColor,highlightColor,lineColor.CustomPopupMenu:pressType,showArrow,arrowColor,barrierColor,position,menuOnChange,enablePassEvent.
📄 License
Distributed under the BSD 3-Clause license. See LICENSE.