import 'package:fl_clash/common/common.dart'; import 'package:fl_clash/providers/state.dart'; import 'package:fl_clash/state.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:tray_manager/tray_manager.dart'; class TrayManager extends ConsumerStatefulWidget { final Widget child; const TrayManager({ super.key, required this.child, }); @override ConsumerState createState() => _TrayContainerState(); } class _TrayContainerState extends ConsumerState with TrayListener { @override void initState() { super.initState(); trayManager.addListener(this); ref.listenManual( trayStateProvider, (prev, next) { if (prev != next) { globalState.appController.updateTray(); } }, ); } @override Widget build(BuildContext context) { return widget.child; } @override void onTrayIconRightMouseDown() { trayManager.popUpContextMenu(); } @override void onTrayMenuItemClick(MenuItem menuItem) { render?.active(); super.onTrayMenuItemClick(menuItem); } @override onTrayIconMouseDown() { window?.show(); } @override dispose() { trayManager.removeListener(this); super.dispose(); } }