Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ethan
/
appframe
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit 8ef84934
authored
2026-05-27 10:04:13 +0800
by
tanghuan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
解决因为使用AnnotatedRegion实现AppBar透明背景效果时,操作H5 video全屏播放会卡住的问题。
1 parent
9a1a3a9b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
36 deletions
lib/app.dart
lib/ui/pages/web_page.dart
lib/app.dart
View file @
8ef8493
...
...
@@ -3,6 +3,7 @@ import 'dart:io';
import
'package:appframe/l10n/gen/app_localizations.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'config/routes.dart'
;
...
...
@@ -10,29 +11,35 @@ class App extends StatelessWidget {
const
App
({
super
.
key
});
@override
Widget
build
(
BuildContext
context
)
=>
Platform
.
isIOS
?
CupertinoApp
.
router
(
routerConfig:
router
,
title:
'班小二'
,
theme:
const
CupertinoThemeData
(
primaryColor:
CupertinoColors
.
systemBlue
),
localizationsDelegates:
AppLocalizations
.
localizationsDelegates
,
supportedLocales:
AppLocalizations
.
supportedLocales
,
// // === 为 iOS 添加本地化配置 ===
// localizationsDelegates: const [
// GlobalMaterialLocalizations.delegate, // 为Material组件提供本地化
// GlobalCupertinoLocalizations.delegate, // 为Cupertino组件提供本地化
// GlobalWidgetsLocalizations.delegate, // 定义文本方向等
// ],
// supportedLocales: const [
// Locale('zh', 'CN'), // 中文(中国)
// Locale('en', 'US'), // 英语(美国)
// ],
)
:
MaterialApp
.
router
(
routerConfig:
router
,
title:
'班小二'
,
theme:
ThemeData
(
primarySwatch:
Colors
.
blue
),
supportedLocales:
AppLocalizations
.
supportedLocales
,
localizationsDelegates:
AppLocalizations
.
localizationsDelegates
,
);
Widget
build
(
BuildContext
context
)
{
final
Widget
app
=
Platform
.
isIOS
?
CupertinoApp
.
router
(
routerConfig:
router
,
title:
'班小二'
,
theme:
const
CupertinoThemeData
(
primaryColor:
CupertinoColors
.
systemBlue
),
localizationsDelegates:
AppLocalizations
.
localizationsDelegates
,
supportedLocales:
AppLocalizations
.
supportedLocales
,
)
:
MaterialApp
.
router
(
routerConfig:
router
,
title:
'班小二'
,
theme:
ThemeData
(
primarySwatch:
Colors
.
blue
),
supportedLocales:
AppLocalizations
.
supportedLocales
,
localizationsDelegates:
AppLocalizations
.
localizationsDelegates
,
);
// 全局默认状态栏样式兑底:透明背景 + 深色图标。
// 作为最外层 AnnotatedRegion 只挂载一次,不会随页面状态变化反复
// 下发命令,避免污染 Android decorView 上 H5 <video> 全屏依赖的
// systemUiVisibility flag。带 AppBar 的页面由 AppBar.systemOverlayStyle
// 在其 region 区域局部覆盖,隐藏 AppBar 后自动回到本全局值。
return
AnnotatedRegion
<
SystemUiOverlayStyle
>(
value:
const
SystemUiOverlayStyle
(
statusBarColor:
Colors
.
transparent
,
statusBarIconBrightness:
Brightness
.
dark
,
statusBarBrightness:
Brightness
.
light
,
),
child:
app
,
);
}
}
lib/ui/pages/web_page.dart
View file @
8ef8493
...
...
@@ -5,7 +5,6 @@ import 'package:appframe/config/env_config.dart';
import
'package:appframe/config/locator.dart'
;
import
'package:appframe/config/routes.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:go_router/go_router.dart'
;
import
'package:shared_preferences/shared_preferences.dart'
;
...
...
@@ -119,16 +118,11 @@ class WebPage extends StatelessWidget {
:
null
,
);
final
child
=
state
.
showAppBar
?
scaffold
:
AnnotatedRegion
<
SystemUiOverlayStyle
>(
value:
const
SystemUiOverlayStyle
(
statusBarColor:
Colors
.
transparent
,
// 设置状态栏背景透明
statusBarIconBrightness:
Brightness
.
dark
,
statusBarBrightness:
Brightness
.
light
,
),
child:
scaffold
,
);
// 不论 showAppBar 是否为 true,都直接使用 scaffold。
// 原因:Android 平台上 setSystemUIOverlayStyle 会修改 decorView 的
// systemUiVisibility flag,污染 H5 <video> 全屏插件赖赖的 flag,
// 导致全屏画面卡死。状态栏样式应在 main.dart 启动时一次性设置。
final
child
=
scaffold
;
// ios 不使用 PopScope
if
(
Platform
.
isIOS
)
{
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment