Compare commits

...

2 Commits

Author SHA1 Message Date
415280acb8 mod: 弹幕暂停逻辑 2024-04-03 23:37:19 +08:00
888f9d3d60 Merge branch 'main' into feature-danmaku 2024-04-03 23:23:49 +08:00

View File

@ -55,13 +55,7 @@ class _PlDanmakuState extends State<PlDanmaku> {
..addStatusLister(playerListener) ..addStatusLister(playerListener)
..addPositionListener(videoPositionListen); ..addPositionListener(videoPositionListen);
} }
playerController.isOpenDanmu.listen((p0) { danmakuStatusListen();
if (p0 && !_plDanmakuController.initiated) {
_plDanmakuController.initiate(
playerController.duration.value.inMilliseconds,
playerController.position.value.inMilliseconds);
}
});
blockTypes = playerController.blockTypes; blockTypes = playerController.blockTypes;
showArea = playerController.showArea; showArea = playerController.showArea;
opacityVal = playerController.opacityVal; opacityVal = playerController.opacityVal;
@ -111,6 +105,20 @@ class _PlDanmakuState extends State<PlDanmaku> {
} }
} }
// 弹幕开关状态监听
void danmakuStatusListen() {
playerController.isOpenDanmu.listen((p0) {
if (p0 && !_plDanmakuController.initiated) {
_plDanmakuController.initiate(
playerController.duration.value.inMilliseconds,
playerController.position.value.inMilliseconds);
} else {
playerController.danmakuController!.pause();
playerController.danmakuController!.clear();
}
});
}
@override @override
void dispose() { void dispose() {
playerController.removePositionListener(videoPositionListen); playerController.removePositionListener(videoPositionListen);
@ -122,10 +130,7 @@ class _PlDanmakuState extends State<PlDanmaku> {
return LayoutBuilder(builder: (context, box) { return LayoutBuilder(builder: (context, box) {
// double initDuration = box.maxWidth / 12; // double initDuration = box.maxWidth / 12;
return Obx( return Obx(
() => AnimatedOpacity( () => DanmakuView(
opacity: playerController.isOpenDanmu.value ? 1 : 0,
duration: const Duration(milliseconds: 100),
child: DanmakuView(
createdController: (DanmakuController e) async { createdController: (DanmakuController e) async {
playerController.danmakuController = _controller = e; playerController.danmakuController = _controller = e;
}, },
@ -136,15 +141,13 @@ class _PlDanmakuState extends State<PlDanmaku> {
hideTop: blockTypes.contains(5), hideTop: blockTypes.contains(5),
hideScroll: blockTypes.contains(2), hideScroll: blockTypes.contains(2),
hideBottom: blockTypes.contains(4), hideBottom: blockTypes.contains(4),
duration: duration: danmakuDurationVal / playerController.playbackSpeed,
danmakuDurationVal / playerController.playbackSpeed,
strokeWidth: strokeWidth, strokeWidth: strokeWidth,
// initDuration / // initDuration /
// (danmakuSpeedVal * widget.playerController.playbackSpeed), // (danmakuSpeedVal * widget.playerController.playbackSpeed),
), ),
statusChanged: (isPlaying) {}, statusChanged: (isPlaying) {},
), ),
),
); );
}); });
} }