Files
MWClash/lib/manager/tray_manager.dart
chen08209 1154e7b245 Optimize desktop view
Optimize logs, requests, connection pages

Optimize windows tray auto hide

Optimize some details

Update core
2025-07-29 10:43:05 +08:00

62 lines
1.3 KiB
Dart
Executable File

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<TrayManager> createState() => _TrayContainerState();
}
class _TrayContainerState extends ConsumerState<TrayManager> 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(bringAppToFront: true);
}
@override
void onTrayMenuItemClick(MenuItem menuItem) {
render?.active();
super.onTrayMenuItemClick(menuItem);
}
@override
onTrayIconMouseDown() {
window?.show();
}
@override
dispose() {
trayManager.removeListener(this);
super.dispose();
}
}