From 75bbe5ab5a7bf9263ec7563516ea0ffb718fa572 Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Tue, 9 Jun 2026 02:04:09 +0000 Subject: [PATCH] fix: all music achievement (#2363) * fix: all music achievement * remove empty space [skip ci] --------- Co-authored-by: dom --- lib/common/widgets/badge.dart | 17 ++++++---------- lib/models_new/music/bgm_detail.dart | 14 +++++++++----- lib/pages/music/view.dart | 29 ++++++++++++++-------------- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/lib/common/widgets/badge.dart b/lib/common/widgets/badge.dart index 63f3a3027..826ee0fcd 100644 --- a/lib/common/widgets/badge.dart +++ b/lib/common/widgets/badge.dart @@ -82,26 +82,21 @@ class PBadge extends StatelessWidget { color = theme.onSurfaceVariant; } - late EdgeInsets paddingStyle = const EdgeInsets.symmetric( - vertical: 2, - horizontal: 3, - ); - BorderRadius br = size == PBadgeSize.small - ? const BorderRadius.all(Radius.circular(3)) - : const BorderRadius.all(Radius.circular(4)); + late EdgeInsets paddingStyle = const .symmetric(vertical: 2, horizontal: 3); + final BorderRadius br = size == .small + ? const .all(.circular(3)) + : const .all(.circular(4)); Widget content = Container( padding: padding ?? paddingStyle, decoration: BoxDecoration( borderRadius: br, color: bgColor, - border: Border.all(color: borderColor), + border: .all(color: borderColor), ), child: Text( text!, - textScaler: textScaleFactor != null - ? TextScaler.linear(textScaleFactor!) - : null, + textScaler: textScaleFactor != null ? .linear(textScaleFactor!) : null, style: TextStyle( height: 1, fontSize: fontSize, diff --git a/lib/models_new/music/bgm_detail.dart b/lib/models_new/music/bgm_detail.dart index be9fe3496..7bdb577bc 100644 --- a/lib/models_new/music/bgm_detail.dart +++ b/lib/models_new/music/bgm_detail.dart @@ -15,7 +15,7 @@ class MusicDetail { required this.album, required this.artistsList, required this.listenPv, - required this.musicRank, + required this.achievement, required this.hotSongHeat, required this.musicComment, required this.musicRelation, @@ -26,7 +26,7 @@ class MusicDetail { final String? originArtist; final String? originArtistList; final int? mvAid; - final int? mvCid; + final int mvCid; final String? mvBvid; final String? mvCover; bool? wishListen; @@ -35,7 +35,7 @@ class MusicDetail { final String? album; final List? artistsList; final int? listenPv; - final String? musicRank; + final List achievement; final HotSongHeat? hotSongHeat; final MusicComment? musicComment; final int? musicRelation; @@ -47,7 +47,7 @@ class MusicDetail { originArtist: json["origin_artist"], originArtistList: json["origin_artist_list"], mvAid: json["mv_aid"], - mvCid: json["mv_cid"], + mvCid: json["mv_cid"] ?? 0, mvBvid: json["mv_bvid"], mvCover: json["mv_cover"], wishListen: json["wish_listen"], @@ -58,7 +58,11 @@ class MusicDetail { ?.map((x) => Artist.fromJson(x)) .toList(), listenPv: json["listen_pv"], - musicRank: json["music_rank"], + achievement: [ + ...?json["achievement"], + ?json["music_rank"], + ?json["recreation_rank"], + ], hotSongHeat: json["hot_song_heat"] == null ? null : HotSongHeat.fromJson(json["hot_song_heat"]), diff --git a/lib/pages/music/view.dart b/lib/pages/music/view.dart index 0635cc675..40b224bb0 100644 --- a/lib/pages/music/view.dart +++ b/lib/pages/music/view.dart @@ -9,7 +9,6 @@ import 'package:PiliPlus/common/widgets/image_viewer/hero.dart'; import 'package:PiliPlus/common/widgets/marquee.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/music.dart'; -import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/music/bgm_detail.dart'; @@ -489,35 +488,35 @@ class _MusicDetailPageState extends CommonDynPageState { Wrap( spacing: 16, children: [ - if (!item.musicRank.isNullOrEmpty) - PBadge( - text: item.musicRank, - type: PBadgeType.secondary, - isStack: false, - fontSize: 11, - ), - if (item.mvCid != null && item.mvCid != 0) + if (item.achievement.isNotEmpty) + for (var i in item.achievement) + if (i.isNotEmpty) + PBadge( + text: i, + type: .secondary, + isStack: false, + fontSize: 11, + ), + if (item.mvCid != 0) GestureDetector( onTap: () => PageUtils.toVideoPage( bvid: item.mvBvid, - cid: item.mvCid!, + cid: item.mvCid, aid: item.mvAid, ), child: DecoratedBox( decoration: BoxDecoration( - borderRadius: const BorderRadius.all( - Radius.circular(4), - ), + borderRadius: const .all(.circular(4)), color: theme.colorScheme.secondaryContainer .withValues(alpha: 0.5), ), child: Padding( - padding: const EdgeInsets.symmetric( + padding: const .symmetric( vertical: 3, horizontal: 4, ), child: Row( - mainAxisSize: MainAxisSize.min, + mainAxisSize: .min, children: [ Icon( Icons.play_circle_outline,