diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index ca822d042..604ec8b8e 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -18,7 +18,6 @@ import 'package:PiliPlus/models_new/live/live_room_play_info/codec.dart'; import 'package:PiliPlus/models_new/live/live_superchat/item.dart'; import 'package:PiliPlus/pages/common/publish/publish_route.dart'; import 'package:PiliPlus/pages/danmaku/danmaku_model.dart'; -import 'package:PiliPlus/pages/live_room/contribution_rank/view.dart'; import 'package:PiliPlus/pages/live_room/send_danmaku/view.dart'; import 'package:PiliPlus/pages/video/widgets/header_control.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; @@ -30,7 +29,6 @@ import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/danmaku_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; -import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -130,40 +128,6 @@ class LiveRoomController extends GetxController { final RxString title = ''.obs; final RxnString onlineCount = RxnString(); - Widget get onlineWidget => GestureDetector( - onTap: _showRank, - child: Obx(() { - if (onlineCount.value case final onlineCount?) { - return Text( - '高能观众($onlineCount)', - style: const TextStyle( - fontSize: 12, - color: Colors.white, - ), - ); - } - return const SizedBox.shrink(); - }), - ); - - void _showRank() { - if (ruid case final ruid?) { - final heightFactor = - PlatformUtils.isMobile && !Get.mediaQuery.size.isPortrait ? 1.0 : 0.7; - showModalBottomSheet( - context: Get.context!, - useSafeArea: true, - clipBehavior: .hardEdge, - isScrollControlled: true, - constraints: const BoxConstraints(maxWidth: 450), - builder: (context) => FractionallySizedBox( - widthFactor: 1.0, - heightFactor: heightFactor, - child: ContributionRankPanel(ruid: ruid, roomId: roomId), - ), - ); - } - } final RxnString watchedShow = RxnString(); Widget get watchedWidget => Obx(() { diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index f7c3bd515..7e3cdf74f 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -20,6 +20,7 @@ import 'package:PiliPlus/models_new/live/live_room_info_h5/data.dart'; import 'package:PiliPlus/models_new/live/live_superchat/item.dart'; import 'package:PiliPlus/pages/danmaku/danmaku_model.dart'; import 'package:PiliPlus/pages/live_room/contribution_rank/controller.dart'; +import 'package:PiliPlus/pages/live_room/contribution_rank/view.dart'; import 'package:PiliPlus/pages/live_room/controller.dart'; import 'package:PiliPlus/pages/live_room/superchat/superchat_card.dart'; import 'package:PiliPlus/pages/live_room/superchat/superchat_panel.dart'; @@ -256,6 +257,7 @@ class _LiveRoomPageState extends State onPlayAudio: _liveRoomController.queryLiveUrl, isPortrait: isPortrait, liveController: _liveRoomController, + onlineWidget: onlineWidget, ), bottomControl: BottomControl( plPlayerController: plPlayerController, @@ -492,6 +494,43 @@ class _LiveRoomPageState extends State ); } + Widget get onlineWidget => GestureDetector( + onTap: _showRank, + child: Obx(() { + if (_liveRoomController.onlineCount.value case final onlineCount?) { + return Text( + '高能观众($onlineCount)', + style: const TextStyle( + fontSize: 12, + color: Colors.white, + ), + ); + } + return const SizedBox.shrink(); + }), + ); + + void _showRank() { + if (_liveRoomController.ruid case final ruid?) { + final heightFactor = PlatformUtils.isMobile && !isPortrait ? 1.0 : 0.7; + showModalBottomSheet( + context: context, + useSafeArea: true, + clipBehavior: .hardEdge, + isScrollControlled: true, + constraints: const BoxConstraints(maxWidth: 450), + builder: (context) => FractionallySizedBox( + widthFactor: 1.0, + heightFactor: heightFactor, + child: ContributionRankPanel( + ruid: ruid, + roomId: _liveRoomController.roomId, + ), + ), + ); + } + } + PreferredSizeWidget _buildAppBar(bool isFullScreen) { final color = Theme.of(context).colorScheme.onSurfaceVariant; return AppBar( @@ -542,7 +581,7 @@ class _LiveRoomPageState extends State ), ), ), - _liveRoomController.onlineWidget, + onlineWidget, ], ), Row( diff --git a/lib/pages/live_room/widgets/header_control.dart b/lib/pages/live_room/widgets/header_control.dart index f0d02d1a9..16b8d27fc 100644 --- a/lib/pages/live_room/widgets/header_control.dart +++ b/lib/pages/live_room/widgets/header_control.dart @@ -24,6 +24,7 @@ class LiveHeaderControl extends StatefulWidget { required this.onPlayAudio, required this.isPortrait, required this.liveController, + required this.onlineWidget, }); final String? title; @@ -33,6 +34,7 @@ class LiveHeaderControl extends StatefulWidget { final VoidCallback onPlayAudio; final bool isPortrait; final LiveRoomController liveController; + final Widget onlineWidget; @override State createState() => _LiveHeaderControlState(); @@ -90,7 +92,7 @@ class _LiveHeaderControlState extends State ), ), liveController.watchedWidget, - liveController.onlineWidget, + widget.onlineWidget, liveController.timeWidget, ], ), diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 383d9f23e..6736e0c95 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -1048,18 +1048,19 @@ class _HeaderTitleState extends State { overflow: .ellipsis, style: const TextStyle(fontSize: 12, color: Colors.white), ), - Text( - title.subTitle!, - style: TextStyle( - fontSize: 12, - fontFamily: Assets.digitalNum, - color: title.subTitleColorFormat?.colors?.isNotEmpty == true - ? Utils.parseMedalColor( - title.subTitleColorFormat!.colors!.last, - ) - : Colors.white, + if (title.subTitle?.isNotEmpty ?? false) + Text( + title.subTitle!, + style: TextStyle( + fontSize: 12, + fontFamily: Assets.digitalNum, + color: title.subTitleColorFormat?.colors?.isNotEmpty == true + ? Utils.parseMedalColor( + title.subTitleColorFormat!.colors!.last, + ) + : Colors.white, + ), ), - ), ], ); } catch (e, s) {