123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/services.dart';
- import 'package:plugin_platform/engine/directory/directory_util.dart';
- import 'package:plugin_platform/engine/sp/sp_util.dart';
- import 'package:plugin_platform/engine/cache/local_cache_manager.dart';
- import 'package:shared/utils/log_utils.dart';
- import 'package:plugin_basic/provider/app_config/app_config_service.dart';
- /*
- * Main函数入口的初始化
- */
- class AppInitializer {
- // 私有的构造函数,防止实例化
- AppInitializer._();
- /*
- * 1.入口初始化方法 - Platform 插件中的Engine其他功能初始化
- * main.dart 中宿主的配置
- */
- static void initialize() async {
- //FT框架初始化
- WidgetsFlutterBinding.ensureInitialized();
- //初始化SP
- await SPUtil.getInstance();
- //Log框架初始化
- Log.init(isDebug: !kReleaseMode);
- //指定页面的展示方向为哪一种,常用的三种屏幕方向,支持横屏
- SystemChrome.setPreferredOrientations([
- DeviceOrientation.portraitUp,
- // DeviceOrientation.landscapeLeft,
- // DeviceOrientation.landscapeRight,
- ]);
- //处理显示区域
- SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);
- }
- /*
- * 2.延迟初始化,一般是在用户同意隐私权限之后再调用
- * 同意权限之后的其他插件初始化,用于宿主的配置
- */
- static Future<void> delayInitialize({
- List<Future<void> Function()>? futureTasks,
- List<void Function()>? normalTasks,
- }) async {
- // 路径管理工具类 (SD卡,沙盒等路径获取)
- setInitDir(initTempDir: true, initAppDocDir: true, initAppSupportDir: true, initStorageDir: false);
- // 收集所有需要等待的Future
- final List<Future> futures = [
- Future.delayed(const Duration(milliseconds: 1000)), // 默认1秒延时
- DirectoryUtil.getInstance(), // SD卡管控
- localCache.init(), //Hive本地缓存初始化
- //AppConfig服务
- AppConfigService.getInstance().initAsync(),
- ];
- // 如果提供了 futureTasks,调用并添加到 futures 列表
- if (futureTasks != null) {
- for (var task in futureTasks) {
- futures.add(task());
- }
- }
- // 如果提供了 normalTasks,将它们包装成 Future 并添加到 futures 列表
- if (normalTasks != null) {
- for (var task in normalTasks) {
- futures.add(Future(() {
- task();
- }));
- }
- }
- // 等待所有 Future 完成
- await Future.wait(futures);
- }
- /*
- * 3.入口初始化方法 - Platform 插件中的Engine其他功能初始化
- * 独立运行模块中的 main.dart 配置,用于测试
- */
- static Future initializeRunalone() async {
- //FT框架初始化
- WidgetsFlutterBinding.ensureInitialized();
- //初始化SP
- await SPUtil.getInstance();
- //Log框架初始化
- Log.init(isDebug: !kReleaseMode);
- //延迟初始化的插件在独立运行的时候一起初始化了
- setInitDir(initTempDir: true, initAppDocDir: true, initAppSupportDir: true, initStorageDir: false);
- DirectoryUtil.getInstance(); //SD卡管控
- localCache.init(); //Hive本地缓存初始化
- //AppConfig服务
- await AppConfigService.getInstance().initAsync();
- //指定页面的展示方向为哪一种,常用的三种屏幕方向
- SystemChrome.setPreferredOrientations([
- DeviceOrientation.portraitUp,
- // DeviceOrientation.landscapeLeft,
- // DeviceOrientation.landscapeRight,
- ]);
- //处理显示区域
- SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);
- }
- }
|