legacy_context_menu 2.1.0 copy "legacy_context_menu: ^2.1.0" to clipboard
legacy_context_menu: ^2.1.0 copied to clipboard

A simple, extensible context menu for Flutter that supports nested and collapsible submenus.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:legacy_context_menu/legacy_context_menu.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Context Menu Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Context Menu Example'),
      ),
      body: GestureDetector(
        onTapUp: (details) {
          showContextMenu(
            context: context,
            menuItems: [
              ContextMenuItem(
                caption: 'Copy',
                leading: const Icon(Icons.copy),
                onTap: () => debugPrint('Copied'),
              ),
              ContextMenuItem(
                caption: 'Paste',
                leading: const Icon(Icons.paste),
                onTap: () => debugPrint('Pasted'),
                trailing:
                    const Text('Ctrl+V', style: TextStyle(color: Colors.grey)),
              ),
              ContextMenuItem.divider,
              ContextMenuItem(
                caption: 'Collapsible Submenu',
                submenuBehavior: SubmenuBehavior.collapsible,
                submenuBuilder: (context) async {
                  return [
                    ContextMenuItem(
                        caption: 'Subitem 1',
                        onTap: () => debugPrint('Subitem 1')),
                    ContextMenuItem(
                        caption: 'Subitem 2',
                        onTap: () => debugPrint('Subitem 2')),
                  ];
                },
              ),
              ContextMenuItem(
                caption: 'Standard Submenu',
                submenuBuilder: (context) async {
                  return [
                    ContextMenuItem(
                        caption: 'Subitem 3',
                        onTap: () => debugPrint('Subitem 3')),
                    ContextMenuItem(
                        caption: 'Subitem 4',
                        onTap: () => debugPrint('Subitem 4')),
                  ];
                },
              ),
              ContextMenuItem(
                caption: 'User Info',
                submenuBuilder: (context) async {
                  await Future.delayed(const Duration(seconds: 1));
                  return [
                    const ContextMenuItem(caption: 'Name: John Doe'),
                    const ContextMenuItem(
                        caption: 'Email: john.doe@example.com'),
                  ];
                },
              ),
            ],
            tapPosition: details.globalPosition,
            theme: ContextMenuTheme(
              backgroundColor: Colors.grey.shade200,
              elevation: 8,
              dividerHeight: 2,
              menuBorder: BorderSide(color: Colors.grey.shade400, width: 2),
            ),
          );
        },
        child: Container(
          color: Colors.white,
          child: const Center(
            child: Text('Tap anywhere to show the context menu.'),
          ),
        ),
      ),
    );
  }
}
4
likes
0
points
400
downloads

Publisher

verified publisherlegacy-automation.online

Weekly Downloads

A simple, extensible context menu for Flutter that supports nested and collapsible submenus.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on legacy_context_menu