app-starlock/lib/main.dart
2025-10-16 14:31:19 +08:00

121 lines
4.4 KiB
Dart
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bugly/flutter_bugly.dart';
import 'package:get/get.dart';
import 'package:path/path.dart' as path;
import 'package:provider/provider.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_logic.dart';
import 'package:star_lock/login/register/entity/checkIP_entity.dart';
import 'package:star_lock/mine/about/debug/debug_tool.dart';
import 'package:star_lock/network/api_provider.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/network/start_chart_api.dart';
import 'package:star_lock/talk/starChart/handle/impl/debug_Info_model.dart';
import 'package:star_lock/talk/starChart/status/appLifecycle_observer.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/bugly/bugly_tool.dart';
import 'package:star_lock/tools/callkit_handler.dart';
import 'package:star_lock/tools/device_info_service.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/tools/jverify_one_click_login.dart';
import 'package:star_lock/tools/platform_info_services.dart';
import 'package:star_lock/tools/push/notification_service.dart';
import 'package:star_lock/tools/push/xs_jPhush.dart';
import 'package:star_lock/tools/storage.dart';
import 'package:star_lock/translations/current_locale_tool.dart';
import 'package:star_lock/translations/trans_lib.dart';
import 'apm/apm_helper.dart';
import 'app.dart';
import 'app_settings/app_settings.dart';
import 'tools/store_service.dart';
// 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明
FutureOr<void> main() async {
FlutterBugly.postCatchedException(() async {
WidgetsFlutterBinding.ensureInitialized();
// 创建并注册 AppLifecycleObserver(用于程序是否进入后台的监听)
AppLifecycleObserver appLifecycleObserver = AppLifecycleObserver();
WidgetsBinding.instance.addObserver(appLifecycleObserver);
// await ApmHelper.instance.initApp();
await _setCommonServices();
// 设置国际化信息
await _initTranslation();
final bool isLogin = await getLoginStatus();
if (isLogin) {
await privacySDKInitialization();
}
WidgetsBinding.instance.addPostFrameCallback((_) async {
final bool? openDeBug = await Storage.getBool(isOpenDeBug);
if (openDeBug == true) {
DeBug.showFloatWidget();
}
});
// 如果是ios则初始化获取到voip token
// 上报时判断是否属于国内用户国内用户不上报token 既不触发callkit
if (Platform.isIOS) {
CallKitHandler.setupListener();
String? token = await CallKitHandler.getVoipToken();
print('获取到的VoIP Token: $token');
}
// 在 runApp 之前设置
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
statusBarColor: Colors.transparent, // 状态栏背景色(通常透明)
statusBarIconBrightness: Brightness.dark, // Android: 黑色图标
statusBarBrightness: Brightness.dark, // iOS: 状态栏内容为深色(影响时间等颜色)
),
);
runApp(MyApp(isLogin: isLogin));
});
if (AppPlatform.isAndroid) {
const SystemUiOverlayStyle systemUiOverlayStyle =
SystemUiOverlayStyle(statusBarColor: Colors.transparent);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
// checkChinese();
}
// 设置国际化信息
Future<void> _initTranslation() async => TranslationLoader.loadTranslation();
// 设置包名服务设备信息
Future<void> _setCommonServices() async {
await Get.putAsync(() => StoreService().init());
Get.put(ApiProvider());
Get.put(StartChartApi());
Get.put(ApiRepository(Get.find<ApiProvider>()));
if (F.isLite) {
//上架审核注释 获取设备信息
// await Get.putAsync(() => DeviceInfoService().init());
} else {
await Get.putAsync(() => DeviceInfoService().init());
}
}
//关于隐私协议的初始化
Future<void> privacySDKInitialization() async {
ApmHelper.instance.initSdk();
await Get.putAsync(() => PlatformInfoService().init());
await BuglyTool.init();
// 初始化JPush服务
final XSJPushProvider jpushProvider = XSJPushProvider();
await jpushProvider.initJPushService();
NotificationService().init(); // 初始化通知服务
}