mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-08-02 16:50:13 +08:00
feat: danmaku api (#1530)
This commit is contained in:
committed by
GitHub
parent
88d207cc24
commit
e5f0742bf6
27
lib/pages/danmaku/dnamaku_model.dart
Normal file
27
lib/pages/danmaku/dnamaku_model.dart
Normal 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});
|
||||
}
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user