fix: 字幕查询越界

This commit is contained in:
guozhigq
2024-07-01 23:11:11 +08:00
parent 2cc43fad57
commit 0d96327f34

View File

@ -17,7 +17,11 @@ class PlDanmakuController {
int segCount = (videoDuration / segmentLength).ceil(); int segCount = (videoDuration / segmentLength).ceil();
requestedSeg = List<bool>.generate(segCount, (index) => false); requestedSeg = List<bool>.generate(segCount, (index) => false);
} }
queryDanmaku(calcSegment(progress)); try {
queryDanmaku(calcSegment(progress));
} catch (e) {
print(e);
}
} }
void dispose() { void dispose() {
@ -31,16 +35,18 @@ class PlDanmakuController {
void queryDanmaku(int segmentIndex) async { void queryDanmaku(int segmentIndex) async {
assert(requestedSeg[segmentIndex] == false); assert(requestedSeg[segmentIndex] == false);
requestedSeg[segmentIndex] = true; if (requestedSeg.length > segmentIndex) {
final DmSegMobileReply result = await DanmakaHttp.queryDanmaku( requestedSeg[segmentIndex] = true;
cid: cid, segmentIndex: segmentIndex + 1); final DmSegMobileReply result = await DanmakaHttp.queryDanmaku(
if (result.elems.isNotEmpty) { cid: cid, segmentIndex: segmentIndex + 1);
for (var element in result.elems) { if (result.elems.isNotEmpty) {
int pos = element.progress ~/ 100; //每0.1秒存储一次 for (var element in result.elems) {
if (dmSegMap[pos] == null) { int pos = element.progress ~/ 100; //每0.1秒存储一次
dmSegMap[pos] = []; if (dmSegMap[pos] == null) {
dmSegMap[pos] = [];
}
dmSegMap[pos]!.add(element);
} }
dmSegMap[pos]!.add(element);
} }
} }
} }