From 0d46ebb7a3d60436cd1bdb1797cc12627ccaf4a2 Mon Sep 17 00:00:00 2001 From: orz12 Date: Sat, 2 Mar 2024 15:09:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BC=B9=E5=B9=95=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=99=A8=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=97=B6=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/danmaku/controller.dart | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index fae40c65..0d93c631 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -13,6 +13,9 @@ class PlDanmakuController { static int segmentLength = 60 * 6 * 1000; void initiate(int videoDuration, int progress) { + if (videoDuration <= 0) { + return; + } if (requestedSeg.isEmpty) { int segCount = (videoDuration / segmentLength).ceil(); requestedSeg = List.generate(segCount, (index) => false); @@ -30,6 +33,9 @@ class PlDanmakuController { } void queryDanmaku(int segmentIndex) async { + if (requestedSeg.length <= segmentIndex) { + return; + } assert(requestedSeg[segmentIndex] == false); requestedSeg[segmentIndex] = true; final DmSegMobileReply result = await DanmakaHttp.queryDanmaku( @@ -47,6 +53,9 @@ class PlDanmakuController { List? getCurrentDanmaku(int progress) { int segmentIndex = calcSegment(progress); + if (requestedSeg.length <= segmentIndex) { + return []; + } if (!requestedSeg[segmentIndex]) { queryDanmaku(segmentIndex); }