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

Optimize proxies page and access page

Update flutter and pub dependencies

Optimize more details
2025-09-07 06:14:48 +08:00

63 lines
1.6 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(String message) {
coreEventManager.sendEvent(
CoreEvent(type: CoreEventType.crash, data: message),
);
super.onServiceCrash(message);
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}