From 57a6fd6fc89dd4a063135b7da95f605dc83195f1 Mon Sep 17 00:00:00 2001 From: cialloo Date: Tue, 23 Jul 2024 21:43:55 +0800 Subject: [PATCH] feat: tray --- lib/home_page.dart | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/lib/home_page.dart b/lib/home_page.dart index c3cba83..1184db5 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:window_manager/window_manager.dart'; import 'package:winui_n2n/control_page.dart'; import 'package:winui_n2n/about_page.dart'; import 'package:winui_n2n/logger_page.dart'; import 'package:winui_n2n/main.dart'; import 'package:winui_n2n/setting_page.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:tray_manager/tray_manager.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @@ -13,9 +15,34 @@ class HomePage extends StatefulWidget { State createState() => _HomePageState(); } -class _HomePageState extends State { +class _HomePageState extends State with TrayListener { int _selectedIndex = 0; + @override + void initState() { + trayManager.addListener(this); + trayManager.setIcon(''); // TODO + Menu menu = Menu( + items: [ + MenuItem( + key: 'show_window', + label: 'Show Window', + onClick: (menuItem) { + windowManager.show(); + }, + ), + ], + ); + trayManager.setContextMenu(menu); + super.initState(); + } + + @override + void dispose() { + trayManager.removeListener(this); + super.dispose(); + } + Widget _homePageShow() { if (_selectedIndex == 0) { return const ControlPage(); @@ -95,4 +122,14 @@ class _HomePageState extends State { ), ); } + + @override + void onTrayIconMouseDown() { + trayManager.popUpContextMenu(); + } + + @override + void onTrayIconRightMouseDown() { + trayManager.popUpContextMenu(); + } }