鸿蒙 白屏问题
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
// ============================================================
|
||||
// 闲言APP — 应用入口
|
||||
// 创建时间: 2026-04-20
|
||||
// 更新时间: 2026-05-17
|
||||
// 更新时间: 2026-05-18
|
||||
// 作用: main 函数,初始化存储 + 液态玻璃 + 异常捕获 + 启动 App
|
||||
// 上次更新: v5.9 新增全局错误捕获(Isolate/Flutter/Zone三层防护)定位鸿蒙白屏
|
||||
// 上次更新: v6.1 OHOS端绕过Catcher2直接runApp+每步详细日志定位白屏
|
||||
// ============================================================
|
||||
|
||||
import 'dart:async';
|
||||
@@ -29,6 +29,7 @@ import 'core/services/clipboard_monitor_service.dart';
|
||||
import 'core/storage/app_kv_store.dart';
|
||||
import 'core/storage/kv_storage.dart';
|
||||
import 'core/utils/logger.dart';
|
||||
import 'core/utils/platform_utils.dart' as pu;
|
||||
import 'core/registry/page_registry.dart';
|
||||
import 'core/router/app_router.dart';
|
||||
import 'editor/services/3d/platform_3d_service.dart';
|
||||
@@ -40,6 +41,7 @@ void main() async {
|
||||
runZonedGuarded(
|
||||
() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] main() 开始执行');
|
||||
|
||||
FlutterError.onError = (FlutterErrorDetails details) {
|
||||
FlutterError.presentError(details);
|
||||
@@ -64,40 +66,48 @@ void main() async {
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
|
||||
SystemChrome.setSystemUIOverlayStyle(
|
||||
const SystemUiOverlayStyle(
|
||||
statusBarColor: Colors.black,
|
||||
statusBarIconBrightness: Brightness.light,
|
||||
statusBarBrightness: Brightness.dark,
|
||||
systemNavigationBarColor: Colors.black,
|
||||
systemNavigationBarIconBrightness: Brightness.light,
|
||||
systemNavigationBarDividerColor: Colors.black,
|
||||
statusBarColor: Colors.transparent,
|
||||
statusBarIconBrightness: Brightness.dark,
|
||||
statusBarBrightness: Brightness.light,
|
||||
systemNavigationBarColor: Colors.transparent,
|
||||
systemNavigationBarIconBrightness: Brightness.dark,
|
||||
systemNavigationBarDividerColor: Colors.transparent,
|
||||
),
|
||||
);
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] SystemChrome 配置完成');
|
||||
|
||||
try {
|
||||
await KvStorage.init();
|
||||
kvStorageReady = true;
|
||||
Log.i('KV 存储初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] KvStorage 初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('KV 存储初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await AppKVStore.init();
|
||||
Log.i('AppKVStore (Hive) 初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] AppKVStore 初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('AppKVStore 初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await LiquidGlassWidgets.initialize();
|
||||
Log.i('LiquidGlassWidgets 初始化完成');
|
||||
if (!pu.isOhos) {
|
||||
await LiquidGlassWidgets.initialize();
|
||||
Log.i('LiquidGlassWidgets 初始化完成');
|
||||
} else {
|
||||
Log.i('🟢 [OHOS] 跳过 LiquidGlassWidgets 初始化');
|
||||
}
|
||||
} catch (e, st) {
|
||||
Log.e('LiquidGlassWidgets 初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await Platform3DService.instance.detectDeviceCapability();
|
||||
Log.i('3D平台设备检测完成 (lowEnd=${Platform3DService.instance.isLowEnd})');
|
||||
if (pu.isOhos)
|
||||
Log.i(
|
||||
'🟢 [OHOS] 3D设备检测完成 (lowEnd=${Platform3DService.instance.isLowEnd})',
|
||||
);
|
||||
} catch (e, st) {
|
||||
Log.e('3D平台设备检测失败', e, st);
|
||||
}
|
||||
@@ -110,7 +120,7 @@ void main() async {
|
||||
|
||||
try {
|
||||
await DeepLinkService.init();
|
||||
Log.i('深度链接服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 深度链接服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('深度链接服务初始化失败', e, st);
|
||||
}
|
||||
@@ -118,85 +128,90 @@ void main() async {
|
||||
try {
|
||||
SharingReceiverService().init();
|
||||
SharingReceiverService().setNavigatorKey(rootNavigatorKey);
|
||||
Log.i('分享接收服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 分享接收服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('分享接收服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await LocalNotificationService.init();
|
||||
Log.i('本地通知服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 本地通知服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('本地通知服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await ScreenWakeService.init();
|
||||
Log.i('屏幕常亮服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 屏幕常亮服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('屏幕常亮服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await SoundService.init();
|
||||
Log.i('音效服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 音效服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('音效服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await BatteryOptimizationService.init();
|
||||
Log.i('电池优化服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 电池优化服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('电池优化服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await ReadlaterReminderService.startMonitoring();
|
||||
Log.i('稍后读提醒服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 稍后读提醒服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('稍后读提醒服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await ChatMigrationService.migrateIfNeeded();
|
||||
Log.i('聊天数据迁移检查完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 聊天数据迁移检查完成');
|
||||
} catch (e, st) {
|
||||
Log.e('聊天数据迁移检查失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await HomeWidgetService.instance.init();
|
||||
Log.i('桌面小组件服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 桌面小组件服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('桌面小组件服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
try {
|
||||
await ClipboardMonitorService.instance.initFromStore();
|
||||
Log.i('剪贴板监控服务初始化完成');
|
||||
if (pu.isOhos) Log.i('🟢 [OHOS] 剪贴板监控服务初始化完成');
|
||||
} catch (e, st) {
|
||||
Log.e('剪贴板监控服务初始化失败', e, st);
|
||||
}
|
||||
|
||||
Catcher2(
|
||||
runAppFunction: () {
|
||||
runApp(
|
||||
LiquidGlassWidgets.wrap(
|
||||
child: const ProviderScope(child: XianyanApp()),
|
||||
),
|
||||
);
|
||||
},
|
||||
debugConfig: Catcher2Options(
|
||||
SilentReportMode(),
|
||||
[_RateLimitedHandler()],
|
||||
localizationOptions: [
|
||||
LocalizationOptions.buildDefaultChineseOptions(),
|
||||
],
|
||||
),
|
||||
releaseConfig: Catcher2Options(SilentReportMode(), []),
|
||||
profileConfig: Catcher2Options(SilentReportMode(), []),
|
||||
);
|
||||
if (pu.isOhos) {
|
||||
Log.i('🟢 [OHOS] 所有服务初始化完成,准备 runApp(绕过 Catcher2)');
|
||||
final app = const ProviderScope(child: XianyanApp());
|
||||
Log.i('🟢 [OHOS] ProviderScope + XianyanApp 创建完成');
|
||||
runApp(app);
|
||||
Log.i('🟢 [OHOS] runApp() 已调用');
|
||||
} else {
|
||||
Catcher2(
|
||||
runAppFunction: () {
|
||||
final app = const ProviderScope(child: XianyanApp());
|
||||
runApp(LiquidGlassWidgets.wrap(child: app));
|
||||
},
|
||||
debugConfig: Catcher2Options(
|
||||
SilentReportMode(),
|
||||
[_RateLimitedHandler()],
|
||||
localizationOptions: [
|
||||
LocalizationOptions.buildDefaultChineseOptions(),
|
||||
],
|
||||
),
|
||||
releaseConfig: Catcher2Options(SilentReportMode(), []),
|
||||
profileConfig: Catcher2Options(SilentReportMode(), []),
|
||||
);
|
||||
}
|
||||
},
|
||||
(Object error, StackTrace stack) {
|
||||
Log.e('🔥 Zone uncaught error', error, stack);
|
||||
@@ -225,7 +240,6 @@ class _RateLimitedHandler extends ReportHandler {
|
||||
bool isContextRequired() => false;
|
||||
}
|
||||
|
||||
/// 页面注册表强制验证
|
||||
void _validatePageRegistry() {
|
||||
final errors = PageRegistry.validateAll();
|
||||
if (errors.isNotEmpty) {
|
||||
|
||||
Reference in New Issue
Block a user