system_tray 0.1.1 copy "system_tray: ^0.1.1" to clipboard
system_tray: ^0.1.1 copied to clipboard

outdated

system_tray that makes it easy to customize tray and work with your Flutter desktop app.

system_tray #

Pub

A Flutter package that enables support for system tray menu for desktop flutter apps. on Windows, macOS, and Linux.

Install #

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  ...
  system_tray: ^0.1.1

In your library add the following import:

import 'package:system_tray/system_tray.dart';

Prerequisite #

Linux #

sudo apt-get install appindicator3-0.1 libappindicator3-dev

Example App #

Windows #

macOS #

Linux #

API #

Method Description Windows macOS Linux
initSystemTray Initialize system tray ✔️ ✔️ ✔️
setSystemTrayInfo Modify the tray info
  • icon
  • toolTip
  • title
  • icon
  • toolTip
  • icon
setImage Modify the tray image ✔️ ✔️ ✔️
setTooltip Modify the tray tooltip ✔️ ✔️
setTitle / getTitle Set / Get the tray title ✔️
setContextMenu Set the tray context menu ✔️ ✔️ ✔️
popUpContextMenu Popup the tray context menu ✔️ ✔️
registerSystemTrayEventHandler Register system tray event
  • leftMouseUp
  • leftMouseDown
  • leftMouseDblClk
  • rightMouseUp
  • rightMouseDown
  • leftMouseUp
  • leftMouseDown
  • rightMouseUp
  • rightMouseDown

Usage #

Future<void> initSystemTray() async {
  String path =
      Platform.isWindows ? 'assets/app_icon.ico' : 'assets/app_icon.png';

  final menu = [
    MenuItem(label: 'Show', onClicked: _appWindow.show),
    MenuItem(label: 'Hide', onClicked: _appWindow.hide),
    MenuItem(label: 'Exit', onClicked: _appWindow.close),
  ];

  // We first init the systray menu and then add the menu entries
  await _systemTray.initSystemTray(
    title: "system tray",
    iconPath: path,
  );

  await _systemTray.setContextMenu(menu);

  // handle system tray event
  _systemTray.registerSystemTrayEventHandler((eventName) {
    debugPrint("eventName: $eventName");
    if (eventName == "leftMouseDown") {
    } else if (eventName == "leftMouseUp") {
      _systemTray.popUpContextMenu();
    } else if (eventName == "rightMouseDown") {
    } else if (eventName == "rightMouseUp") {
      _appWindow.show();
    }
  });
}

Additional Resources #

Recommended library that supports window control:

Q&A #

  1. Q: If you encounter the following compilation error

    Undefined symbols for architecture x86_64:
      "___gxx_personality_v0", referenced from:
          ...
    

    A: add libc++.tbd

    1. open example/macos/Runner.xcodeproj
    2. add 'libc++.tbd' to TARGET runner 'Link Binary With Libraries'
    
278
likes
140
points
5.47k
downloads

Publisher

unverified uploader

Weekly Downloads

system_tray that makes it easy to customize tray and work with your Flutter desktop app.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path

More

Packages that depend on system_tray