global.dart 2.8 KB

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