// import 'dart:async';
// import 'package:fis_i18n/i18n.dart';
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:flyinsono/architecture/config/config.dart';
// import 'package:flyinsono/architecture/services/index.dart';
// import 'package:flyinsono/architecture/states/states.dart';
// import 'package:fis_common/web/web_asset_bundle.dart';
// import 'package:fis_common/logger/logger.dart';
// import 'package:flutter/services.dart';
// import 'package:flyinsono/architecture/storage/shared_storage.dart';
// import 'package:flyinsono/architecture/theme.dart';
// import 'package:fis_ui/utils/sizer/sizer.dart';
// import 'package:flyinsono/rpc.dart';
// import 'package:get/get.dart';
// import 'package:fis_theme/theme.dart';
// import 'package:universal_html/js.dart' as js;

// import 'manager/index.dart';

// /// 全局设置
// class LabGlobal {
//   static AssetBundle? _assetBundle;
//   static AssetBundle get assetBundle => _assetBundle!;

//   /// 配置
//   static ConfigService get config => ConfigService.ins;

//   /// 初始化
//   static Future<void> init() async {
//     print('Lab Global init start');
//     WidgetsFlutterBinding.ensureInitialized();
//     await Get.putAsync<SharedStorageService>(() => SharedStorageService.init());

//     // 状态
//     await Store.init();

//     // 日志
//     if (kReleaseMode) {
//       // 生产环境
//       Get.isLogEnable = false;
//     } else {
//       // debug/profile 环境
//       logger.setMinimumLevel(LogLevel.Degbug);
//     }
//     await logger.init();

//     _initAssetBundle();

//     Sizer.init();
//     // 配置
//     final config = await ConfigService.init();
//     Get.put(config);

//     print('currentAddress:${config.data.server.current}');
//     // rpc服务

//     _initRpc();
//     rpc.platform.setRpcUrl(config.data.server.current!);

//     FManagerGuide.setup();
//     // 依赖注入
//     await initServices();

//     // 国际化
//     await _initI18n();

//     print('Global set theme start');
//     // 主题
//     final theme = AppTheme(themeMode: ThemeMode.system);
//     await FTheme.init(theme);
//     Get.put(theme);
//     print('Global set theme end');

//     print('Lab Global init end');
//   }

//   /// TODO 服务器地址 配置部分
//   static String get gateway => "http://192.168.6.103:7312";

//   /// rpc
//   static void _initRpc() {
//     _updateRpcHostPath(gateway);
//     // _updateRpcHostPath("http://api2.flyinsono.com");
//     //监听服务地址更新
//     // bus.on(
//     //   bus.Keys.SERVER_ADDRESS_CHANGED,
//     //   (arg) {
//     //     _updateRpcHostPath(arg);
//     //     Future.delayed(
//     //       Duration(milliseconds: 100),
//     //       () {
//     //         // 等rpc先处理再获取最新服务地址
//     //         // TODO: 更改静态资源路径
//     //         fRootBundle.setResourcePath(
//     //             "${rpc.currentHostAddress}:9001/static/themes");
//     //       },
//     //     );
//     //   },
//     // );
//   }

//   /// 初始化资源包
//   static void _initAssetBundle() {
//     if (kIsWeb) {
//       final jsVersion = js.context["serviceWorkerVersion"];
//       String version = jsVersion?.toString() ??
//           "debug_${DateTime.now().millisecondsSinceEpoch}";
//       _assetBundle = WebPlatformAssetBundle(
//         rootPath: js.context["STATIC_ROOT"]!.toString(),
//         version: version,
//       );
//     } else {
//       _assetBundle = rootBundle;
//     }
//   }

//   static void _updateRpcHostPath(String hostPath) {
//     final uri = Uri.parse(hostPath);
//     rpc.setServerHost("${uri.host}:${uri.port}", uri.scheme == 'https');
//     rpc.clearCache();
//   }

//   // 国际化
//   static Future<void> _initI18n() async {
//     FI18n.setAssetBundle(assetBundle);

//     final curLocale = Store.app.locale;

//     var bookOptions = [
//       FTrKeybookOption.ChineseOption,
//       FTrKeybookOption.EnglishOption,
//       FTrKeybookOption.RussianOption,
//       FTrKeybookOption.SpanishOption,
//       FTrKeybookOption.RomaniaOption,
//     ];

//     await FI18n.init((locale) => Get.updateLocale(locale), bookOptions);
//     await FI18n.load(curLocale);

//     Get.put(FI18n.ins);
//   }
// }
