123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/services.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/consts/devices.dart';
- import 'package:vitalapp/database/db.dart';
- import 'package:vnote_device_plugin/consts/status.dart';
- import 'package:vnote_device_plugin/events/global_event_handler.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';
- import 'managers/interfaces/account.dart';
- /// 【全局】 是否在线
- bool get kIsOnline => netChecker.isOnline;
- abstract class Global {
- static Future<void> init() async {
- // 日志
- if (kReleaseMode) {
- // 生产环境
- Get.isLogEnable = false;
- } else {
- // debug/profile 环境
- logger.setMinimumLevel(LogLevel.Degbug);
- }
- await logger.init();
- 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: []);
- // Loading工具
- PromptBox.init();
- /// 预设配置
- await AppParameters.load();
- // 状态
- await Store.init();
- // 开始检测网络状态
- netChecker.run();
- await db.init();
- _initRpc();
- /// 全局管理器中心
- ManagerCenter.load();
- _checkIsLogin();
- /// 初始化动态权限
- _initPermission();
- /// 设备测量插件初始化
- await _initDevices();
- logger.i("Global init finish...");
- }
- static void _initRpc() {
- RpcSettingCache.setRpcHostPath(Store.app.serverUrl);
- }
- static Future<void> _initPermission() async {
- IPermissionManager permissionManager = Get.find<IPermissionManager>();
- await permissionManager.requestPermissions([
- 'Location',
- 'BluetoothConnect',
- 'BluetoothScan',
- 'BluetoothAdvertise',
- 'InstallPackages',
- 'Camera',
- ]);
- // await permissionManager.requestBluetoothConnectPermission();
- // await permissionManager.requestBluetoothAdvertisePermission();
- // await permissionManager.requestBluetoothScanPermission();
- // await permissionManager.requestInstallPackagesPermission();
- }
- static Future<void> _checkIsLogin() async {
- if (kIsOnline) {
- final accountController = Get.find<IAccountManager>();
- await accountController.getOperationPermission();
- }
- }
- static Future<void> _initDevices() async {
- // TODO: 后续改成按后门配置开启
- await VnoteDevicePluginPlatform.instance.init(true);
- final List<_DeviceStatusTipsHandler> statusHandlers = [];
- for (int status in DeviceConsts.STATUS_DESC_MAP.keys) {
- final message = DeviceConsts.STATUS_DESC_MAP[status]!;
- statusHandlers.add(_DeviceStatusTipsHandler(status, message));
- }
- GlobalDeviceEventHandler.setup(statusHandlers: statusHandlers);
- }
- }
- class _DeviceStatusTipsHandler extends DeviceEventStatusHandler {
- late final String _msg;
- _DeviceStatusTipsHandler(int status, String msg) : super(status) {
- _msg = msg;
- }
- String get message => _msg;
- @override
- void handle(Map<String, dynamic>? data) {
- // PromptBox.toast(message);
- Get.snackbar("提示", message);
- }
- }
|