init method
Initializes the platform interface.
Implementation
@override
Future<void> init() async {
debugPrint('flutter_sing_box 插件初始化 Windows 平台 startTime = ${DateTime.now()}');
final io.Directory dir = await ProfileStorage().getStorageDirectory();
final singBoxResult = await AssetUtil.copyAssetToDirectory(
WindowsConstants.singBoxAsset,
dir.path,
);
if (!singBoxResult) {
throw Exception('复制 sing_box.exe 资源失败');
}
final libcronetResult = await AssetUtil.copyAssetToDirectory(
WindowsConstants.libcronetAsset,
dir.path,
);
if (!libcronetResult) {
throw Exception('复制 libcronet.dll 资源失败');
}
// 释放独立服务程序 clash_sing_helper.exe,供 HelperCli 调用。
final helperResult = await AssetUtil.copyAssetToDirectory(
WindowsConstants.helperAsset,
dir.path,
);
if (!helperResult) {
throw Exception('复制 clash_sing_helper.exe 资源失败');
}
final serviceStatus = await queryServiceStatus();
if (serviceStatus == WindowsServiceStatus.running ||
serviceStatus == WindowsServiceStatus.stopped) {
HelperHttpClient().status();
}
debugPrint('flutter_sing_box 插件初始化 Windows 平台 endTime = ${DateTime.now()}');
}