Flutter桌面上下文菜单插件flutter_desktop_context_menu的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter桌面上下文菜单插件flutter_desktop_context_menu的使用

1. 插件简介

flutter_desktop_context_menu 是一个用于在桌面应用程序中生成上下文菜单(右键菜单)的Flutter插件。它支持MacOS、Windows和Linux平台,并且可以在鼠标坐标处弹出菜单。该插件还为MacOS提供了快捷键支持。

2. 平台支持

平台 支持情况
Linux ✔️
macOS ✔️
Windows ✔️

3. 截图

以下是不同平台上的上下文菜单截图:

macOS Linux Windows
macOS Linux Windows

4. 快速开始

4.1 安装

pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_desktop_context_menu: ^0.2.0

然后运行 flutter pub get 来安装插件。

4.2 使用示例

以下是一个完整的示例代码,展示了如何使用 flutter_desktop_context_menu 插件创建一个上下文菜单并弹出它。

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_desktop_context_menu/flutter_desktop_context_menu.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('上下文菜单示例')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 创建菜单项
              Menu menu = Menu(
                items: [
                  MenuItem(
                    label: '复制',
                    shortcutKey: 'c',
                    shortcutModifiers: ShortcutModifiers(
                      control: Platform.isWindows, 
                      meta: Platform.isMacOS
                    ),
                    onClick: (_) {
                      print('点击了复制');
                    },
                  ),
                  MenuItem(
                    label: '禁用项',
                    disabled: true,
                  ),
                  MenuItem.checkbox(
                    key: 'checkbox1',
                    label: '复选框1',
                    toolTip: '复选框 1',
                    checked: true,
                    onClick: (menuItem) {
                      print('点击了复选框1');
                      menuItem.checked = !(menuItem.checked == true);
                    },
                  ),
                  MenuItem.separator(),
                ],
              );

              // 弹出上下文菜单
              popUpContextualMenu(
                menu,
                placement: Placement.bottomLeft,
              );
            },
            child: Text('显示上下文菜单'),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter桌面上下文菜单插件flutter_desktop_context_menu的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter桌面上下文菜单插件flutter_desktop_context_menu的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 flutter_desktop_context_menu 插件在 Flutter 桌面应用中实现上下文菜单的示例代码。这个插件允许你在桌面平台上为 Flutter 应用添加右键(上下文)菜单。

首先,确保你的 Flutter 项目已经添加了 flutter_desktop_context_menu 依赖。在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_desktop_context_menu: ^x.y.z  # 请将 x.y.z 替换为当前最新版本号

然后运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中,你可以按照以下步骤实现上下文菜单功能:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:flutter_desktop_context_menu/flutter_desktop_context_menu.dart';
  1. 创建菜单项
final List<ContextMenuEntry> contextMenuItems = [
  ContextMenuEntry(
    label: 'Copy',
    onSelected: () {
      // 实现复制功能
      print('Copy selected');
    },
  ),
  ContextMenuEntry(
    label: 'Paste',
    onSelected: () {
      // 实现粘贴功能
      print('Paste selected');
    },
  ),
  ContextMenuEntry(
    label: 'Cut',
    onSelected: () {
      // 实现剪切功能
      print('Cut selected');
    },
  ),
];
  1. 注册上下文菜单

在你的 main.dart 文件中,注册上下文菜单并将其与某个 Widget 关联。例如,我们可以将其与一个 Text Widget 关联:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Desktop Context Menu Example'),
        ),
        body: Builder(
          builder: (context) {
            // 注册上下文菜单
            registerContextMenu(
              context,
              items: contextMenuItems,
            );

            return Center(
              child: GestureDetector(
                onContextMenu: (position) {
                  // 显示上下文菜单
                  showContextMenu(context, position);
                },
                child: Text(
                  'Right-click me!',
                  style: TextStyle(fontSize: 24),
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

在上面的代码中:

  • 我们使用 Builder Widget 来获取一个 BuildContext,该上下文用于注册上下文菜单。
  • 使用 registerContextMenu 函数注册菜单项。
  • 使用 GestureDetectoronContextMenu 回调来检测右键点击事件,并在该位置显示上下文菜单。
  • showContextMenu 函数用于在指定位置显示上下文菜单。

请注意,flutter_desktop_context_menu 插件目前仅支持 Windows 和 macOS 平台。确保你在这些平台上运行你的 Flutter 应用。

以上代码提供了一个基本的上下文菜单实现示例。根据你的需求,你可以进一步自定义菜单项和处理逻辑。

回到顶部