flutter desktop macos: システムトレイ?画面上部にアイコン出る系アプリの雛形を作る

概要

docker desktopみたいな取り扱いのアプリをflutterで実装する際にやったことのメモ

  • alt + tabの一覧に出さない
  • flutterはデフォでウィンドウ閉じるとプロセス閉じるのでそのあたりの変更
  • ウィンドウを出したり隠したり
  • 画面上部のバーにアプリアイコンを出してウィンドウを出したり隠したり

例によってmacosの対応しかしてない

f:id:Qsk:20211009052642p:plain

ソースはこちら

github.com

alt + tabの一覧に出さない

これはプラットフォーム側での対応が必要 macosの場合は info.plistApplication is agent (UIElement) = true にすればおけ f:id:Qsk:20211006201752p:plain

該当コミット github.com

flutterはデフォでウィンドウ閉じるとプロセス閉じるのでそのあたりの変更

これもプラットフォーム側で対応 macosの場合は AppDelegate.swiftapplicationShouldTerminateAfterLastWindowClosed の返り値をfalseにすればおけ

このままだとウィンドウ閉じたあとに表示する術がないのでウィンドウの表示/非表示を次に対応

該当コミット github.com

ウィンドウを出したり隠したり

window_managerパッケージを使う。 github.com

このパッケージを使ってウィンドウを隠したり表示したりする。他にもサイズ変更だったり最大化の許可/不許可とか色々設定できる。使い方は↑のexample見ればわかると思う。

該当コミット github.com

画面上部のバーにアプリアイコンを出してウィンドウを出したり隠したり

system_trayパッケージを使う。 pub.dev 使い方は↑のexample見ればわかると思う。

該当コミット github.com

おわりに

案外ほしいパッケージはあったりする。ありがたい。 windowslinuxのことはわからない。何もわからない