Mac Menu Bar Plugin for Flutter
A Flutter plugin that provides access to macOS menu bar actions, allowing Flutter applications to handle standard menu items like Cut, Copy, Paste, and Select All.
Features
- Intercept and handle standard macOS menu bar actions
- Support for Cut, Copy, Paste, and Select All menu items
- Fallback to default system behavior when actions aren't handled
- Clean and simple API for handling menu actions
Installation
Add mac_menu_bar to your pubspec.yaml file:
dependencies:
mac_menu_bar: ^1.0.0
Then run flutter pub get to install the package.
Usage
Basic Setup
Import the package in your Dart code:
import 'package:mac_menu_bar/mac_menu_bar.dart';
Handling Menu Actions
Set up handlers for the menu actions in your app's initialization:
@override
void initState() {
super.initState();
// Handle Cut menu item
MacMenuBar.onCut(() async {
debugPrint('Cut menu item selected');
// Implement your cut logic here
return true; // Return true to indicate the action was handled
});
// Handle Copy menu item
MacMenuBar.onCopy(() async {
debugPrint('Copy menu item selected');
// Implement your copy logic here
return true;
});
// Handle Paste menu item
MacMenuBar.onPaste(() async {
debugPrint('Paste menu item selected');
// Implement your paste logic here
return true;
});
// Handle Select All menu item
MacMenuBar.onSelectAll(() async {
debugPrint('Select All menu item selected');
// Implement your select all logic here
return true;
});
}
Handling Menu Actions Selectively
Return false from a handler to let the system handle the action:
MacMenuBar.onPaste(() async {
if (shouldHandlePaste) {
// Handle paste operation
return true;
}
// Let the system handle the paste operation
return false;
});
Platform Support
This plugin is only supported on macOS. It will have no effect on other platforms.
Example
For a complete example, see the example directory in this repository.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.