Files
MWClash/lib/common/system.dart
chen08209 e6da643186 Support desktop hotkey
Support android ipv6 inbound

Support android system dns

fix some bugs
2024-12-06 19:24:11 +08:00

53 lines
1.2 KiB
Dart

import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:fl_clash/plugins/app.dart';
import 'package:flutter/services.dart';
import 'package:window_manager/window_manager.dart';
import 'window.dart';
class System {
static System? _instance;
System._internal();
factory System() {
_instance ??= System._internal();
return _instance!;
}
bool get isDesktop =>
Platform.isWindows || Platform.isMacOS || Platform.isLinux;
get isAdmin async {
if (!Platform.isWindows) return false;
final result = await Process.run('net', ['session'], runInShell: true);
return result.exitCode == 0;
}
Future<int> get version async {
final deviceInfo = await DeviceInfoPlugin().deviceInfo;
return switch (Platform.operatingSystem) {
"macos" => (deviceInfo as MacOsDeviceInfo).majorVersion,
"android" => (deviceInfo as AndroidDeviceInfo).version.sdkInt,
"windows" => (deviceInfo as WindowsDeviceInfo).majorVersion,
String() => 0
};
}
back() async {
await app?.moveTaskToBack();
await window?.hide();
}
exit() async {
if (Platform.isAndroid) {
await SystemNavigator.pop();
}
await window?.close();
}
}
final system = System();