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

Appearance settings

leanflutter/tray_manager

Open more actions menu

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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.