opt: avatar model (#814)

This commit is contained in:
My-Responsitories
2025-05-05 00:45:24 +08:00
committed by GitHub
parent 07d2b3b464
commit cdeb843a84
30 changed files with 137 additions and 506 deletions

View File

@@ -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<MainListReply> {
}
class Summary {
Owner? author;
Avatar? author;
String? title;
String? cover;

View File

@@ -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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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'],

View File

@@ -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<SettingsModel> 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,

View File

@@ -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<VideoInfo> {
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Obx(() => Avatar(
Obx(() => PendantAvatar(
avatar: videoIntroController
.userStat['card']?['face'] ??
'',
.userStat['card']?['face'],
size: 35,
badgeSize: 14,
isVip: (videoIntroController

View File

@@ -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,