Optimize logs, requests, connection pages Optimize windows tray auto hide Optimize some details Update core
62 lines
1.3 KiB
Dart
Executable File
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();
|
|
}
|
|
}
|