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

outdated

system_tray that makes it easy to customize tray and work with your Flutter desktop app window **on Windows, macOS and Linux**.

system_tray #

Pub

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

Features #

  • Modify system tray title/icon/tooltip
  • Handle system tray event leftMouseUp/rightMouseUp (only for macos、windows)

Install #

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

dependencies:
  ...
  system_tray: ^0.0.8

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 #

Usage: #

Smallest example:

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

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

  await _systemTray.initSystemTray(
    title: "system tray",
    iconPath: path,
  );

  await _systemTray.setContextMenu(menu);
}

Icon flashing effect example:

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

  final menu = [
    MenuItem(label: 'Show', onClicked: _appWindow.show),
    MenuItem(label: 'Hide', onClicked: _appWindow.hide),
    MenuItem(
      label: 'Start flash tray icon',
      onClicked: () {
        debugPrint("Start flash tray icon");

        _timer ??= Timer.periodic(
          const Duration(milliseconds: 500),
          (timer) {
            _toogleTrayIcon = !_toogleTrayIcon;
            _systemTray.setSystemTrayInfo(
              iconPath: _toogleTrayIcon ? "" : path,
            );
          },
        );
      },
    ),
    MenuItem(
      label: 'Stop flash tray icon',
      onClicked: () {
        debugPrint("Stop flash tray icon");

        _timer?.cancel();
        _timer = null;

        _systemTray.setSystemTrayInfo(
          iconPath: path,
        );
      },
    ),
    MenuSeparator(),
    SubMenu(
      label: "SubMenu",
      children: [
        MenuItem(
          label: 'SubItem1',
          enabled: false,
          onClicked: () {
            debugPrint("click SubItem1");
          },
        ),
        MenuItem(
          label: 'SubItem2',
          onClicked: () {
            debugPrint("click SubItem2");
          },
        ),
        MenuItem(
          label: 'SubItem3',
          onClicked: () {
            debugPrint("click SubItem3");
          },
        ),
      ],
    ),
    MenuSeparator(),
    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,
    toolTip: "How to use system tray with Flutter",
  );

  await _systemTray.setContextMenu(menu);

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

Addition #

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' 
    
251
likes
0
pub points
95%
popularity

Publisher

unverified uploader

system_tray that makes it easy to customize tray and work with your Flutter desktop app window **on Windows, macOS and Linux**.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, path

More

Packages that depend on system_tray