Files
MWClash/lib/plugins/service.dart
chen08209 2742c570ce Optimize desktop view
Optimize logs, requests, connection pages

Update core
2025-07-24 10:28:33 +08:00

47 lines
1.1 KiB
Dart

import 'dart:async';
import 'dart:convert';
import 'dart:isolate';
import 'package:fl_clash/common/system.dart';
import 'package:fl_clash/state.dart';
import 'package:flutter/services.dart';
import '../clash/lib.dart';
class Service {
static Service? _instance;
late MethodChannel methodChannel;
ReceivePort? receiver;
Service._internal() {
methodChannel = const MethodChannel('service');
}
factory Service() {
_instance ??= Service._internal();
return _instance!;
}
Future<bool?> init() async {
return await methodChannel.invokeMethod<bool>('init');
}
Future<bool?> destroy() async {
return await methodChannel.invokeMethod<bool>('destroy');
}
Future<bool?> startVpn() async {
final options = await clashLib?.getAndroidVpnOptions();
return await methodChannel.invokeMethod<bool>('startVpn', {
'data': json.encode(options),
});
}
Future<bool?> stopVpn() async {
return await methodChannel.invokeMethod<bool>('stopVpn');
}
}
Service? get service =>
system.isAndroid && !globalState.isService ? Service() : null;