From 26b437f5df74610eed981309e51cc534fb13b5b2 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sat, 11 Jan 2025 11:28:30 +0800 Subject: [PATCH] mod: member page: show live status Signed-off-by: bggRGjQaUbCoE --- lib/models/space/data.dart | 2 + lib/models/space/data.g.dart | 1 + lib/pages/member/new/controller.dart | 3 ++ lib/pages/member/new/member_page.dart | 1 + .../member/new/widget/user_info_card.dart | 43 +++++++++++++++++++ 5 files changed, 50 insertions(+) diff --git a/lib/models/space/data.dart b/lib/models/space/data.dart index b5b750c8..8e0aa373 100644 --- a/lib/models/space/data.dart +++ b/lib/models/space/data.dart @@ -52,6 +52,7 @@ class Data { @JsonKey(name: 'digital_button') dynamic digitalButton; dynamic entry; + dynamic live; Data({ this.relation, @@ -77,6 +78,7 @@ class Data { this.nftFaceButton, this.digitalButton, this.entry, + this.live, }); factory Data.fromJson(Map json) => _$DataFromJson(json); diff --git a/lib/models/space/data.g.dart b/lib/models/space/data.g.dart index 07d4279f..29af30f0 100644 --- a/lib/models/space/data.g.dart +++ b/lib/models/space/data.g.dart @@ -61,6 +61,7 @@ Data _$DataFromJson(Map json) => Data( nftFaceButton: json['nft_face_button'], digitalButton: json['digital_button'], entry: json['entry'], + live: json['live'], ); Map _$DataToJson(Data instance) => { diff --git a/lib/pages/member/new/controller.dart b/lib/pages/member/new/controller.dart index 9f857a7a..cd777b5f 100644 --- a/lib/pages/member/new/controller.dart +++ b/lib/pages/member/new/controller.dart @@ -38,6 +38,8 @@ class MemberControllerNew extends CommonController queryData(); } + dynamic live; + @override bool customHandleResponse(Success response) { username = response.response?.card?.name ?? ''; @@ -46,6 +48,7 @@ class MemberControllerNew extends CommonController ? 2 : response.response?.relation ?? 1; tab2 = response.response.tab2; + live = response.response?.live; if (tab2 != null && tab2!.isNotEmpty) { if (!response.response.tab.toJson().values.contains(true) && tab2!.first.param == 'home') { diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index 8de04d01..b4bed822 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -317,6 +317,7 @@ class _MemberPageNewState extends State card: userState.response.card, images: userState.response.images, onFollow: () => _userController.onFollow(context), + live: _userController.live, ), ), ), diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index d7cf462d..c3f89288 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -18,6 +18,7 @@ class UserInfoCard extends StatelessWidget { required this.relation, required this.isFollow, required this.onFollow, + this.live, }); final bool isV; @@ -27,6 +28,7 @@ class UserInfoCard extends StatelessWidget { final space.Card card; final space.Images images; final VoidCallback onFollow; + final dynamic live; @override Widget build(BuildContext context) { @@ -464,6 +466,47 @@ class UserInfoCard extends StatelessWidget { left: 80, child: _buildBadge(context), ), + if (live is Map && ((live['liveStatus'] as int?) ?? 0) == 1) + Positioned( + top: 180, + left: 20, + child: GestureDetector( + onTap: () { + Get.toNamed( + '/liveRoom?roomid=${live['roomid']}', + arguments: {'heroTag': '${live['roomid']}'}, + ); + }, + child: Container( + width: 85, + alignment: Alignment.center, + child: Badge( + label: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.equalizer_rounded, + size: MediaQuery.textScalerOf(context).scale(16), + ), + Text( + '直播中', + style: TextStyle(height: 1), + ) + ], + ), + padding: const EdgeInsets.symmetric( + horizontal: 5, + vertical: 1, + ), + alignment: Alignment.center, + textColor: + Theme.of(context).colorScheme.onSecondaryContainer, + backgroundColor: + Theme.of(context).colorScheme.secondaryContainer, + ), + ), + ), + ), Positioned( left: 120, top: 140,