fix save reply

opt profile page

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-07-11 23:36:33 +08:00
parent c346d586a5
commit 44ba554e0e
23 changed files with 64 additions and 57 deletions

View File

@@ -61,7 +61,7 @@ class HotVideoItemModel extends BaseRecVideoItemModel with MultiSelectData {
class HotStat extends Stat { class HotStat extends Stat {
int? reply; int? reply;
int? favorite; int? favorite;
int? coin; num? coin;
int? share; int? share;
int? nowRank; int? nowRank;
int? hisRank; int? hisRank;

View File

@@ -1,5 +1,5 @@
class PgcLCF { class PgcLCF {
int? coinNumber; num? coinNumber;
int? favorite; int? favorite;
int? isOriginal; int? isOriginal;
int? like; int? like;

View File

@@ -2,7 +2,7 @@ class AccountMyInfoData {
int? mid; int? mid;
String? name; String? name;
String? sign; String? sign;
int? coins; num? coins;
String? birthday; String? birthday;
String? face; String? face;
int? faceNftNew; int? faceNftNew;
@@ -46,7 +46,7 @@ class AccountMyInfoData {
mid: json['mid'] as int?, mid: json['mid'] as int?,
name: json['name'] as String?, name: json['name'] as String?,
sign: json['sign'] as String?, sign: json['sign'] as String?,
coins: json['coins'] as int?, coins: json['coins'] as num?,
birthday: json['birthday'] as String?, birthday: json['birthday'] as String?,
face: json['face'] as String?, face: json['face'] as String?,
faceNftNew: json['face_nft_new'] as int?, faceNftNew: json['face_nft_new'] as int?,

View File

@@ -5,7 +5,7 @@ class ArticleInfoData {
int? like; int? like;
bool? attention; bool? attention;
bool? favorite; bool? favorite;
int? coin; num? coin;
Stats? stats; Stats? stats;
String? title; String? title;
String? bannerUrl; String? bannerUrl;
@@ -57,7 +57,7 @@ class ArticleInfoData {
like: json['like'] as int?, like: json['like'] as int?,
attention: json['attention'] as bool?, attention: json['attention'] as bool?,
favorite: json['favorite'] as bool?, favorite: json['favorite'] as bool?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
stats: json['stats'] == null stats: json['stats'] == null
? null ? null
: Stats.fromJson(json['stats'] as Map<String, dynamic>), : Stats.fromJson(json['stats'] as Map<String, dynamic>),

View File

@@ -5,7 +5,7 @@ class Stats {
int? dislike; int? dislike;
int? reply; int? reply;
int? share; int? share;
int? coin; num? coin;
int? dynam1c; int? dynam1c;
Stats({ Stats({
@@ -26,7 +26,7 @@ class Stats {
dislike: json['dislike'] as int?, dislike: json['dislike'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
share: json['share'] as int?, share: json['share'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
dynam1c: json['dynamic'] as int?, dynam1c: json['dynamic'] as int?,
); );
} }

View File

@@ -5,7 +5,7 @@ class Stats {
int? dislike; int? dislike;
int? reply; int? reply;
int? share; int? share;
int? coin; num? coin;
int? dynam1c; int? dynam1c;
Stats({ Stats({
@@ -26,7 +26,7 @@ class Stats {
dislike: json['dislike'] as int?, dislike: json['dislike'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
share: json['share'] as int?, share: json['share'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
dynam1c: json['dynamic'] as int?, dynam1c: json['dynamic'] as int?,
); );
} }

View File

@@ -5,7 +5,7 @@ class Stats {
int? dislike; int? dislike;
int? reply; int? reply;
int? share; int? share;
int? coin; num? coin;
int? dynam1c; int? dynam1c;
Stats({ Stats({
@@ -26,7 +26,7 @@ class Stats {
dislike: json['dislike'] as int?, dislike: json['dislike'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
share: json['share'] as int?, share: json['share'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
dynam1c: json['dynamic'] as int?, dynam1c: json['dynamic'] as int?,
); );
} }

View File

@@ -6,7 +6,7 @@ class CntInfo {
int? share; int? share;
int? reply; int? reply;
int? danmaku; int? danmaku;
int? coin; num? coin;
int? vt; int? vt;
int? playSwitch; int? playSwitch;
String? viewText1; String? viewText1;
@@ -33,7 +33,7 @@ class CntInfo {
share: json['share'] as int?, share: json['share'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
danmaku: json['danmaku'] as int?, danmaku: json['danmaku'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
vt: json['vt'] as int?, vt: json['vt'] as int?,
playSwitch: json['play_switch'] as int?, playSwitch: json['play_switch'] as int?,
viewText1: json['view_text_1'] as String?, viewText1: json['view_text_1'] as String?,

View File

@@ -3,7 +3,7 @@ class Stat {
int? view; int? view;
int? danmaku; int? danmaku;
int? reply; int? reply;
int? coin; num? coin;
int? seriesFollow; int? seriesFollow;
int? seriesView; int? seriesView;
int? likes; int? likes;
@@ -26,7 +26,7 @@ class Stat {
view: json['view'] as int?, view: json['view'] as int?,
danmaku: json['danmaku'] as int?, danmaku: json['danmaku'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
seriesFollow: json['series_follow'] as int?, seriesFollow: json['series_follow'] as int?,
seriesView: json['series_view'] as int?, seriesView: json['series_view'] as int?,
likes: json['likes'] as int?, likes: json['likes'] as int?,

View File

@@ -4,7 +4,7 @@ class Stat {
int? danmaku; int? danmaku;
int? reply; int? reply;
int? favorite; int? favorite;
int? coin; num? coin;
int? share; int? share;
int? nowRank; int? nowRank;
int? hisRank; int? hisRank;
@@ -35,7 +35,7 @@ class Stat {
danmaku: json['danmaku'] as int?, danmaku: json['danmaku'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
favorite: json['favorite'] as int?, favorite: json['favorite'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
share: json['share'] as int?, share: json['share'] as int?,
nowRank: json['now_rank'] as int?, nowRank: json['now_rank'] as int?,
hisRank: json['his_rank'] as int?, hisRank: json['his_rank'] as int?,

View File

@@ -1,11 +1,11 @@
class Coin { class Coin {
int? maxNum; num? maxNum;
int? coinNumber; num? coinNumber;
Coin({this.maxNum, this.coinNumber}); Coin({this.maxNum, this.coinNumber});
factory Coin.fromJson(Map<String, dynamic> json) => Coin( factory Coin.fromJson(Map<String, dynamic> json) => Coin(
maxNum: json['max_num'] as int?, maxNum: json['max_num'] as num?,
coinNumber: json['coin_number'] as int?, coinNumber: json['coin_number'] as num?,
); );
} }

View File

@@ -1,5 +1,5 @@
class Stat { class Stat {
int? coins; num? coins;
int? danmakus; int? danmakus;
int? favorite; int? favorite;
int? favorites; int? favorites;

View File

@@ -2,7 +2,7 @@ import 'package:PiliPlus/models_new/pgc/pgc_info_model/danmaku.dart';
import 'package:PiliPlus/models_new/pgc/pgc_info_model/vt.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/vt.dart';
class StatForUnity { class StatForUnity {
int? coin; num? coin;
Danmaku? danmaku; Danmaku? danmaku;
int? likes; int? likes;
int? reply; int? reply;
@@ -11,7 +11,7 @@ class StatForUnity {
StatForUnity({this.coin, this.danmaku, this.likes, this.reply, this.vt}); StatForUnity({this.coin, this.danmaku, this.likes, this.reply, this.vt});
factory StatForUnity.fromJson(Map<String, dynamic> json) => StatForUnity( factory StatForUnity.fromJson(Map<String, dynamic> json) => StatForUnity(
coin: json['coin'] as int?, coin: json['coin'] as num?,
danmaku: json['danmaku'] == null danmaku: json['danmaku'] == null
? null ? null
: Danmaku.fromJson(json['danmaku'] as Map<String, dynamic>), : Danmaku.fromJson(json['danmaku'] as Map<String, dynamic>),

View File

@@ -5,7 +5,7 @@ class Stats {
int? dislike; int? dislike;
int? reply; int? reply;
int? share; int? share;
int? coin; num? coin;
int? dynam1c; int? dynam1c;
Stats({ Stats({
@@ -26,7 +26,7 @@ class Stats {
dislike: json['dislike'] as int?, dislike: json['dislike'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
share: json['share'] as int?, share: json['share'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
dynam1c: json['dynamic'] as int?, dynam1c: json['dynamic'] as int?,
); );
} }

View File

@@ -5,7 +5,7 @@ class Stats {
int? dislike; int? dislike;
int? reply; int? reply;
int? share; int? share;
int? coin; num? coin;
int? dynam1c; int? dynam1c;
Stats({ Stats({
@@ -26,7 +26,7 @@ class Stats {
dislike: json['dislike'] as int?, dislike: json['dislike'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
share: json['share'] as int?, share: json['share'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
dynam1c: json['dynamic'] as int?, dynam1c: json['dynamic'] as int?,
); );
} }

View File

@@ -21,7 +21,7 @@ class SpaceAudioItem {
int? limit; int? limit;
int? activityId; int? activityId;
String? limitdesc; String? limitdesc;
int? coinNum; num? coinNum;
int? ctime; int? ctime;
Statistic? statistic; Statistic? statistic;
dynamic vipInfo; dynamic vipInfo;
@@ -78,7 +78,7 @@ class SpaceAudioItem {
limit: json['limit'] as int?, limit: json['limit'] as int?,
activityId: json['activityId'] as int?, activityId: json['activityId'] as int?,
limitdesc: json['limitdesc'] as String?, limitdesc: json['limitdesc'] as String?,
coinNum: json['coin_num'] as int?, coinNum: json['coin_num'] as num?,
ctime: json['ctime'] as int?, ctime: json['ctime'] as int?,
statistic: json['statistic'] == null statistic: json['statistic'] == null
? null ? null

View File

@@ -1,6 +1,6 @@
class PgcTriple { class PgcTriple {
int? coin; num? coin;
int? coinNumber; num? coinNumber;
int? favorite; int? favorite;
int? fmid; int? fmid;
int? follow; int? follow;

View File

@@ -4,7 +4,7 @@ class Stat {
int? danmaku; int? danmaku;
int? reply; int? reply;
int? favorite; int? favorite;
int? coin; num? coin;
int? share; int? share;
int? nowRank; int? nowRank;
int? hisRank; int? hisRank;
@@ -35,7 +35,7 @@ class Stat {
danmaku: json['danmaku'] as int?, danmaku: json['danmaku'] as int?,
reply: json['reply'] as int?, reply: json['reply'] as int?,
favorite: json['favorite'] as int?, favorite: json['favorite'] as int?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
share: json['share'] as int?, share: json['share'] as int?,
nowRank: json['now_rank'] as int?, nowRank: json['now_rank'] as int?,
hisRank: json['his_rank'] as int?, hisRank: json['his_rank'] as int?,

View File

@@ -4,7 +4,7 @@ class VideoRelation {
bool? seasonFav; bool? seasonFav;
bool? like; bool? like;
bool? dislike; bool? dislike;
int? coin; num? coin;
VideoRelation({ VideoRelation({
this.attention, this.attention,
@@ -21,6 +21,6 @@ class VideoRelation {
seasonFav: json['season_fav'] as bool?, seasonFav: json['season_fav'] as bool?,
like: json['like'] as bool?, like: json['like'] as bool?,
dislike: json['dislike'] as bool?, dislike: json['dislike'] as bool?,
coin: json['coin'] as int?, coin: json['coin'] as num?,
); );
} }

View File

@@ -14,7 +14,7 @@ abstract class CommonIntroController extends GetxController {
// 是否点赞 // 是否点赞
RxBool hasLike = false.obs; RxBool hasLike = false.obs;
// 投币数量 // 投币数量
final RxInt coinNum = 0.obs; final RxNum coinNum = RxNum(0);
// 是否投币 // 是否投币
bool get hasCoin => coinNum.value != 0; bool get hasCoin => coinNum.value != 0;
// 是否收藏 // 是否收藏

View File

@@ -131,6 +131,8 @@ class _EditProfilePageState extends State<EditProfilePage> {
padding: const EdgeInsets.symmetric(vertical: 5), padding: const EdgeInsets.symmetric(vertical: 5),
child: ClipOval( child: ClipOval(
child: CachedNetworkImage( child: CachedNetworkImage(
width: 55,
height: 55,
imageUrl: ImageUtil.thumbnailUrl(response.face), imageUrl: ImageUtil.thumbnailUrl(response.face),
), ),
), ),
@@ -190,11 +192,11 @@ class _EditProfilePageState extends State<EditProfilePage> {
_item( _item(
theme: theme, theme: theme,
title: '个性签名', title: '个性签名',
text: response.sign.isNullOrEmpty ? '' : response.sign!, text: response.sign,
onTap: () => _editDialog( onTap: () => _editDialog(
type: ProfileType.sign, type: ProfileType.sign,
title: '个性签名', title: '个性签名',
text: response.sign!, text: response.sign ?? '',
), ),
), ),
divider1, divider1,
@@ -273,6 +275,7 @@ class _EditProfilePageState extends State<EditProfilePage> {
required String text, required String text,
}) { }) {
_textController.text = text; _textController.text = text;
final lines = type == ProfileType.uname ? 1 : 4;
showDialog( showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
@@ -281,8 +284,8 @@ class _EditProfilePageState extends State<EditProfilePage> {
title: Text('修改$title'), title: Text('修改$title'),
content: TextField( content: TextField(
controller: _textController, controller: _textController,
minLines: type == ProfileType.uname ? 1 : 4, minLines: lines,
maxLines: type == ProfileType.uname ? 1 : 4, maxLines: lines,
autofocus: true, autofocus: true,
style: const TextStyle(fontSize: 14), style: const TextStyle(fontSize: 14),
textInputAction: textInputAction:
@@ -427,18 +430,20 @@ class _EditProfilePageState extends State<EditProfilePage> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
), ),
trailing: Row( title: Row(
mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
if (text != null) if (text != null)
Text( Flexible(
text, child: Text(
maxLines: 1, text,
overflow: TextOverflow.ellipsis, maxLines: 1,
style: TextStyle( overflow: TextOverflow.ellipsis,
fontSize: 14, style: TextStyle(
fontWeight: FontWeight.normal, fontSize: 14,
color: theme.colorScheme.outline, fontWeight: FontWeight.normal,
color: theme.colorScheme.outline,
),
), ),
) )
else if (widget != null) else if (widget != null)
@@ -448,6 +453,8 @@ class _EditProfilePageState extends State<EditProfilePage> {
Icons.keyboard_arrow_right, Icons.keyboard_arrow_right,
color: theme.colorScheme.outline, color: theme.colorScheme.outline,
) )
else
const SizedBox(width: 24)
], ],
), ),
); );

View File

@@ -368,10 +368,9 @@ class _SavePanelState extends State<SavePanel> {
if (pubdate != null) ...[ if (pubdate != null) ...[
const Spacer(), const Spacer(),
Text( Text(
DateTime.fromMillisecondsSinceEpoch( DateUtil.format(pubdate,
pubdate! * 1000) format:
.toString() DateUtil.longFormatDs),
.substring(0, 19),
style: TextStyle( style: TextStyle(
color: color:
theme.colorScheme.outline, theme.colorScheme.outline,

View File

@@ -238,7 +238,8 @@ class ReplyItemGrpc extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Text( Text(
replyLevel == 0 replyLevel == 0
? DateUtil.longFormatDs.format(DateTime.now()) ? DateUtil.format(replyItem.ctime.toInt(),
format: DateUtil.longFormatDs)
: DateUtil.dateFormat(replyItem.ctime.toInt()), : DateUtil.dateFormat(replyItem.ctime.toInt()),
style: TextStyle( style: TextStyle(
fontSize: theme.textTheme.labelSmall!.fontSize, fontSize: theme.textTheme.labelSmall!.fontSize,