鸿蒙 白屏问题

This commit is contained in:
Developer
2026-05-18 03:07:50 +08:00
parent 702b41c29f
commit 1bca322600
36 changed files with 8094 additions and 974 deletions

View File

@@ -1,15 +1,16 @@
/// ============================================================
/// 闲言APP — 应用根组件
/// 创建时间: 2026-04-20
/// 更新时间: 2026-05-14
/// 更新时间: 2026-05-18
/// 作用: MaterialApp.router + Riverpod 主题管理 + GlassTheme + flutter_animate
/// 上次更新: 修复锁屏久解锁卡死 — resumed分支使用Future.microtask防阻塞+try-catch保护
/// 上次更新: v6.0 添加OHOS调试日志+ErrorBoundary防白屏
/// ============================================================
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -24,8 +25,23 @@ import '../core/router/app_router.dart';
import '../core/services/device/app_lock_service.dart';
import '../core/theme/app_theme.dart';
import '../core/utils/logger.dart';
import '../core/utils/platform_utils.dart' as pu;
import '../features/settings/providers/theme_settings_provider.dart';
import '../features/settings/presentation/font_management_page.dart';
import '../shared/widgets/app_error_boundary.dart';
class AppScrollBehavior extends MaterialScrollBehavior {
const AppScrollBehavior();
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
PointerDeviceKind.stylus,
PointerDeviceKind.invertedStylus,
PointerDeviceKind.trackpad,
};
}
class XianyanApp extends ConsumerStatefulWidget {
const XianyanApp({super.key});
@@ -77,6 +93,14 @@ class _XianyanAppState extends ConsumerState<XianyanApp>
final settings = ref.watch(themeSettingsProvider);
final fontState = ref.watch(fontManagementProvider);
if (pu.isOhos) {
Log.i(
'XianyanApp build: isDark=${settings.isDark} themeMode=${settings.themeMode} '
'accent=${settings.accentColorId} glass=${settings.glassIntensityId} '
'anim=${settings.animationIntensityId} font=${settings.fontStyleId}',
);
}
Animate.defaultDuration = settings.animationEnabled
? Duration(
milliseconds: (300 * settings.animationIntensity.durationMultiplier)
@@ -154,6 +178,7 @@ class _XianyanAppState extends ConsumerState<XianyanApp>
child: MaterialApp.router(
title: '闲言',
debugShowCheckedModeBanner: false,
scrollBehavior: const AppScrollBehavior(),
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
@@ -175,16 +200,18 @@ class _XianyanAppState extends ConsumerState<XianyanApp>
final isDark = settings.isDark;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarColor: Colors.black,
statusBarColor: Colors.transparent,
statusBarIconBrightness: isDark
? Brightness.light
: Brightness.dark,
statusBarBrightness: isDark
? Brightness.dark
: Brightness.light,
systemNavigationBarColor: Colors.black,
systemNavigationBarIconBrightness: Brightness.light,
systemNavigationBarDividerColor: Colors.black,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: isDark
? Brightness.light
: Brightness.dark,
systemNavigationBarDividerColor: Colors.transparent,
),
child: MediaQuery(
data: MediaQuery.of(
@@ -192,7 +219,9 @@ class _XianyanAppState extends ConsumerState<XianyanApp>
).copyWith(textScaler: TextScaler.noScaling),
child: DefaultTextStyle(
style: const TextStyle(),
child: botWidget,
child: pu.isOhos
? AppErrorBoundary(label: 'RootApp', child: botWidget)
: botWidget,
),
),
);