feat: danmaku api (#1530)

This commit is contained in:
My-Responsitories
2025-10-12 18:41:40 +08:00
committed by GitHub
parent 88d207cc24
commit e5f0742bf6
12 changed files with 426 additions and 20 deletions

View File

@@ -0,0 +1,27 @@
sealed class DanmakuExtra {
String get mid;
Object get id;
const DanmakuExtra();
}
class VideoDanmaku extends DanmakuExtra {
@override
final int id;
@override
final String mid;
bool isLike;
VideoDanmaku({required this.id, required this.mid, this.isLike = false});
}
class LiveDanmaku extends DanmakuExtra {
@override
final String id;
@override
final String mid;
final String uname;
const LiveDanmaku({required this.id, required this.mid, required this.uname});
}

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:PiliPlus/grpc/bilibili/community/service/dm/v1.pb.dart';
import 'package:PiliPlus/pages/danmaku/controller.dart';
import 'package:PiliPlus/pages/danmaku/dnamaku_model.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/models/play_status.dart';
import 'package:PiliPlus/utils/danmaku_utils.dart';
@@ -32,7 +33,7 @@ class _PlDanmakuState extends State<PlDanmaku> {
PlPlayerController get playerController => widget.playerController;
late PlDanmakuController _plDanmakuController;
DanmakuController? _controller;
DanmakuController<DanmakuExtra>? _controller;
int latestAddedPosition = -1;
@override
@@ -130,6 +131,7 @@ class _PlDanmakuState extends State<PlDanmaku> {
e.colorful == DmColorfulType.VipGradualColor,
count: e.hasCount() ? e.count : null,
selfSend: e.isSelf,
extra: VideoDanmaku(id: e.id.toInt(), mid: e.midHash),
),
);
}
@@ -154,8 +156,8 @@ class _PlDanmakuState extends State<PlDanmaku> {
? playerController.danmakuOpacity.value
: 0,
duration: const Duration(milliseconds: 100),
child: DanmakuScreen(
createdController: (DanmakuController e) {
child: DanmakuScreen<DanmakuExtra>(
createdController: (e) {
playerController.danmakuController = _controller = e;
},
option: DanmakuOption(