Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-07-23 16:47:11 +08:00
parent 148e0872b4
commit 418a1e8d39
821 changed files with 29467 additions and 25520 deletions

View File

@@ -18,13 +18,13 @@ class ReplyContent {
});
factory ReplyContent.fromJson(Map<String, dynamic> json) => ReplyContent(
message: json['message'] as String?,
members: json['members'] as List<dynamic>?,
jumpUrl: json['jump_url'],
maxLine: json['max_line'] as int?,
pictures: (json['pictures'] as List<dynamic>?)
?.map((e) => ReplyPicture.fromJson(e as Map<String, dynamic>))
.toList(),
pictureScale: (json['picture_scale'] as num?)?.toDouble(),
);
message: json['message'] as String?,
members: json['members'] as List<dynamic>?,
jumpUrl: json['jump_url'],
maxLine: json['max_line'] as int?,
pictures: (json['pictures'] as List<dynamic>?)
?.map((e) => ReplyPicture.fromJson(e as Map<String, dynamic>))
.toList(),
pictureScale: (json['picture_scale'] as num?)?.toDouble(),
);
}

View File

@@ -42,24 +42,24 @@ class ReplyControl {
});
factory ReplyControl.fromJson(Map<String, dynamic> json) => ReplyControl(
inputDisable: json['input_disable'] as bool?,
rootInputText: json['root_input_text'] as String?,
childInputText: json['child_input_text'] as String?,
giveupInputText: json['giveup_input_text'] as String?,
screenshotIconState: json['screenshot_icon_state'] as int?,
uploadPictureIconState: json['upload_picture_icon_state'] as int?,
answerGuideText: json['answer_guide_text'] as String?,
answerGuideIconUrl: json['answer_guide_icon_url'] as String?,
answerGuideIosUrl: json['answer_guide_ios_url'] as String?,
answerGuideAndroidUrl: json['answer_guide_android_url'] as String?,
bgText: json['bg_text'] as String?,
emptyPage: json['empty_page'] as dynamic,
showType: json['show_type'] as int?,
showText: json['show_text'] as String?,
webSelection: json['web_selection'] as bool?,
disableJumpEmote: json['disable_jump_emote'] as bool?,
enableCharged: json['enable_charged'] as bool?,
enableCmBizHelper: json['enable_cm_biz_helper'] as bool?,
preloadResources: json['preload_resources'] as dynamic,
);
inputDisable: json['input_disable'] as bool?,
rootInputText: json['root_input_text'] as String?,
childInputText: json['child_input_text'] as String?,
giveupInputText: json['giveup_input_text'] as String?,
screenshotIconState: json['screenshot_icon_state'] as int?,
uploadPictureIconState: json['upload_picture_icon_state'] as int?,
answerGuideText: json['answer_guide_text'] as String?,
answerGuideIconUrl: json['answer_guide_icon_url'] as String?,
answerGuideIosUrl: json['answer_guide_ios_url'] as String?,
answerGuideAndroidUrl: json['answer_guide_android_url'] as String?,
bgText: json['bg_text'] as String?,
emptyPage: json['empty_page'] as dynamic,
showType: json['show_type'] as int?,
showText: json['show_text'] as String?,
webSelection: json['web_selection'] as bool?,
disableJumpEmote: json['disable_jump_emote'] as bool?,
enableCharged: json['enable_charged'] as bool?,
enableCmBizHelper: json['enable_cm_biz_helper'] as bool?,
preloadResources: json['preload_resources'] as dynamic,
);
}

View File

@@ -28,19 +28,20 @@ class ReplyCursor {
});
factory ReplyCursor.fromJson(Map<String, dynamic> json) => ReplyCursor(
isBegin: json['is_begin'] as bool?,
prev: json['prev'] as int?,
next: json['next'] as int?,
isEnd: json['is_end'] as bool?,
paginationReply: json['pagination_reply'] == null
? null
: PaginationReply.fromJson(
json['pagination_reply'] as Map<String, dynamic>),
sessionId: json['session_id'] as String?,
mode: json['mode'] as int?,
modeText: json['mode_text'] as String?,
allCount: json['all_count'] as int?,
supportMode: (json['support_mode'] as List?)?.cast(),
name: json['name'] as String?,
);
isBegin: json['is_begin'] as bool?,
prev: json['prev'] as int?,
next: json['next'] as int?,
isEnd: json['is_end'] as bool?,
paginationReply: json['pagination_reply'] == null
? null
: PaginationReply.fromJson(
json['pagination_reply'] as Map<String, dynamic>,
),
sessionId: json['session_id'] as String?,
mode: json['mode'] as int?,
modeText: json['mode_text'] as String?,
allCount: json['all_count'] as int?,
supportMode: (json['support_mode'] as List?)?.cast(),
name: json['name'] as String?,
);
}

View File

@@ -39,34 +39,33 @@ class ReplyData {
});
factory ReplyData.fromJson(Map<String, dynamic> json) => ReplyData(
cursor: json['cursor'] == null
? null
: ReplyCursor.fromJson(json['cursor'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
top: json['top'] == null
? null
: Top.fromJson(json['top'] as Map<String, dynamic>),
topReplies: (json['top_replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
upSelection: json['up_selection'] == null
? null
: UpSelection.fromJson(
json['up_selection'] as Map<String, dynamic>),
assist: json['assist'] as int?,
blacklist: json['blacklist'] as int?,
vote: json['vote'] as int?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
control: json['control'] == null
? null
: ReplyControl.fromJson(json['control'] as Map<String, dynamic>),
note: json['note'] as int?,
esportsGradeCard: json['esports_grade_card'] as dynamic,
callbacks: json['callbacks'] as dynamic,
contextFeature: json['context_feature'] as String?,
);
cursor: json['cursor'] == null
? null
: ReplyCursor.fromJson(json['cursor'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
top: json['top'] == null
? null
: Top.fromJson(json['top'] as Map<String, dynamic>),
topReplies: (json['top_replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
upSelection: json['up_selection'] == null
? null
: UpSelection.fromJson(json['up_selection'] as Map<String, dynamic>),
assist: json['assist'] as int?,
blacklist: json['blacklist'] as int?,
vote: json['vote'] as int?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
control: json['control'] == null
? null
: ReplyControl.fromJson(json['control'] as Map<String, dynamic>),
note: json['note'] as int?,
esportsGradeCard: json['esports_grade_card'] as dynamic,
callbacks: json['callbacks'] as dynamic,
contextFeature: json['context_feature'] as String?,
);
}

View File

@@ -6,8 +6,8 @@ class ReplyFolder {
ReplyFolder({this.hasFolded, this.isFolded, this.rule});
factory ReplyFolder.fromJson(Map<String, dynamic> json) => ReplyFolder(
hasFolded: json['has_folded'] as bool?,
isFolded: json['is_folded'] as bool?,
rule: json['rule'] as String?,
);
hasFolded: json['has_folded'] as bool?,
isFolded: json['is_folded'] as bool?,
rule: json['rule'] as String?,
);
}

View File

@@ -12,9 +12,9 @@ class LevelInfo {
});
factory LevelInfo.fromJson(Map<String, dynamic> json) => LevelInfo(
currentLevel: json['current_level'] as int?,
currentMin: json['current_min'] as int?,
currentExp: json['current_exp'] as int?,
nextExp: json['next_exp'] as int?,
);
currentLevel: json['current_level'] as int?,
currentMin: json['current_min'] as int?,
currentExp: json['current_exp'] as int?,
nextExp: json['next_exp'] as int?,
);
}

View File

@@ -46,36 +46,37 @@ class ReplyMember {
});
factory ReplyMember.fromJson(Map<String, dynamic> json) => ReplyMember(
mid: json['mid'] as String?,
uname: json['uname'] as String?,
sex: json['sex'] as String?,
sign: json['sign'] as String?,
avatar: json['avatar'] as String?,
rank: json['rank'] as String?,
faceNftNew: json['face_nft_new'] as int?,
isSeniorMember: json['is_senior_member'] as int?,
senior: json['senior'] == null
? null
: Senior.fromJson(json['senior'] as Map<String, dynamic>),
levelInfo: json['level_info'] == null
? null
: LevelInfo.fromJson(json['level_info'] as Map<String, dynamic>),
pendant: json['pendant'] == null
? null
: Pendant.fromJson(json['pendant'] as Map<String, dynamic>),
nameplate: json['nameplate'] == null
? null
: Nameplate.fromJson(json['nameplate'] as Map<String, dynamic>),
officialVerify: json['official_verify'] == null
? null
: BaseOfficialVerify.fromJson(
json['official_verify'] as Map<String, dynamic>),
vip: json['vip'] == null
? null
: Vip.fromJson(json['vip'] as Map<String, dynamic>),
fansDetail: json['fans_detail'] as dynamic,
isContractor: json['is_contractor'] as bool?,
contractDesc: json['contract_desc'] as String?,
nftInteraction: json['nft_interaction'] as dynamic,
);
mid: json['mid'] as String?,
uname: json['uname'] as String?,
sex: json['sex'] as String?,
sign: json['sign'] as String?,
avatar: json['avatar'] as String?,
rank: json['rank'] as String?,
faceNftNew: json['face_nft_new'] as int?,
isSeniorMember: json['is_senior_member'] as int?,
senior: json['senior'] == null
? null
: Senior.fromJson(json['senior'] as Map<String, dynamic>),
levelInfo: json['level_info'] == null
? null
: LevelInfo.fromJson(json['level_info'] as Map<String, dynamic>),
pendant: json['pendant'] == null
? null
: Pendant.fromJson(json['pendant'] as Map<String, dynamic>),
nameplate: json['nameplate'] == null
? null
: Nameplate.fromJson(json['nameplate'] as Map<String, dynamic>),
officialVerify: json['official_verify'] == null
? null
: BaseOfficialVerify.fromJson(
json['official_verify'] as Map<String, dynamic>,
),
vip: json['vip'] == null
? null
: Vip.fromJson(json['vip'] as Map<String, dynamic>),
fansDetail: json['fans_detail'] as dynamic,
isContractor: json['is_contractor'] as bool?,
contractDesc: json['contract_desc'] as String?,
nftInteraction: json['nft_interaction'] as dynamic,
);
}

View File

@@ -16,11 +16,11 @@ class Nameplate {
});
factory Nameplate.fromJson(Map<String, dynamic> json) => Nameplate(
nid: json['nid'] as int?,
name: json['name'] as String?,
image: json['image'] as String?,
imageSmall: json['image_small'] as String?,
level: json['level'] as String?,
condition: json['condition'] as String?,
);
nid: json['nid'] as int?,
name: json['name'] as String?,
image: json['image'] as String?,
imageSmall: json['image_small'] as String?,
level: json['level'] as String?,
condition: json['condition'] as String?,
);
}

View File

@@ -16,11 +16,11 @@ class ReplyPicture {
});
factory ReplyPicture.fromJson(Map<String, dynamic> json) => ReplyPicture(
imgSrc: json['img_src'] as String?,
imgWidth: json['img_width'] as int?,
imgHeight: json['img_height'] as int?,
imgSize: (json['img_size'] as num?)?.toDouble(),
topRightIcon: json['top_right_icon'] as String?,
playGifThumbnail: json['play_gif_thumbnail'] as bool?,
);
imgSrc: json['img_src'] as String?,
imgWidth: json['img_width'] as int?,
imgHeight: json['img_height'] as int?,
imgSize: (json['img_size'] as num?)?.toDouble(),
topRightIcon: json['top_right_icon'] as String?,
playGifThumbnail: json['play_gif_thumbnail'] as bool?,
);
}

View File

@@ -76,51 +76,50 @@ class ReplyItemModel {
});
factory ReplyItemModel.fromJson(Map<String, dynamic> json) => ReplyItemModel(
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(
json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicId: json['dynamic_id'] as int?,
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicId: json['dynamic_id'] as int?,
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
}

View File

@@ -16,11 +16,11 @@ class ReplyControl {
});
factory ReplyControl.fromJson(Map<String, dynamic> json) => ReplyControl(
maxLine: json['max_line'] as int?,
timeDesc: json['time_desc'] as String?,
bizScene: json['biz_scene'] as String?,
location: json['location'] as String?,
isNoteV2: json['is_note_v2'] as bool?,
translationSwitch: json['translation_switch'] as int?,
);
maxLine: json['max_line'] as int?,
timeDesc: json['time_desc'] as String?,
bizScene: json['biz_scene'] as String?,
location: json['location'] as String?,
isNoteV2: json['is_note_v2'] as bool?,
translationSwitch: json['translation_switch'] as int?,
);
}

View File

@@ -4,6 +4,6 @@ class Senior {
Senior({this.status});
factory Senior.fromJson(Map<String, dynamic> json) => Senior(
status: json['status'] as int?,
);
status: json['status'] as int?,
);
}

View File

@@ -8,10 +8,10 @@ class Top {
Top({this.admin, this.upper, this.vote});
factory Top.fromJson(Map<String, dynamic> json) => Top(
admin: json['admin'] as dynamic,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
vote: json['vote'] as dynamic,
);
admin: json['admin'] as dynamic,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
vote: json['vote'] as dynamic,
);
}

View File

@@ -75,50 +75,49 @@ class TopReply {
});
factory TopReply.fromJson(Map<String, dynamic> json) => TopReply(
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(
json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
}

View File

@@ -5,7 +5,7 @@ class UpAction {
UpAction({this.like, this.reply});
factory UpAction.fromJson(Map<String, dynamic> json) => UpAction(
like: json['like'] as bool?,
reply: json['reply'] as bool?,
);
like: json['like'] as bool?,
reply: json['reply'] as bool?,
);
}

View File

@@ -5,7 +5,7 @@ class UpSelection {
UpSelection({this.pendingCount, this.ignoreCount});
factory UpSelection.fromJson(Map<String, dynamic> json) => UpSelection(
pendingCount: json['pending_count'] as int?,
ignoreCount: json['ignore_count'] as int?,
);
pendingCount: json['pending_count'] as int?,
ignoreCount: json['ignore_count'] as int?,
);
}

View File

@@ -75,50 +75,49 @@ class Upper {
});
factory Upper.fromJson(Map<String, dynamic> json) => Upper(
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(
json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
rpid: json['rpid'] as int?,
oid: json['oid'] as int?,
type: json['type'] as int?,
mid: json['mid'] as int?,
root: json['root'] as int?,
parent: json['parent'] as int?,
dialog: json['dialog'] as int?,
count: json['count'] as int?,
rcount: json['rcount'] as int?,
state: json['state'] as int?,
fansgrade: json['fansgrade'] as int?,
attr: json['attr'] as int?,
ctime: json['ctime'] as int?,
midStr: json['mid_str'] as String?,
oidStr: json['oid_str'] as String?,
rpidStr: json['rpid_str'] as String?,
rootStr: json['root_str'] as String?,
parentStr: json['parent_str'] as String?,
dialogStr: json['dialog_str'] as String?,
like: json['like'] as int?,
action: json['action'] as int?,
member: json['member'] == null
? null
: ReplyMember.fromJson(json['member'] as Map<String, dynamic>),
content: json['content'] == null
? null
: ReplyContent.fromJson(json['content'] as Map<String, dynamic>),
replies: (json['replies'] as List<dynamic>?)
?.map((e) => ReplyItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
assist: json['assist'] as int?,
upAction: json['up_action'] == null
? null
: UpAction.fromJson(json['up_action'] as Map<String, dynamic>),
invisible: json['invisible'] as bool?,
replyControl: json['reply_control'] == null
? null
: ReplyControl.fromJson(json['reply_control'] as Map<String, dynamic>),
folder: json['folder'] == null
? null
: ReplyFolder.fromJson(json['folder'] as Map<String, dynamic>),
dynamicIdStr: json['dynamic_id_str'] as String?,
noteCvidStr: json['note_cvid_str'] as String?,
trackInfo: json['track_info'] as String?,
);
}