add superChatType

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-12-17 19:54:30 +08:00
parent ce5e85e64b
commit 2e73688688
8 changed files with 60 additions and 26 deletions

View File

@@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart';
import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/http/live.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/common/super_chat_type.dart';
import 'package:PiliPlus/models/common/video/live_quality.dart';
import 'package:PiliPlus/models_new/live/live_danmaku/danmaku_msg.dart';
import 'package:PiliPlus/models_new/live/live_danmaku/live_emote.dart';
@@ -113,7 +114,8 @@ class LiveRoomController extends GetxController {
bool? isPlaying;
late bool isFullScreen = false;
final showSuperChat = Pref.showSuperChat;
final superChatType = Pref.superChatType;
late final showSuperChat = superChatType != SuperChatType.disable;
final headerKey = GlobalKey<TimeBatteryMixin>();

View File

@@ -13,10 +13,12 @@ class SuperChatCard extends StatefulWidget {
super.key,
required this.item,
required this.onRemove,
this.persistentSC = false,
});
final SuperChatItem item;
final VoidCallback onRemove;
final bool persistentSC;
@override
State<SuperChatCard> createState() => _SuperChatCardState();
@@ -29,17 +31,19 @@ class _SuperChatCardState extends State<SuperChatCard> {
@override
void initState() {
super.initState();
if (widget.item.expired) {
_remove();
return;
}
final now = DateTime.now().millisecondsSinceEpoch ~/ 1000;
final offset = widget.item.endTime - now;
if (offset > 0) {
_remains = offset.obs;
_timer = Timer.periodic(const Duration(seconds: 1), _callback);
} else {
_remove();
if (!widget.persistentSC) {
if (widget.item.expired) {
_remove();
return;
}
final now = DateTime.now().millisecondsSinceEpoch ~/ 1000;
final offset = widget.item.endTime - now;
if (offset > 0) {
_remains = offset.obs;
_timer = Timer.periodic(const Duration(seconds: 1), _callback);
} else {
_remove();
}
}
}

View File

@@ -1,3 +1,4 @@
import 'package:PiliPlus/models/common/super_chat_type.dart';
import 'package:PiliPlus/pages/live_room/controller.dart';
import 'package:PiliPlus/pages/live_room/superchat/superchat_card.dart';
import 'package:PiliPlus/pages/search/controller.dart';
@@ -21,6 +22,9 @@ class _SuperChatPanelState extends DebounceStreamState<SuperChatPanel, bool>
@override
Duration get duration => const Duration(milliseconds: 300);
late final persistentSC =
widget.controller.superChatType == SuperChatType.persist;
@override
Widget build(BuildContext context) {
super.build(context);
@@ -42,6 +46,7 @@ class _SuperChatPanelState extends DebounceStreamState<SuperChatPanel, bool>
key: ValueKey(item.id),
item: item,
onRemove: () => ctr?.add(true),
persistentSC: persistentSC,
);
},
separatorBuilder: (_, _) => const SizedBox(height: 12),