fix(player): 隔离播放资源所有权并修复黑屏
This commit is contained in:
1 parent
54eb5a60a8
commit
bb2c729a7e
9 files changed
+223
-25
No files matched your search
@@ -52,10 +52,12 @@ class PlayerRenderStack extends StatefulWidget {
|
||||
super.key,
|
||||
required this.pageController,
|
||||
required this.slots,
|
||||
this.onCurrentVideoVisible,
|
||||
});
|
||||
|
||||
final PageController pageController;
|
||||
final Map<PlayerRenderSlotRole, PlayerRenderSlotData> slots;
|
||||
final VoidCallback? onCurrentVideoVisible;
|
||||
|
||||
@override
|
||||
State<PlayerRenderStack> createState() => _PlayerRenderStackState();
|
||||
@@ -68,7 +70,10 @@ class _PlayerRenderStackState extends State<PlayerRenderStack> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
_lastCurrentIndex = _currentSlot.index;
|
||||
_log('init current=${_lastCurrentIndex ?? '-'}');
|
||||
_log(
|
||||
'init current=${_lastCurrentIndex ?? '-'} '
|
||||
'pageController=${identityHashCode(widget.pageController)}',
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -86,7 +91,10 @@ class _PlayerRenderStackState extends State<PlayerRenderStack> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_log('dispose current=${_lastCurrentIndex ?? '-'}');
|
||||
_log(
|
||||
'dispose current=${_lastCurrentIndex ?? '-'} '
|
||||
'pageController=${identityHashCode(widget.pageController)}',
|
||||
);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -189,6 +197,9 @@ class _PlayerRenderStackState extends State<PlayerRenderStack> {
|
||||
fallback: slot.fallback,
|
||||
warmSlotReused: slot.warmSlotReused,
|
||||
waitForPlaybackFrame: slot.waitForPlaybackFrame,
|
||||
onVideoVisible: slot.role == PlayerRenderSlotRole.current
|
||||
? widget.onCurrentVideoVisible
|
||||
: null,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user