Add linux deb dependencies Add backup recovery strategy select Support custom text scaling Optimize the display of different text scale Optimize windows setup experience Optimize startTun performance Optimize android tv experience Optimize default option Optimize computed text size Optimize hyperOS freeform window Add developer mode Update core Optimize more details
101 lines
2.2 KiB
Dart
101 lines
2.2 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:fl_clash/common/common.dart';
|
|
import 'package:fl_clash/providers/providers.dart';
|
|
import 'package:fl_clash/state.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
class AppStateManager extends ConsumerStatefulWidget {
|
|
final Widget child;
|
|
|
|
const AppStateManager({
|
|
super.key,
|
|
required this.child,
|
|
});
|
|
|
|
@override
|
|
ConsumerState<AppStateManager> createState() => _AppStateManagerState();
|
|
}
|
|
|
|
class _AppStateManagerState extends ConsumerState<AppStateManager>
|
|
with WidgetsBindingObserver {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
WidgetsBinding.instance.addObserver(this);
|
|
ref.listenManual(layoutChangeProvider, (prev, next) {
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
if (prev != next) {
|
|
globalState.cacheHeightMap = {};
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
@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,
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Listener(
|
|
onPointerHover: (_) {
|
|
render?.resume();
|
|
},
|
|
child: widget.child,
|
|
);
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|