Files
MWClash/lib/manager/android_manager.dart

63 lines
1.6 KiB
Dart
Raw Normal View History

import 'package:fl_clash/core/core.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/core.dart';
import 'package:fl_clash/plugins/app.dart';
import 'package:fl_clash/plugins/service.dart';
import 'package:fl_clash/providers/providers.dart';
2024-04-30 23:38:49 +08:00
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
2024-04-30 23:38:49 +08:00
class AndroidManager extends ConsumerStatefulWidget {
2024-04-30 23:38:49 +08:00
final Widget child;
const AndroidManager({super.key, required this.child});
2024-04-30 23:38:49 +08:00
@override
ConsumerState<AndroidManager> createState() => _AndroidContainerState();
2024-04-30 23:38:49 +08:00
}
class _AndroidContainerState extends ConsumerState<AndroidManager>
with ServiceListener {
@override
void initState() {
super.initState();
ref.listenManual(appSettingProvider.select((state) => state.hidden), (
prev,
next,
) {
app?.updateExcludeFromRecents(next);
}, fireImmediately: true);
ref.listenManual(androidStateProvider, (prev, next) {
if (prev != next) {
service?.syncAndroidState(next);
}
});
service?.addListener(this);
}
@override
Future<void> dispose() async {
service?.removeListener(this);
super.dispose();
}
@override
void onServiceEvent(CoreEvent event) {
coreEventManager.sendEvent(event);
super.onServiceEvent(event);
}
@override
void onServiceCrash(String message) {
coreEventManager.sendEvent(
CoreEvent(type: CoreEventType.crash, data: message),
);
super.onServiceCrash(message);
}
2024-04-30 23:38:49 +08:00
@override
Widget build(BuildContext context) {
return widget.child;
2024-04-30 23:38:49 +08:00
}
}