opt: member video item

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-26 13:08:40 +08:00
parent 16cdbab7ab
commit 6fee468f49
3 changed files with 110 additions and 95 deletions

View File

@@ -61,12 +61,20 @@ class VideoCardHMemberVideo extends StatelessWidget {
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.cover,
src:
videoItem.season?['cover'] ?? videoItem.cover,
width: maxWidth,
height: maxHeight,
),
),
if (videoItem.duration != null)
if (videoItem.season != null)
PBadge(
text: '合集: ${videoItem.season?['count']}',
right: 6.0,
bottom: 6.0,
type: 'gray',
)
else if (videoItem.duration != null)
PBadge(
text: Utils.timeFormat(videoItem.duration),
right: 6.0,
@@ -118,7 +126,7 @@ class VideoContent extends StatelessWidget {
...[
Expanded(
child: Text(
videoItem.title ?? '',
videoItem.season?['title'] ?? videoItem.title ?? '',
textAlign: TextAlign.start,
style: TextStyle(
fontWeight: FontWeight.w400,
@@ -132,7 +140,9 @@ class VideoContent extends StatelessWidget {
),
],
Text(
videoItem.publishTimeText ?? '',
videoItem.season != null
? Utils.dateFormat(videoItem.season?['mtime'])
: videoItem.publishTimeText ?? '',
maxLines: 1,
style: TextStyle(
fontWeight: FontWeight.w400,
@@ -147,12 +157,13 @@ class VideoContent extends StatelessWidget {
children: [
StatView(
theme: 'gray',
view: videoItem.viewContent,
view: videoItem.season?['view_content'] ??
videoItem.viewContent,
),
const SizedBox(width: 8),
StatDanMu(
theme: 'gray',
danmu: videoItem.danmaku,
danmu: videoItem.season?['danmaku'] ?? videoItem.danmaku,
),
],
),

View File

@@ -59,6 +59,7 @@ class Item {
@JsonKey(name: 'publish_time_text')
String? publishTimeText;
List<Badge>? badges;
Map? season;
Item({
this.title,
@@ -95,6 +96,7 @@ class Item {
this.iconType,
this.publishTimeText,
this.badges,
this.season,
});
factory Item.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json);

View File

@@ -47,6 +47,7 @@ Item _$ItemFromJson(Map<String, dynamic> json) => Item(
badges: (json['badges'] as List<dynamic>?)
?.map((e) => Badge.fromJson(e as Map<String, dynamic>))
.toList(),
season: json['season'],
);
Map<String, dynamic> _$ItemToJson(Item instance) => <String, dynamic>{
@@ -84,4 +85,5 @@ Map<String, dynamic> _$ItemToJson(Item instance) => <String, dynamic>{
'icon_type': instance.iconType,
'publish_time_text': instance.publishTimeText,
'badges': instance.badges,
'season': instance.season,
};