Files
MWClash/lib/manager/android_manager.dart
chen08209 8b84ddc384 Add android separates the core process
Support core status check and force restart

Update flutter and pub dependencies
2025-08-28 10:45:59 +08:00

61 lines
1.5 KiB
Dart

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';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class AndroidManager extends ConsumerStatefulWidget {
final Widget child;
const AndroidManager({super.key, required this.child});
@override
ConsumerState<AndroidManager> createState() => _AndroidContainerState();
}
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() {
coreEventManager.sendEvent(CoreEvent(type: CoreEventType.crash));
super.onServiceCrash();
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}