init method

  1. @override
Future<void> init()
override

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()}');
}