import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:vitalapp/database/db.dart'; import 'package:vnote_device_plugin/vnote_device_plugin_platform_interface.dart'; import 'package:vitalapp/architecture/network_connectivity.dart'; import 'package:vitalapp/architecture/utils/prompt_box.dart'; import 'package:vitalapp/managers/index.dart'; import 'package:vitalapp/managers/interfaces/permission.dart'; import 'package:vitalapp/rpc.dart'; import 'package:vitalapp/store/store.dart'; import 'package:fis_common/logger/logger.dart'; import 'architecture/app_parameters.dart'; abstract class Global { static Future init() async { logger.i("Global init start..."); // 锁定横屏 await SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, ]); // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); SystemChrome.setSystemUIChangeCallback((systemOverlaysAreVisible) async { await Future.delayed(const Duration(seconds: 1)); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); }); SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( statusBarColor: Colors.transparent, statusBarIconBrightness: Brightness.light, ), ); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); // 日志 if (kReleaseMode) { // 生产环境 Get.isLogEnable = false; } else { // debug/profile 环境 logger.setMinimumLevel(LogLevel.Degbug); } await logger.init(); // Loading工具 PromptBox.init(); /// 预设配置 await AppParameters.load(); // 状态 await Store.init(); // 开始检测网络状态 netChecker.run(); await db.init(); _initRpc(); /// 全局管理器中心 ManagerCenter.load(); /// 初始化动态权限 _initPermission(); /// 设备测量插件初始化 await VnoteDevicePluginPlatform.instance.init(); logger.i("Global init finish..."); } static void _initRpc() { _updateRpcHostPath(Store.app.serverUrl); } static void _updateRpcHostPath(String hostPath) { final uri = Uri.parse(hostPath); rpc.setServerHost("${uri.host}:${uri.port}", uri.scheme == 'https'); rpc.clearCache(); } static Future _initPermission() async { IPermissionManager permissionManager = Get.find(); await permissionManager.requestLocationPermission(); await permissionManager.requestBluetoothConnectPermission(); await permissionManager.requestBluetoothAdvertisePermission(); await permissionManager.requestBluetoothScanPermission(); } }