diff --git a/assets/images/lv/lv0.png b/assets/images/lv/lv0.png index 3b9999cf..f9ed49b6 100644 Binary files a/assets/images/lv/lv0.png and b/assets/images/lv/lv0.png differ diff --git a/assets/images/lv/lv1.png b/assets/images/lv/lv1.png index 9973e4e7..ad8b70ce 100644 Binary files a/assets/images/lv/lv1.png and b/assets/images/lv/lv1.png differ diff --git a/assets/images/lv/lv2.png b/assets/images/lv/lv2.png index 895653ec..c369f5ad 100644 Binary files a/assets/images/lv/lv2.png and b/assets/images/lv/lv2.png differ diff --git a/assets/images/lv/lv3.png b/assets/images/lv/lv3.png index 54e08d2d..80a0db3f 100644 Binary files a/assets/images/lv/lv3.png and b/assets/images/lv/lv3.png differ diff --git a/assets/images/lv/lv4.png b/assets/images/lv/lv4.png index bdb5fd41..5441967b 100644 Binary files a/assets/images/lv/lv4.png and b/assets/images/lv/lv4.png differ diff --git a/assets/images/lv/lv5.png b/assets/images/lv/lv5.png index 6973c0a7..dedd1309 100644 Binary files a/assets/images/lv/lv5.png and b/assets/images/lv/lv5.png differ diff --git a/assets/images/lv/lv6.png b/assets/images/lv/lv6.png index 14ba6181..399e585a 100644 Binary files a/assets/images/lv/lv6.png and b/assets/images/lv/lv6.png differ diff --git a/assets/images/lv/lv6_s.png b/assets/images/lv/lv6_s.png new file mode 100644 index 00000000..4b867500 Binary files /dev/null and b/assets/images/lv/lv6_s.png differ diff --git a/lib/models/member/info.dart b/lib/models/member/info.dart index 789131ee..006b394d 100644 --- a/lib/models/member/info.dart +++ b/lib/models/member/info.dart @@ -11,6 +11,7 @@ class MemberInfoModel { this.official, this.vip, this.liveRoom, + this.isSeniorMember, }); int? mid; @@ -24,6 +25,7 @@ class MemberInfoModel { Map? official; Vip? vip; LiveRoom? liveRoom; + int? isSeniorMember; MemberInfoModel.fromJson(Map json) { mid = json['mid']; @@ -38,6 +40,7 @@ class MemberInfoModel { vip = Vip.fromJson(json['vip']); liveRoom = json['live_room'] != null ? LiveRoom.fromJson(json['live_room']) : null; + isSeniorMember = json['is_senior_member']; } } diff --git a/lib/models/search/result.dart b/lib/models/search/result.dart index c78912f3..64c48711 100644 --- a/lib/models/search/result.dart +++ b/lib/models/search/result.dart @@ -123,6 +123,7 @@ class SearchUserItemModel { this.isLive, this.roomId, this.officialVerify, + this.isSeniorMember, }); String? type; @@ -141,6 +142,7 @@ class SearchUserItemModel { int? isLive; int? roomId; Map? officialVerify; + int? isSeniorMember; SearchUserItemModel.fromJson(Map json) { type = json['type']; @@ -159,6 +161,7 @@ class SearchUserItemModel { isLive = json['is_live']; roomId = json['room_id']; officialVerify = json['official_verify']; + isSeniorMember = json['is_senior_member']; } } diff --git a/lib/models/user/info.dart b/lib/models/user/info.dart index c520443f..624c2dc3 100644 --- a/lib/models/user/info.dart +++ b/lib/models/user/info.dart @@ -29,6 +29,7 @@ class UserInfoData { this.wallet, this.hasShop, this.shopUrl, + this.isSeniorMember, }); @HiveField(0) bool? isLogin; @@ -78,6 +79,8 @@ class UserInfoData { bool? hasShop; @HiveField(23) String? shopUrl; + @HiveField(24) + int? isSeniorMember; UserInfoData.fromJson(Map json) { isLogin = json['isLogin'] ?? false; @@ -106,6 +109,7 @@ class UserInfoData { wallet = json['wallet']; hasShop = json['has_shop']; shopUrl = json['shop_url']; + isSeniorMember = json['is_senior_member']; } } diff --git a/lib/models/user/info.g.dart b/lib/models/user/info.g.dart index a2eae152..ce1744c2 100644 --- a/lib/models/user/info.g.dart +++ b/lib/models/user/info.g.dart @@ -41,13 +41,14 @@ class UserInfoDataAdapter extends TypeAdapter { wallet: (fields[21] as Map?)?.cast(), hasShop: fields[22] as bool?, shopUrl: fields[23] as String?, + isSeniorMember: fields[24] as int?, ); } @override void write(BinaryWriter writer, UserInfoData obj) { writer - ..writeByte(24) + ..writeByte(25) ..writeByte(0) ..write(obj.isLogin) ..writeByte(1) @@ -95,7 +96,9 @@ class UserInfoDataAdapter extends TypeAdapter { ..writeByte(22) ..write(obj.hasShop) ..writeByte(23) - ..write(obj.shopUrl); + ..write(obj.shopUrl) + ..writeByte(24) + ..write(obj.isSeniorMember); } @override diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index 8315b5f1..f3e79524 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -130,7 +130,7 @@ class UserInfoCard extends StatelessWidget { ), const SizedBox(width: 8), Image.asset( - 'assets/images/lv/lv${card.levelInfo?.currentLevel}.png', + 'assets/images/lv/lv${card.levelInfo?.identity == 2 ? '6_s' : card.levelInfo?.currentLevel}.png', height: 11, semanticLabel: '等级${card.levelInfo?.currentLevel}', ), diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index d1d83153..bed39813 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -176,7 +176,7 @@ class _MinePageState extends State { ), const SizedBox(width: 4), Image.asset( - 'assets/images/lv/lv${_mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}.png', + 'assets/images/lv/lv${_mineController.userInfo.value.isSeniorMember == 1 ? '6_s' : _mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}.png', height: 10, semanticLabel: '等级:${_mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}', diff --git a/lib/pages/search_panel/widgets/article_panel.dart b/lib/pages/search_panel/widgets/article_panel.dart index f3a08444..d508b862 100644 --- a/lib/pages/search_panel/widgets/article_panel.dart +++ b/lib/pages/search_panel/widgets/article_panel.dart @@ -27,6 +27,7 @@ Widget searchArticlePanel( return CustomScrollView( controller: searchPanelCtr.scrollController, + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPersistentHeader( pinned: false, diff --git a/lib/pages/search_panel/widgets/live_panel.dart b/lib/pages/search_panel/widgets/live_panel.dart index 49c5639f..e1d0bbcc 100644 --- a/lib/pages/search_panel/widgets/live_panel.dart +++ b/lib/pages/search_panel/widgets/live_panel.dart @@ -14,6 +14,7 @@ Widget searchLivePanel( Loading() => loadingWidget, Success() => loadingState.response?.isNotEmpty == true ? GridView.builder( + physics: const AlwaysScrollableScrollPhysics(), padding: EdgeInsets.only( left: StyleString.safeSpace, right: StyleString.safeSpace, diff --git a/lib/pages/search_panel/widgets/media_bangumi_panel.dart b/lib/pages/search_panel/widgets/media_bangumi_panel.dart index 98fb24b4..cd4310ef 100644 --- a/lib/pages/search_panel/widgets/media_bangumi_panel.dart +++ b/lib/pages/search_panel/widgets/media_bangumi_panel.dart @@ -17,6 +17,7 @@ Widget searchBangumiPanel( Success() => loadingState.response?.isNotEmpty == true ? CustomScrollView( controller: ctr.scrollController, + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/search_panel/widgets/user_panel.dart b/lib/pages/search_panel/widgets/user_panel.dart index 3b39bce8..bd48e287 100644 --- a/lib/pages/search_panel/widgets/user_panel.dart +++ b/lib/pages/search_panel/widgets/user_panel.dart @@ -25,6 +25,7 @@ Widget searchUserPanel( return CustomScrollView( controller: searchPanelCtr.scrollController, + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPersistentHeader( pinned: false, @@ -151,7 +152,7 @@ Widget searchUserPanel( ), const SizedBox(width: 6), Image.asset( - 'assets/images/lv/lv${i!.level}.png', + 'assets/images/lv/lv${i.isSeniorMember == 1 ? '6_s' : i!.level}.png', height: 11, semanticLabel: '等级${i.level}', ), diff --git a/lib/pages/search_panel/widgets/video_panel.dart b/lib/pages/search_panel/widgets/video_panel.dart index ac2a4258..6d4b2f4a 100644 --- a/lib/pages/search_panel/widgets/video_panel.dart +++ b/lib/pages/search_panel/widgets/video_panel.dart @@ -23,6 +23,7 @@ Widget searchVideoPanel( final controller = Get.put(VideoPanelController(), tag: searchPanelCtr.tag); return CustomScrollView( controller: searchPanelCtr.scrollController, + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPersistentHeader( pinned: false, diff --git a/lib/pages/video/detail/member/horizontal_member_page.dart b/lib/pages/video/detail/member/horizontal_member_page.dart index aee43ef5..435ca29c 100644 --- a/lib/pages/video/detail/member/horizontal_member_page.dart +++ b/lib/pages/video/detail/member/horizontal_member_page.dart @@ -274,7 +274,7 @@ class _HorizontalMemberPageState extends State { ), const SizedBox(width: 8), Image.asset( - 'assets/images/lv/lv${memberInfoModel.level}.png', + 'assets/images/lv/lv${memberInfoModel.isSeniorMember == 1 ? '6_s' : memberInfoModel.level}.png', height: 11, ), ], diff --git a/lib/pages/video/detail/note/note_list_page.dart b/lib/pages/video/detail/note/note_list_page.dart index 121b359b..e1bc2168 100644 --- a/lib/pages/video/detail/note/note_list_page.dart +++ b/lib/pages/video/detail/note/note_list_page.dart @@ -245,7 +245,7 @@ Widget _itemWidget(BuildContext context, dynamic item) { const SizedBox(width: 6), Image.asset( 'assets/images/lv/lv${item['author']['level']}.png', - height: 11, + height: 19, ), ], ), diff --git a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart index 33e9b4e5..4612ca70 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart @@ -302,7 +302,7 @@ class ReplyItemGrpc extends StatelessWidget { ), const SizedBox(width: 6), Image.asset( - 'assets/images/lv/lv${replyItem.member.level}.png', + 'assets/images/lv/lv${replyItem.member.isSeniorMember == 1 ? '6_s' : replyItem.member.level}.png', height: 11, semanticLabel: "等级:${replyItem.member.level}", ),