diff --git a/lib/common/widgets/avatar.dart b/lib/common/widgets/pendant_avatar.dart similarity index 98% rename from lib/common/widgets/avatar.dart rename to lib/common/widgets/pendant_avatar.dart index d6165617..ce65dec9 100644 --- a/lib/common/widgets/avatar.dart +++ b/lib/common/widgets/pendant_avatar.dart @@ -6,16 +6,16 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -class Avatar extends StatelessWidget { +class PendantAvatar extends StatelessWidget { final _BadgeType _badgeType; - final String avatar; + final String? avatar; final double size; final double badgeSize; final String? garbPendantImage; final dynamic roomId; final VoidCallback? onTap; - const Avatar({ + const PendantAvatar({ super.key, required this.avatar, this.size = 80, diff --git a/lib/models/dynamics/result.dart b/lib/models/dynamics/result.dart index c264af5b..f4cffc32 100644 --- a/lib/models/dynamics/result.dart +++ b/lib/models/dynamics/result.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'package:PiliPlus/common/widgets/avatar.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart'; -import 'package:PiliPlus/models/model_owner.dart'; +import 'package:PiliPlus/models/model_avatar.dart'; class DynamicsDataModel { bool? hasMore; @@ -218,7 +218,7 @@ class Basic { } // 单个动态详情 - 作者信息 -class ModuleAuthorModel extends Owner { +class ModuleAuthorModel extends Avatar { bool? following; String? jumpUrl; String? label; @@ -226,25 +226,21 @@ class ModuleAuthorModel extends Owner { String? pubTime; int? pubTs; String? type; - Map? vip; Map? decorate; - Map? pendant; - ModuleAuthorModel.fromJson(Map json) { - face = json['face']; + ModuleAuthorModel.fromJson(Map json) : super.fromJson(json) { + if (json['official'] != null) { + officialVerify ??= BaseOfficialVerify.fromJson(json['official']); // opus + } following = json['following']; jumpUrl = json['jump_url']; label = json['label']; - mid = json['mid']; - name = json['name']; pubAction = json['pub_action']; pubTime = json['pub_time']; pubTs = json['pub_ts'] == 0 ? null : json['pub_ts']; type = json['type']; - vip = json['vip']; - if (Avatar.showDynDecorate) { + if (PendantAvatar.showDynDecorate) { decorate = json['decorate']; - pendant = json['pendant']; } } } diff --git a/lib/models/member/info.dart b/lib/models/member/info.dart index 006b394d..e602d316 100644 --- a/lib/models/member/info.dart +++ b/lib/models/member/info.dart @@ -1,3 +1,5 @@ +import 'package:PiliPlus/models/model_avatar.dart'; + class MemberInfoModel { MemberInfoModel({ this.mid, @@ -44,27 +46,6 @@ class MemberInfoModel { } } -class Vip { - Vip({ - this.type, - this.status, - this.dueDate, - this.label, - }); - - int? type; - int? status; - int? dueDate; - Map? label; - - Vip.fromJson(Map json) { - type = json['type']; - status = json['status']; - dueDate = json['due_date']; - label = json['label']; - } -} - class LiveRoom { LiveRoom({ this.roomStatus, diff --git a/lib/models/model_avatar.dart b/lib/models/model_avatar.dart new file mode 100644 index 00000000..d533d48a --- /dev/null +++ b/lib/models/model_avatar.dart @@ -0,0 +1,73 @@ +import 'package:PiliPlus/models/model_owner.dart'; + +class Avatar extends Owner { + Pendant? pendant; + BaseOfficialVerify? officialVerify; + Vip? vip; + + Avatar.fromJson(Map json) : super.fromJson(json) { + if (json['pendant'] != null) pendant = Pendant.fromJson(json['pendant']); + if (json['official_verify'] != null) { + officialVerify = BaseOfficialVerify.fromJson(json['official_verify']); + } + if (json['vip'] != null) vip = Vip.fromJson(json['vip']); + } +} + +class Pendant { + int? pid; + String? name; + String? image; + + Pendant.fromJson(Map json) { + pid = json['pid']; + name = json['name']; + image = json['image']; + } +} + +class BaseOfficialVerify { + int? type; + String? desc; + + BaseOfficialVerify.fromJson(Map json) { + type = json['type']; + desc = json['desc']; + } +} + +class Vip { + int? type; + late int status; + int? dueDate; + Label? label; + + Vip.fromJson(Map json) { + type = json['type']; + status = json['status'] ?? 0; + dueDate = json['due_date']; + if (json['label'] != null) label = Label.fromJson(json['label']); + } +} + +class Label { + String? path; + String? text; + String? labelTheme; + String? textColor; + int? bgStyle; + String? bgColor; + String? borderColor; + String? image; + + Label.fromJson(Map json) { + path = json['path']; + text = json['text']; + labelTheme = json['label_theme']; + textColor = json['text_color']; + bgStyle = json['bg_style']; + bgColor = json['bg_color']; + borderColor = json['border_color']; + image = json['image']; + } +} diff --git a/lib/models/space/card.dart b/lib/models/space/card.dart index e35daa4a..d6e35a69 100644 --- a/lib/models/space/card.dart +++ b/lib/models/space/card.dart @@ -1,7 +1,4 @@ -import 'package:PiliPlus/models/space/pr_info.dart'; -import 'package:PiliPlus/models/space/space_tag_bottom.dart'; -import 'package:json_annotation/json_annotation.dart'; - +import 'package:PiliPlus/models/model_avatar.dart' hide Avatar; import 'package:PiliPlus/models/space/achieve.dart'; import 'package:PiliPlus/models/space/avatar.dart'; import 'package:PiliPlus/models/space/entrance.dart'; @@ -11,10 +8,11 @@ import 'package:PiliPlus/models/space/likes.dart'; import 'package:PiliPlus/models/space/nameplate.dart'; import 'package:PiliPlus/models/space/nft_certificate.dart'; import 'package:PiliPlus/models/space/official_verify.dart'; -import 'package:PiliPlus/models/space/pendant.dart'; +import 'package:PiliPlus/models/space/pr_info.dart'; import 'package:PiliPlus/models/space/profession_verify.dart'; import 'package:PiliPlus/models/space/relation.dart'; -import 'package:PiliPlus/models/space/vip.dart'; +import 'package:PiliPlus/models/space/space_tag_bottom.dart'; +import 'package:json_annotation/json_annotation.dart'; part 'card.g.dart'; diff --git a/lib/models/space/label.dart b/lib/models/space/label.dart deleted file mode 100644 index 9a8a5640..00000000 --- a/lib/models/space/label.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'label.g.dart'; - -@JsonSerializable() -class Label { - String? path; - String? text; - @JsonKey(name: 'label_theme') - String? labelTheme; - @JsonKey(name: 'text_color') - String? textColor; - @JsonKey(name: 'bg_style') - int? bgStyle; - @JsonKey(name: 'bg_color') - String? bgColor; - @JsonKey(name: 'border_color') - String? borderColor; - String? image; - - Label({ - this.path, - this.text, - this.labelTheme, - this.textColor, - this.bgStyle, - this.bgColor, - this.borderColor, - this.image, - }); - - factory Label.fromJson(Map json) => _$LabelFromJson(json); - - Map toJson() => _$LabelToJson(this); -} diff --git a/lib/models/space/label.g.dart b/lib/models/space/label.g.dart deleted file mode 100644 index f22d8f14..00000000 --- a/lib/models/space/label.g.dart +++ /dev/null @@ -1,29 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'label.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Label _$LabelFromJson(Map json) => Label( - path: json['path'] as String?, - text: json['text'] as String?, - labelTheme: json['label_theme'] as String?, - textColor: json['text_color'] as String?, - bgStyle: (json['bg_style'] as num?)?.toInt(), - bgColor: json['bg_color'] as String?, - borderColor: json['border_color'] as String?, - image: json['image'] as String?, - ); - -Map _$LabelToJson(Label instance) => { - 'path': instance.path, - 'text': instance.text, - 'label_theme': instance.labelTheme, - 'text_color': instance.textColor, - 'bg_style': instance.bgStyle, - 'bg_color': instance.bgColor, - 'border_color': instance.borderColor, - 'image': instance.image, - }; diff --git a/lib/models/space/official_verify.dart b/lib/models/space/official_verify.dart index 23b1b804..ac1eb5e2 100644 --- a/lib/models/space/official_verify.dart +++ b/lib/models/space/official_verify.dart @@ -1,29 +1,15 @@ -import 'package:json_annotation/json_annotation.dart'; +import 'package:PiliPlus/models/model_avatar.dart'; -part 'official_verify.g.dart'; +class OfficialVerify extends BaseOfficialVerify { + int? role; + String? title; + String? icon; + String? spliceTitle; -@JsonSerializable() -class OfficialVerify { - int? type; - String? desc; - int? role; - String? title; - String? icon; - @JsonKey(name: 'splice_title') - String? spliceTitle; - - OfficialVerify({ - this.type, - this.desc, - this.role, - this.title, - this.icon, - this.spliceTitle, - }); - - factory OfficialVerify.fromJson(Map json) { - return _$OfficialVerifyFromJson(json); - } - - Map toJson() => _$OfficialVerifyToJson(this); + OfficialVerify.fromJson(Map json) : super.fromJson(json) { + role = json['role']; + title = json['title']; + icon = json['icon']; + spliceTitle = json['splice_title']; + } } diff --git a/lib/models/space/official_verify.g.dart b/lib/models/space/official_verify.g.dart deleted file mode 100644 index 0cb53fe4..00000000 --- a/lib/models/space/official_verify.g.dart +++ /dev/null @@ -1,27 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'official_verify.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -OfficialVerify _$OfficialVerifyFromJson(Map json) => - OfficialVerify( - type: (json['type'] as num?)?.toInt(), - desc: json['desc'] as String?, - role: (json['role'] as num?)?.toInt(), - title: json['title'] as String?, - icon: json['icon'] as String?, - spliceTitle: json['splice_title'] as String?, - ); - -Map _$OfficialVerifyToJson(OfficialVerify instance) => - { - 'type': instance.type, - 'desc': instance.desc, - 'role': instance.role, - 'title': instance.title, - 'icon': instance.icon, - 'splice_title': instance.spliceTitle, - }; diff --git a/lib/models/space/pendant.dart b/lib/models/space/pendant.dart deleted file mode 100644 index 6280db28..00000000 --- a/lib/models/space/pendant.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'pendant.g.dart'; - -@JsonSerializable() -class Pendant { - int? pid; - String? name; - String? image; - int? expire; - @JsonKey(name: 'image_enhance') - String? imageEnhance; - @JsonKey(name: 'image_enhance_frame') - String? imageEnhanceFrame; - @JsonKey(name: 'n_pid') - int? nPid; - - Pendant({ - this.pid, - this.name, - this.image, - this.expire, - this.imageEnhance, - this.imageEnhanceFrame, - this.nPid, - }); - - factory Pendant.fromJson(Map json) { - return _$PendantFromJson(json); - } - - Map toJson() => _$PendantToJson(this); -} diff --git a/lib/models/space/pendant.g.dart b/lib/models/space/pendant.g.dart deleted file mode 100644 index edc778ce..00000000 --- a/lib/models/space/pendant.g.dart +++ /dev/null @@ -1,27 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'pendant.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Pendant _$PendantFromJson(Map json) => Pendant( - pid: (json['pid'] as num?)?.toInt(), - name: json['name'] as String?, - image: json['image'] as String?, - expire: (json['expire'] as num?)?.toInt(), - imageEnhance: json['image_enhance'] as String?, - imageEnhanceFrame: json['image_enhance_frame'] as String?, - nPid: (json['n_pid'] as num?)?.toInt(), - ); - -Map _$PendantToJson(Pendant instance) => { - 'pid': instance.pid, - 'name': instance.name, - 'image': instance.image, - 'expire': instance.expire, - 'image_enhance': instance.imageEnhance, - 'image_enhance_frame': instance.imageEnhanceFrame, - 'n_pid': instance.nPid, - }; diff --git a/lib/models/space/vip.dart b/lib/models/space/vip.dart deleted file mode 100644 index 45f69f48..00000000 --- a/lib/models/space/vip.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -import 'package:PiliPlus/models/space/label.dart'; - -part 'vip.g.dart'; - -@JsonSerializable() -class Vip { - int? vipType; - int? vipDueDate; - String? dueRemark; - int? accessStatus; - int? vipStatus; - String? vipStatusWarn; - int? themeType; - Label? label; - - Vip({ - this.vipType, - this.vipDueDate, - this.dueRemark, - this.accessStatus, - this.vipStatus, - this.vipStatusWarn, - this.themeType, - this.label, - }); - - factory Vip.fromJson(Map json) => _$VipFromJson(json); - - Map toJson() => _$VipToJson(this); -} diff --git a/lib/models/space/vip.g.dart b/lib/models/space/vip.g.dart deleted file mode 100644 index c437c751..00000000 --- a/lib/models/space/vip.g.dart +++ /dev/null @@ -1,31 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'vip.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Vip _$VipFromJson(Map json) => Vip( - vipType: (json['vipType'] as num?)?.toInt(), - vipDueDate: (json['vipDueDate'] as num?)?.toInt(), - dueRemark: json['dueRemark'] as String?, - accessStatus: (json['accessStatus'] as num?)?.toInt(), - vipStatus: (json['vipStatus'] as num?)?.toInt(), - vipStatusWarn: json['vipStatusWarn'] as String?, - themeType: (json['themeType'] as num?)?.toInt(), - label: json['label'] == null - ? null - : Label.fromJson(json['label'] as Map), - ); - -Map _$VipToJson(Vip instance) => { - 'vipType': instance.vipType, - 'vipDueDate': instance.vipDueDate, - 'dueRemark': instance.dueRemark, - 'accessStatus': instance.accessStatus, - 'vipStatus': instance.vipStatus, - 'vipStatusWarn': instance.vipStatusWarn, - 'themeType': instance.themeType, - 'label': instance.label, - }; diff --git a/lib/models/space_article/author.dart b/lib/models/space_article/author.dart index 3264e62a..e299e7fe 100644 --- a/lib/models/space_article/author.dart +++ b/lib/models/space_article/author.dart @@ -1,27 +1,12 @@ -import 'package:PiliPlus/models/model_owner.dart'; +import 'package:PiliPlus/models/model_avatar.dart'; import 'package:PiliPlus/models/space_article/nameplate.dart'; -import 'package:PiliPlus/models/space_article/official_verify.dart'; -import 'package:PiliPlus/models/space_article/pendant.dart'; -import 'package:PiliPlus/models/space_article/vip.dart'; -class Author extends Owner { - Pendant? pendant; - OfficialVerify? officialVerify; +class Author extends Avatar { Nameplate? nameplate; - Vip? vip; - Author.fromJson(Map json) { - mid = json['mid']; - name = json['name'] as String?; - face = json['face'] as String?; - pendant = - json['pendant'] == null ? null : Pendant.fromJson(json['pendant']); - officialVerify = json['official_verify'] == null - ? null - : OfficialVerify.fromJson(json['official_verify']); + Author.fromJson(Map json) : super.fromJson(json) { nameplate = json['nameplate'] == null ? null : Nameplate.fromJson(json['nameplate']); - vip = json['vip'] == null ? null : Vip.fromJson(json['vip']); } } diff --git a/lib/models/space_article/official_verify.dart b/lib/models/space_article/official_verify.dart deleted file mode 100644 index 875a2868..00000000 --- a/lib/models/space_article/official_verify.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'official_verify.g.dart'; - -@JsonSerializable() -class OfficialVerify { - int? type; - String? desc; - - OfficialVerify({this.type, this.desc}); - - factory OfficialVerify.fromJson(Map json) { - return _$OfficialVerifyFromJson(json); - } - - Map toJson() => _$OfficialVerifyToJson(this); -} diff --git a/lib/models/space_article/official_verify.g.dart b/lib/models/space_article/official_verify.g.dart deleted file mode 100644 index d6c9bb4a..00000000 --- a/lib/models/space_article/official_verify.g.dart +++ /dev/null @@ -1,19 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'official_verify.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -OfficialVerify _$OfficialVerifyFromJson(Map json) => - OfficialVerify( - type: (json['type'] as num?)?.toInt(), - desc: json['desc'] as String?, - ); - -Map _$OfficialVerifyToJson(OfficialVerify instance) => - { - 'type': instance.type, - 'desc': instance.desc, - }; diff --git a/lib/models/space_article/pendant.dart b/lib/models/space_article/pendant.dart deleted file mode 100644 index f73fb229..00000000 --- a/lib/models/space_article/pendant.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'pendant.g.dart'; - -@JsonSerializable() -class Pendant { - int? pid; - String? name; - String? image; - int? expire; - - Pendant({this.pid, this.name, this.image, this.expire}); - - factory Pendant.fromJson(Map json) { - return _$PendantFromJson(json); - } - - Map toJson() => _$PendantToJson(this); -} diff --git a/lib/models/space_article/pendant.g.dart b/lib/models/space_article/pendant.g.dart deleted file mode 100644 index c23bc587..00000000 --- a/lib/models/space_article/pendant.g.dart +++ /dev/null @@ -1,21 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'pendant.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Pendant _$PendantFromJson(Map json) => Pendant( - pid: (json['pid'] as num?)?.toInt(), - name: json['name'] as String?, - image: json['image'] as String?, - expire: (json['expire'] as num?)?.toInt(), - ); - -Map _$PendantToJson(Pendant instance) => { - 'pid': instance.pid, - 'name': instance.name, - 'image': instance.image, - 'expire': instance.expire, - }; diff --git a/lib/models/space_article/vip.dart b/lib/models/space_article/vip.dart deleted file mode 100644 index ea0b805c..00000000 --- a/lib/models/space_article/vip.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -import 'package:PiliPlus/models/space_article/label.dart'; - -part 'vip.g.dart'; - -@JsonSerializable() -class Vip { - int? type; - int? status; - @JsonKey(name: 'due_date') - int? dueDate; - @JsonKey(name: 'vip_pay_type') - int? vipPayType; - @JsonKey(name: 'theme_type') - int? themeType; - Label? label; - @JsonKey(name: 'avatar_subscript') - int? avatarSubscript; - @JsonKey(name: 'nickname_color') - String? nicknameColor; - - Vip({ - this.type, - this.status, - this.dueDate, - this.vipPayType, - this.themeType, - this.label, - this.avatarSubscript, - this.nicknameColor, - }); - - factory Vip.fromJson(Map json) => _$VipFromJson(json); - - Map toJson() => _$VipToJson(this); -} diff --git a/lib/models/space_article/vip.g.dart b/lib/models/space_article/vip.g.dart deleted file mode 100644 index 5f95aa41..00000000 --- a/lib/models/space_article/vip.g.dart +++ /dev/null @@ -1,31 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'vip.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Vip _$VipFromJson(Map json) => Vip( - type: (json['type'] as num?)?.toInt(), - status: (json['status'] as num?)?.toInt(), - dueDate: (json['due_date'] as num?)?.toInt(), - vipPayType: (json['vip_pay_type'] as num?)?.toInt(), - themeType: (json['theme_type'] as num?)?.toInt(), - label: json['label'] == null - ? null - : Label.fromJson(json['label'] as Map), - avatarSubscript: (json['avatar_subscript'] as num?)?.toInt(), - nicknameColor: json['nickname_color'] as String?, - ); - -Map _$VipToJson(Vip instance) => { - 'type': instance.type, - 'status': instance.status, - 'due_date': instance.dueDate, - 'vip_pay_type': instance.vipPayType, - 'theme_type': instance.themeType, - 'label': instance.label, - 'avatar_subscript': instance.avatarSubscript, - 'nickname_color': instance.nicknameColor, - }; diff --git a/lib/models/video/reply/member.dart b/lib/models/video/reply/member.dart index 221c0738..d6617b05 100644 --- a/lib/models/video/reply/member.dart +++ b/lib/models/video/reply/member.dart @@ -1,3 +1,5 @@ +import 'package:PiliPlus/models/model_avatar.dart'; + class ReplyMember { ReplyMember({ this.mid, @@ -39,24 +41,6 @@ class ReplyMember { } } -class Pendant { - Pendant({ - this.pid, - this.name, - this.image, - }); - - int? pid; - String? name; - String? image; - - Pendant.fromJson(Map json) { - pid = json['pid']; - name = json['name']; - image = json['image']; - } -} - class UserSailing { UserSailing({this.pendant, this.cardbg}); diff --git a/lib/models/video_detail_res.dart b/lib/models/video_detail_res.dart index 015caf28..03803602 100644 --- a/lib/models/video_detail_res.dart +++ b/lib/models/video_detail_res.dart @@ -1,5 +1,7 @@ import 'dart:convert'; +import 'package:PiliPlus/models/model_avatar.dart'; + class VideoDetailResponse { int? code; String? message; @@ -308,21 +310,6 @@ class Staff { } } -class Vip { - dynamic type; - dynamic status; - - Vip({ - this.type, - this.status, - }); - - Vip.fromJson(Map json) { - type = json["type"]; - status = json["status"]; - } -} - class HonorReply { List? honor; diff --git a/lib/pages/article/controller.dart b/lib/pages/article/controller.dart index 439a37db..d19aaa9f 100644 --- a/lib/pages/article/controller.dart +++ b/lib/pages/article/controller.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart' show ArticleContentModel; import 'package:PiliPlus/models/dynamics/result.dart'; -import 'package:PiliPlus/models/model_owner.dart'; +import 'package:PiliPlus/models/model_avatar.dart'; import 'package:PiliPlus/models/space_article/item.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; @@ -224,7 +224,7 @@ class ArticleController extends ReplyController { } class Summary { - Owner? author; + Avatar? author; String? title; String? cover; diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index 76ab7cb2..6e04a836 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -1,7 +1,7 @@ import 'dart:math'; -import 'package:PiliPlus/common/widgets/avatar.dart'; import 'package:PiliPlus/common/widgets/dialog/report.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/video.dart'; @@ -38,9 +38,9 @@ class AuthorPanel extends StatelessWidget { }); Widget _buildAvatar() { - String? pendant = item.modules.moduleAuthor?.pendant?['image']; - Widget avatar = Avatar( - avatar: item.modules.moduleAuthor?.face ?? '', + String? pendant = item.modules.moduleAuthor?.pendant?.image; + Widget avatar = PendantAvatar( + avatar: item.modules.moduleAuthor?.face, size: pendant.isNullOrEmpty ? 40 : 34, isVip: null, // item.modules.moduleAuthor!.vip['status'] > 0 officialType: null, // 已被注释 @@ -96,8 +96,8 @@ class AuthorPanel extends StatelessWidget { item.modules.moduleAuthor?.name ?? '', style: TextStyle( color: item.modules.moduleAuthor!.vip != null && - item.modules.moduleAuthor!.vip!['status'] > 0 && - item.modules.moduleAuthor!.vip!['type'] == 2 + item.modules.moduleAuthor!.vip!.status > 0 && + item.modules.moduleAuthor!.vip!.type == 2 ? context.vipColor : theme.colorScheme.onSurface, fontSize: theme.textTheme.titleSmall!.fontSize, diff --git a/lib/pages/dynamics/widgets/forward_panel.dart b/lib/pages/dynamics/widgets/forward_panel.dart index 2237d756..23fa78b6 100644 --- a/lib/pages/dynamics/widgets/forward_panel.dart +++ b/lib/pages/dynamics/widgets/forward_panel.dart @@ -420,8 +420,8 @@ Widget forWard( item.modules.moduleAuthor!.name!, style: TextStyle( color: item.modules.moduleAuthor!.vip != null && - item.modules.moduleAuthor!.vip!['status'] > 0 && - item.modules.moduleAuthor!.vip!['type'] == 2 + item.modules.moduleAuthor!.vip!.status > 0 && + item.modules.moduleAuthor!.vip!.type == 2 ? context.vipColor : theme.colorScheme.onSurface, fontSize: theme.textTheme.titleMedium!.fontSize, diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 0eababe2..95d6be15 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/avatar.dart'; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart' show SourceModel; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models/space/card.dart'; import 'package:PiliPlus/models/space/images.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -131,8 +131,7 @@ class UserInfoCard extends StatelessWidget { height: 1, fontSize: 17, fontWeight: FontWeight.bold, - color: (card.vip?.vipStatus ?? -1) > 0 && - card.vip?.vipType == 2 + color: (card.vip?.status ?? -1) > 0 && card.vip?.type == 2 ? context.vipColor : null, ), @@ -143,7 +142,7 @@ class UserInfoCard extends StatelessWidget { height: 11, semanticLabel: '等级${card.levelInfo?.currentLevel}', ), - if (card.vip?.vipStatus == 1) + if (card.vip?.status == 1) Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), @@ -417,12 +416,12 @@ class UserInfoCard extends StatelessWidget { Hero _buildAvatar(BuildContext context) => Hero( tag: card.face ?? '', - child: Avatar( - avatar: card.face ?? '', + child: PendantAvatar( + avatar: card.face, size: 80, badgeSize: 22, officialType: card.officialVerify?.type, - isVip: (card.vip?.vipStatus ?? -1) > 0, + isVip: (card.vip?.status ?? -1) > 0, garbPendantImage: card.pendant!.image!, roomId: live is Map && live['liveStatus'] == 1 ? live['roomid'] : null, onTap: () => context diff --git a/lib/pages/search_panel/user/widgets/item.dart b/lib/pages/search_panel/user/widgets/item.dart index 995f4303..af2baca5 100644 --- a/lib/pages/search_panel/user/widgets/item.dart +++ b/lib/pages/search_panel/user/widgets/item.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/common/widgets/avatar.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; @@ -28,8 +28,8 @@ class SearchUserItem extends StatelessWidget { child: Row( children: [ const SizedBox(width: 15), - Avatar( - avatar: item.upic ?? '', + PendantAvatar( + avatar: item.upic, size: 42, isVip: false, officialType: item.officialVerify?['type'], diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index 6b283d0f..fa2f19a8 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'dart:math'; -import 'package:PiliPlus/common/widgets/avatar.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart' show kDragContainerExtentPercentage, displacement; import 'package:PiliPlus/http/reply.dart'; @@ -2035,7 +2035,7 @@ List get extraSettings => [ leading: Icon(MdiIcons.stickerCircleOutline), setKey: SettingBoxKey.showDynDecorate, defaultVal: true, - onChanged: (value) => Avatar.showDynDecorate = value, + onChanged: (value) => PendantAvatar.showDynDecorate = value, ), SettingsModel( settingsType: SettingsType.sw1tch, diff --git a/lib/pages/video/introduction/ugc/view.dart b/lib/pages/video/introduction/ugc/view.dart index 56e51fda..ea1b2d3a 100644 --- a/lib/pages/video/introduction/ugc/view.dart +++ b/lib/pages/video/introduction/ugc/view.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/avatar.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/video_detail_res.dart'; @@ -296,10 +296,9 @@ class _VideoInfoState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Obx(() => Avatar( + Obx(() => PendantAvatar( avatar: videoIntroController - .userStat['card']?['face'] ?? - '', + .userStat['card']?['face'], size: 35, badgeSize: 14, isVip: (videoIntroController diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index c2f96e9c..4aa945a9 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -1,11 +1,11 @@ import 'dart:math'; import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/avatar.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/dialog/report.dart'; import 'package:PiliPlus/common/widgets/image/image_view.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo, ReplyControl, Content; import 'package:PiliPlus/http/init.dart'; @@ -110,7 +110,8 @@ class ReplyItemGrpc extends StatelessWidget { Widget _buildContent(BuildContext context, ThemeData theme) { return Column( children: [ - if (Avatar.showDynDecorate && replyItem.member.hasGarbCardImage()) + if (PendantAvatar.showDynDecorate && + replyItem.member.hasGarbCardImage()) Stack( clipBehavior: Clip.none, children: [ @@ -163,7 +164,7 @@ class ReplyItemGrpc extends StatelessWidget { ); } - Widget lfAvtar() => Avatar( + Widget lfAvtar() => PendantAvatar( avatar: replyItem.member.face, size: 34, badgeSize: 14,