opt: 梳理逻辑
This commit is contained in:
@ -5,7 +5,6 @@ import 'package:pilipala/plugin/pl_player/index.dart';
|
|||||||
class PlDanmakuController {
|
class PlDanmakuController {
|
||||||
PlDanmakuController(this.cid);
|
PlDanmakuController(this.cid);
|
||||||
final int cid;
|
final int cid;
|
||||||
late Duration videoDuration;
|
|
||||||
Map<int,List<DanmakuElem>> dmSegMap = {};
|
Map<int,List<DanmakuElem>> dmSegMap = {};
|
||||||
// 已请求的段落标记
|
// 已请求的段落标记
|
||||||
List<bool> requestedSeg = [];
|
List<bool> requestedSeg = [];
|
||||||
@ -14,9 +13,9 @@ class PlDanmakuController {
|
|||||||
|
|
||||||
static int SEGMENT_LENGTH = 60 * 6 * 1000;
|
static int SEGMENT_LENGTH = 60 * 6 * 1000;
|
||||||
|
|
||||||
void initiate(int progress) {
|
void initiate(int videoDuration, int progress) {
|
||||||
if (requestedSeg.isEmpty) {
|
if (requestedSeg.isEmpty) {
|
||||||
int segCount = (videoDuration.inSeconds / (60 * 6)).ceil();
|
int segCount = (videoDuration / SEGMENT_LENGTH).ceil();
|
||||||
requestedSeg = List<bool>.generate(segCount, (index) => false);
|
requestedSeg = List<bool>.generate(segCount, (index) => false);
|
||||||
}
|
}
|
||||||
queryDanmaku(
|
queryDanmaku(
|
||||||
|
@ -47,9 +47,9 @@ class _PlDanmakuState extends State<PlDanmaku> {
|
|||||||
PlDanmakuController(widget.cid);
|
PlDanmakuController(widget.cid);
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
playerController = widget.playerController;
|
playerController = widget.playerController;
|
||||||
_plDanmakuController.videoDuration = playerController.duration.value;
|
|
||||||
if (enableShowDanmaku || playerController.isOpenDanmu.value) {
|
if (enableShowDanmaku || playerController.isOpenDanmu.value) {
|
||||||
_plDanmakuController.initiate(
|
_plDanmakuController.initiate(
|
||||||
|
playerController.duration.value.inMilliseconds,
|
||||||
playerController.position.value.inMilliseconds
|
playerController.position.value.inMilliseconds
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -60,6 +60,7 @@ class _PlDanmakuState extends State<PlDanmaku> {
|
|||||||
playerController.isOpenDanmu.listen((p0) {
|
playerController.isOpenDanmu.listen((p0) {
|
||||||
if (p0 && !_plDanmakuController.initiated) {
|
if (p0 && !_plDanmakuController.initiated) {
|
||||||
_plDanmakuController.initiate(
|
_plDanmakuController.initiate(
|
||||||
|
playerController.duration.value.inMilliseconds,
|
||||||
playerController.position.value.inMilliseconds
|
playerController.position.value.inMilliseconds
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user