global.dart 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'package:flutter/foundation.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/services.dart';
  4. import 'package:get/get.dart';
  5. import 'package:vnote_device_plugin/vnote_device_plugin_platform_interface.dart';
  6. import 'package:vitalapp/architecture/network_connectivity.dart';
  7. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  8. import 'package:vitalapp/managers/index.dart';
  9. import 'package:vitalapp/managers/interfaces/permission.dart';
  10. import 'package:vitalapp/rpc.dart';
  11. import 'package:vitalapp/store/store.dart';
  12. import 'package:fis_common/logger/logger.dart';
  13. import 'architecture/app_parameters.dart';
  14. abstract class Global {
  15. static Future<void> init() async {
  16. logger.i("Global init start...");
  17. // 锁定横屏
  18. await SystemChrome.setPreferredOrientations([
  19. DeviceOrientation.landscapeLeft,
  20. DeviceOrientation.landscapeRight,
  21. ]);
  22. // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
  23. SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
  24. SystemChrome.setSystemUIChangeCallback((systemOverlaysAreVisible) async {
  25. await Future.delayed(const Duration(seconds: 1));
  26. SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
  27. });
  28. SystemChrome.setSystemUIOverlayStyle(
  29. const SystemUiOverlayStyle(
  30. statusBarColor: Colors.transparent,
  31. statusBarIconBrightness: Brightness.light,
  32. ),
  33. );
  34. // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
  35. // 日志
  36. if (kReleaseMode) {
  37. // 生产环境
  38. Get.isLogEnable = false;
  39. } else {
  40. // debug/profile 环境
  41. logger.setMinimumLevel(LogLevel.Degbug);
  42. }
  43. await logger.init();
  44. // Loading工具
  45. PromptBox.init();
  46. /// 预设配置
  47. await AppParameters.load();
  48. // 状态
  49. await Store.init();
  50. // 开始检测网络状态
  51. netChecker.run();
  52. _initRpc();
  53. /// 全局管理器中心
  54. ManagerCenter.load();
  55. /// 初始化动态权限
  56. _initPermission();
  57. /// 设备测量插件初始化
  58. await VnoteDevicePluginPlatform.instance.init();
  59. logger.i("Global init finish...");
  60. }
  61. static void _initRpc() {
  62. _updateRpcHostPath(Store.app.serverUrl);
  63. }
  64. static void _updateRpcHostPath(String hostPath) {
  65. final uri = Uri.parse(hostPath);
  66. rpc.setServerHost("${uri.host}:${uri.port}", uri.scheme == 'https');
  67. rpc.clearCache();
  68. }
  69. static Future<void> _initPermission() async {
  70. IPermissionManager permissionManager = Get.find<IPermissionManager>();
  71. await permissionManager.requestLocationPermission();
  72. await permissionManager.requestBluetoothConnectPermission();
  73. await permissionManager.requestBluetoothAdvertisePermission();
  74. await permissionManager.requestBluetoothScanPermission();
  75. }
  76. }