betrayal 1.2.2 copy "betrayal: ^1.2.2" to clipboard
betrayal: ^1.2.2 copied to clipboard

outdated

Integrate your app into the system tray and add custom icons and react to user input. Use widget wrappers to treat the notification area as part of your UI.

skip to content

A capable tray icon plugin for Windows.

🔗 package on pub.dev
🔗 source on github.com
🔗 dart docs api reference

Manage multiple icons 👨‍👩‍👦‍👦,
generate their images at runtime 🎨
and compose them just like a widget 🎶

Features #

pub score pub version (including pre-releases) [joke shield1](#) pub publisher

  • Control multiple tray icons
  • Many options for setting the tray icons image
    • .ico file either from the file system or the Flutter assets directory
    • Set the pixels directly through an image buffer - you can use this to dynamically create an image via canvas!
    • Use default system icons like the ❔ or the elevation prompt 🛡️
  • Widget api - treat the tray icon as part of your UI and compose it in your build methods

https://user-images.githubusercontent.com/29630575/163495162-1cbdbc94-095f-48c6-ad86-a1f5ee809481.mp4

Usage #

After you've added betrayal to your dependencies via flutter pub add betrayal and flutter pub get, you can start to use it:

import 'package:betrayal/betrayal.dart';

// ...

@override
Widget build(BuildContext context) => MaterialApp(
  home: Scaffold(
    appBar: AppBar(
      title: const Text("Look at the system tray 👀")
    ),
    body: Center(
      // The icon will be visible aslong as the [TrayIconWidget] will be built
      child: TrayIconWidget(
        winIcon: WinIcon.application,
        tooltip: "Here I am!"
        child: FlutterLogo()
      )
    )
  )
);

If you just want a tray icon, that's pretty much all you need to know.

There is, however, also a quick-guide README.md, four example applications and of course the API docs, if you do want to learn more.

Don't hesitate to file an issue, I'll have a look at it eventually 😊

Development #

Style #

Use conventionalcommits.org/en/v1.0.0 for commits.
Use dart.dev/guides/language/effective-dartdocumentation for docs.

Overview #

  graph LR;
    BetrayalPlugin o----o |connects via platform channel to| betrayal_plugin.cpp
    subgraph dart
    TrayIconWidget -- manages --> TrayIcon -- calls --> BetrayalPlugin
    TrayIcon -- uses --> TrayIconImageDelegate -- calls --> BetrayalPlugin
    BetrayalLogConfig
    end
    subgraph native
    betrayal_plugin.cpp -- holds --> IconManager.hpp
    IconManager.hpp -- provides TrayIcon.hpp to --> betrayal_plugin.cpp
    betrayal_plugin.cpp -- calls --> TrayIcon.hpp
    end
    click BetrayalPlugin "https://github.com/benthillerkus/betrayal/blob/main/lib/src/plugin.dart"
    click TrayIcon "https://github.com/benthillerkus/betrayal/blob/main/lib/src/imperative.dart"
    click TrayIconWidget "https://github.com/benthillerkus/betrayal/blob/main/lib/src/widgets.dart"
    click TrayIconImageDelegate "https://github.com/benthillerkus/betrayal/blob/main/lib/src/image.dart"
    click betrayal_plugin.cpp "https://github.com/benthillerkus/betrayal/blob/main/windows/betrayal_plugin.cpp"
    click IconManager.hpp "https://github.com/benthillerkus/betrayal/blob/main/windows/icon_manager.hpp"
    click TrayIcon.hpp "https://github.com/benthillerkus/betrayal/blob/main/windows/tray_icon.hpp"
5
likes
0
points
42
downloads

Publisher

verified publisherbent.party

Weekly Downloads

Integrate your app into the system tray and add custom icons and react to user input. Use widget wrappers to treat the notification area as part of your UI.

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, logging, path

More

Packages that depend on betrayal