鸿蒙 白屏问题
This commit is contained in:
@@ -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,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user