From fd4eb0fad1cb009abd35f3b6e2826df92fda9f85 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sun, 29 Oct 2023 00:03:57 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E4=BC=98=E5=8C=96=E5=BC=B9=E5=B9=95?= =?UTF-8?q?=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/danmaku/controller.dart | 2 ++ lib/pages/danmaku/view.dart | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index 576d4f3c..38d09e04 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -10,6 +10,8 @@ class PlDanmakuController { // 按 6min 分段 int segCount = 0; List dmSegList = []; + // 已请求的段落标记 + List hasrequestSeg = []; int currentSegIndex = 1; int currentDmIndex = 0; diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index ae699b1c..317d47e9 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -95,7 +95,9 @@ class _PlDanmakuState extends State { // 根据position判断是否有已缓存弹幕。没有则请求对应段 int segIndex = (currentPosition / (6 * 60 * 1000)).ceil(); segIndex = segIndex < 1 ? 1 : segIndex; - if (ctr.dmSegList[segIndex - 1].elems.isEmpty) { + if (ctr.dmSegList[segIndex - 1].elems.isEmpty && + !ctr.hasrequestSeg.contains(segIndex - 1)) { + ctr.hasrequestSeg.add(segIndex - 1); ctr.currentSegIndex = segIndex; EasyThrottle.throttle('follow', const Duration(seconds: 1), () { ctr.queryDanmaku();