@@ -4,6 +4,7 @@ import 'package:bot_toast/bot_toast.dart';
44import 'package:flutter/cupertino.dart' ;
55import 'package:flutter/material.dart' ;
66import 'package:preference_list/preference_list.dart' ;
7+ import 'package:tray_manager/tray_manager.dart' ;
78import 'package:window_manager/window_manager.dart' ;
89
910import '../utilities/utilities.dart' ;
@@ -29,7 +30,7 @@ class HomePage extends StatefulWidget {
2930 _HomePageState createState () => _HomePageState ();
3031}
3132
32- class _HomePageState extends State <HomePage > with WindowListener {
33+ class _HomePageState extends State <HomePage > with TrayListener , WindowListener {
3334 bool _isPreventClose = false ;
3435 Size _size = _kSizes.first;
3536 Size ? _minSize;
@@ -47,18 +48,37 @@ class _HomePageState extends State<HomePage> with WindowListener {
4748
4849 @override
4950 void initState () {
51+ trayManager.addListener (this );
5052 windowManager.addListener (this );
5153 _init ();
5254 super .initState ();
5355 }
5456
5557 @override
5658 void dispose () {
59+ trayManager.removeListener (this );
5760 windowManager.removeListener (this );
5861 super .dispose ();
5962 }
6063
6164 void _init () async {
65+ await trayManager.setIcon (
66+ Platform .isWindows
67+ ? 'images/tray_icon_original.ico'
68+ : 'images/tray_icon_original.png' ,
69+ );
70+ List <MenuItem > items = [
71+ MenuItem (
72+ key: 'show_window' ,
73+ title: 'Show Window' ,
74+ ),
75+ MenuItem .separator,
76+ MenuItem (
77+ key: 'exit_app' ,
78+ title: 'Exit App' ,
79+ ),
80+ ];
81+ await trayManager.setContextMenu (items);
6282 setState (() {});
6383 }
6484
@@ -747,6 +767,11 @@ class _HomePageState extends State<HomePage> with WindowListener {
747767 );
748768 }
749769
770+ @override
771+ void onTrayIconMouseDown () {
772+ windowManager.show ();
773+ }
774+
750775 @override
751776 void onWindowFocus () {
752777 setState (() {});
@@ -771,7 +796,7 @@ class _HomePageState extends State<HomePage> with WindowListener {
771796 child: Text ('Yes' ),
772797 onPressed: () {
773798 Navigator .of (context).pop ();
774- exit ( 0 );
799+ windowManager. destroy ( );
775800 },
776801 ),
777802 ],
0 commit comments