Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

leanflutter/tray_manager

Repository files navigation

🚀 Ship Your App Faster: Try Fastforge - The simplest way to build, package and distribute your Flutter apps.

tray_manager

pub version

This plugin allows Flutter desktop apps to defines system tray.

Note: This plugin is planned to migrate to nativeapi to improve maintainability and performance, but the solution is still experimental at this stage.

English | 简体中文


Platform Support

Linux macOS Windows
✔️ ✔️ ✔️

Screenshots

macOS Linux Windows
image

Known Issues

Not Working with app_links

When using the app_links package together with tray_manager, the plugin may not work properly. This is because older versions of app_links internally block event propagation, preventing menu click events from being triggered.

To resolve this issue:

  1. Make sure your app_links package version is greater than or equal to 6.3.3
dependencies:
 app_links: ^6.3.3
  1. Use protocol_handler package instead of app_links package.

Not Showing in GNOME

In GNOME desktop environment, the AppIndicator extension may be required to display the icon.

Quick Start

Installation

Add this to your package's pubspec.yaml file:

dependencies:
 tray_manager: ^0.5.1

Or

dependencies:
 tray_manager:
 git:
 url: https://github.com/leanflutter/tray_manager.git
 ref: main
 path: packages/tray_manager

Linux requirements

  • ayatana-appindicator3-0.1 or appindicator3-0.1

Run the following command

sudo apt-get install libayatana-appindicator3-dev

Or

sudo apt-get install appindicator3-0.1 libappindicator3-dev

Usage

import 'package:flutter/material.dart' hide MenuItem;
import 'package:tray_manager/tray_manager.dart';
await trayManager.setIcon(
 Platform.isWindows
 ? 'images/tray_icon.ico'
 : 'images/tray_icon.png',
);
Menu menu = Menu(
 items: [
 MenuItem(
 key: 'show_window',
 label: 'Show Window',
 ),
 MenuItem.separator(),
 MenuItem(
 key: 'exit_app',
 label: 'Exit App',
 ),
 ],
);
await trayManager.setContextMenu(menu);

Please see the example app of this plugin for a full example.

Listening events

import 'package:flutter/material.dart';
import 'package:tray_manager/tray_manager.dart';
class HomePage extends StatefulWidget {
 @override
 _HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> with TrayListener {
 @override
 void initState() {
 trayManager.addListener(this);
 super.initState();
 _init();
 }
 @override
 void dispose() {
 trayManager.removeListener(this);
 super.dispose();
 }
 void _init() {
 // ...
 }
 @override
 Widget build(BuildContext context) {
 // ...
 }
 @override
 void onTrayIconMouseDown() {
 // do something, for example pop up the menu
 trayManager.popUpContextMenu();
 }
 @override
 void onTrayIconRightMouseDown() {
 // do something
 }
 @override
 void onTrayIconRightMouseUp() {
 // do something
 }
 @override
 void onTrayMenuItemClick(MenuItem menuItem) {
 if (menuItem.key == 'show_window') {
 // do something
 } else if (menuItem.key == 'exit_app') {
 // do something
 }
 }
}

Who's using it?

  • Airclap - Send any file to any device. cross platform, ultra fast and easy to use.
  • Biyi (比译) - A convenient translation and dictionary app.

API

TrayManager

Method Description Linux macOS Windows
destroy Destroys the tray icon immediately. ✔️ ✔️ ✔️
setIcon Sets the image associated with this tray icon. ✔️ ✔️ ✔️
setIconPosition Sets the icon position of the tray icon. ✔️
setToolTip Sets the hover text for this tray icon. ✔️ ✔️
setContextMenu Sets the context menu for this icon. ✔️ ✔️ ✔️
popUpContextMenu Pops up the context menu of the tray icon. ✔️ ✔️
getBounds Returns Rect The bounds of this tray icon. ✔️ ✔️

License

MIT

About

This plugin allows Flutter desktop apps to defines system tray.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors 20

AltStyle によって変換されたページ (->オリジナル) /