From 0d96327f344b99424c54be2e395c71ef9debeb08 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Mon, 1 Jul 2024 23:11:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AD=97=E5=B9=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/danmaku/controller.dart | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index 11e097e1..52c423d7 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -17,7 +17,11 @@ class PlDanmakuController { int segCount = (videoDuration / segmentLength).ceil(); requestedSeg = List.generate(segCount, (index) => false); } - queryDanmaku(calcSegment(progress)); + try { + queryDanmaku(calcSegment(progress)); + } catch (e) { + print(e); + } } void dispose() { @@ -31,16 +35,18 @@ class PlDanmakuController { void queryDanmaku(int segmentIndex) async { assert(requestedSeg[segmentIndex] == false); - requestedSeg[segmentIndex] = true; - final DmSegMobileReply result = await DanmakaHttp.queryDanmaku( - cid: cid, segmentIndex: segmentIndex + 1); - if (result.elems.isNotEmpty) { - for (var element in result.elems) { - int pos = element.progress ~/ 100; //每0.1秒存储一次 - if (dmSegMap[pos] == null) { - dmSegMap[pos] = []; + if (requestedSeg.length > segmentIndex) { + requestedSeg[segmentIndex] = true; + final DmSegMobileReply result = await DanmakaHttp.queryDanmaku( + cid: cid, segmentIndex: segmentIndex + 1); + if (result.elems.isNotEmpty) { + for (var element in result.elems) { + int pos = element.progress ~/ 100; //每0.1秒存储一次 + if (dmSegMap[pos] == null) { + dmSegMap[pos] = []; + } + dmSegMap[pos]!.add(element); } - dmSegMap[pos]!.add(element); } } }