feat: 动态跳转番剧

This commit is contained in:
guozhigq
2023-08-18 11:12:18 +08:00
parent 083d05ed7e
commit 85ff7c7a92
3 changed files with 37 additions and 1 deletions

View File

@ -478,6 +478,8 @@ class DynamicArchiveModel {
this.stat, this.stat,
this.title, this.title,
this.type, this.type,
this.epid,
this.seasonId,
}); });
int? aid; int? aid;
@ -491,6 +493,8 @@ class DynamicArchiveModel {
Stat? stat; Stat? stat;
String? title; String? title;
int? type; int? type;
int? epid;
int? seasonId;
DynamicArchiveModel.fromJson(Map<String, dynamic> json) { DynamicArchiveModel.fromJson(Map<String, dynamic> json) {
aid = json['aid'] is String ? int.parse(json['aid']) : json['aid']; aid = json['aid'] is String ? int.parse(json['aid']) : json['aid'];
@ -503,6 +507,8 @@ class DynamicArchiveModel {
stat = json['stat'] != null ? Stat.fromJson(json['stat']) : null; stat = json['stat'] != null ? Stat.fromJson(json['stat']) : null;
title = json['title']; title = json['title'];
type = json['type']; type = json['type'];
epid = json['epid'];
seasonId = json['season_id'];
} }
} }

View File

@ -5,11 +5,14 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pilipala/http/dynamics.dart'; import 'package:pilipala/http/dynamics.dart';
import 'package:pilipala/http/search.dart'; import 'package:pilipala/http/search.dart';
import 'package:pilipala/models/bangumi/info.dart';
import 'package:pilipala/models/common/dynamics_type.dart'; import 'package:pilipala/models/common/dynamics_type.dart';
import 'package:pilipala/models/common/search_type.dart';
import 'package:pilipala/models/dynamics/result.dart'; import 'package:pilipala/models/dynamics/result.dart';
import 'package:pilipala/models/dynamics/up.dart'; import 'package:pilipala/models/dynamics/up.dart';
import 'package:pilipala/models/live/item.dart'; import 'package:pilipala/models/live/item.dart';
import 'package:pilipala/utils/feed_back.dart'; import 'package:pilipala/utils/feed_back.dart';
import 'package:pilipala/utils/utils.dart';
class DynamicsController extends GetxController { class DynamicsController extends GetxController {
int page = 1; int page = 1;
@ -142,6 +145,32 @@ class DynamicsController extends GetxController {
/// TODO /// TODO
case 'DYNAMIC_TYPE_UGC_SEASON': case 'DYNAMIC_TYPE_UGC_SEASON':
print('合集'); print('合集');
break;
case 'DYNAMIC_TYPE_PGC_UNION':
print('DYNAMIC_TYPE_PGC_UNION 番剧');
DynamicArchiveModel pgc = item.modules.moduleDynamic.major.pgc;
if (pgc.epid != null) {
SmartDialog.showLoading(msg: '获取中...');
var res = await SearchHttp.bangumiInfo(epId: pgc.epid);
SmartDialog.dismiss();
if (res['status']) {
EpisodeItem episode = res['data'].episodes.first;
String bvid = episode.bvid!;
int cid = episode.cid!;
String pic = episode.cover!;
String heroTag = Utils.makeHeroTag(cid);
Get.toNamed(
'/video?bvid=$bvid&cid=$cid&seasonId=${res['data'].seasonId}',
arguments: {
'pic': pic,
'heroTag': heroTag,
'videoType': SearchType.media_bangumi,
'bangumiItem': res['data'],
},
);
}
}
break;
} }
} }

View File

@ -36,7 +36,8 @@ Widget author(item, context) {
Text( Text(
item.modules.moduleAuthor.name, item.modules.moduleAuthor.name,
style: TextStyle( style: TextStyle(
color: item.modules.moduleAuthor!.vip!['status'] > 0 color: item.modules.moduleAuthor!.vip != null &&
item.modules.moduleAuthor!.vip['status'] > 0
? const Color.fromARGB(255, 251, 100, 163) ? const Color.fromARGB(255, 251, 100, 163)
: Theme.of(context).colorScheme.onBackground, : Theme.of(context).colorScheme.onBackground,
fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, fontSize: Theme.of(context).textTheme.titleSmall!.fontSize,