fix(player): 修正飘心Overlay生命周期

This commit is contained in:
Zhou Weidong committed 2026-10-26 19:00:37 +08:00
1 parent a7d01e0306
commit c0f65042e6
4 files changed
+184 -28

No files matched your search

+10 -2
View File
@@ -39,6 +39,7 @@ import 'widgets/exit_clear_screen_button.dart';
import 'widgets/feed_pull_refresh.dart';
import 'widgets/player_center_toggle.dart';
import 'widgets/player_loading_overlay.dart';
import 'widgets/player_heart_overlay_scope.dart';
import 'widgets/player_more_sheet.dart';
import 'widgets/player_overlay.dart';
import 'widgets/player_overlay_models.dart';
@@ -147,6 +148,8 @@ class _PlayerPageState extends State<PlayerPage>
bool _loadingRemoved = true;
bool _loadingFadeScheduled = false;
bool _loggedLoadingUiVisible = false;
final PlayerHeartOverlayController _heartOverlayController =
PlayerHeartOverlayController();
final Set<String> _precachedPosterUrls = {};
/// 收藏切换后的本地增量:基准是详情快照,切换成功按服务端状态 ±1。
@@ -306,6 +309,7 @@ class _PlayerPageState extends State<PlayerPage>
void dispose() {
WidgetsBinding.instance.removeObserver(this);
appRouteObserver.unsubscribe(this);
_heartOverlayController.dispose();
_spriteAxisService
..removeListener(_handleSpriteFrameChanged)
..dispose();
@@ -701,6 +705,10 @@ class _PlayerPageState extends State<PlayerPage>
),
],
);
final scopedBody = PlayerHeartOverlayScope(
controller: _heartOverlayController,
child: body,
);
final player = AnnotatedRegion<SystemUiOverlayStyle>(
key: const Key('player-system-overlay'),
value: SystemUiOverlayStyle.light.copyWith(
@@ -713,12 +721,12 @@ class _PlayerPageState extends State<PlayerPage>
child: Theme(
data: AppTheme.dark(),
child: widget.embedded
? body
? scopedBody
: Scaffold(
key: const Key('player-scaffold'),
backgroundColor: AppColors.transparent,
resizeToAvoidBottomInset: false,
body: body,
body: scopedBody,
),
),
);