Files
MWClash/lib/manager/app_state_manager.dart

92 lines
1.9 KiB
Dart
Raw Normal View History

import 'dart:async';
2024-04-30 23:38:49 +08:00
import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/state.dart';
import 'package:flutter/foundation.dart';
2024-04-30 23:38:49 +08:00
import 'package:flutter/material.dart';
class AppStateManager extends StatefulWidget {
2024-04-30 23:38:49 +08:00
final Widget child;
const AppStateManager({
2024-04-30 23:38:49 +08:00
super.key,
required this.child,
});
@override
State<AppStateManager> createState() => _AppStateManagerState();
}
class _AppStateManagerState extends State<AppStateManager>
with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
commonPrint.log("$state");
if (state == AppLifecycleState.paused ||
state == AppLifecycleState.inactive) {
globalState.appController.savePreferences();
} else {
render?.resume();
}
}
@override
void didChangePlatformBrightness() {
globalState.appController.updateBrightness(
WidgetsBinding.instance.platformDispatcher.platformBrightness,
);
}
2024-04-30 23:38:49 +08:00
@override
Widget build(BuildContext context) {
return Listener(
onPointerHover: (_) {
render?.resume();
},
child: widget.child,
2024-04-30 23:38:49 +08:00
);
}
}
class AppEnvManager extends StatelessWidget {
final Widget child;
const AppEnvManager({
super.key,
required this.child,
});
@override
Widget build(BuildContext context) {
if (kDebugMode) {
if (globalState.isPre) {
return Banner(
message: 'DEBUG',
location: BannerLocation.topEnd,
child: child,
);
}
}
if (globalState.isPre) {
return Banner(
message: 'PRE',
location: BannerLocation.topEnd,
child: child,
);
}
return child;
}
}