feat: show video tags

This commit is contained in:
bggRGjQaUbCoE
2024-09-27 18:34:22 +08:00
parent b88cfae8d9
commit f3744c23bc
10 changed files with 100 additions and 9 deletions

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/http/user.dart';
import 'package:PiliPalaX/pages/common/common_controller.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -45,6 +46,7 @@ class BangumiIntroController extends CommonController {
RxBool hasCoin = false.obs;
// 是否收藏
RxBool hasFav = false.obs;
dynamic videoTags;
Box userInfoCache = GStorage.userInfo;
bool userLogin = false;
Rx<FavFolderData> favFolderData = FavFolderData().obs;
@@ -58,6 +60,7 @@ class BangumiIntroController extends CommonController {
@override
void onInit() {
super.onInit();
queryVideoTags();
if (Get.arguments.isNotEmpty as bool) {
if (Get.arguments.containsKey('bangumiItem') as bool) {
preRender = true;
@@ -94,6 +97,14 @@ class BangumiIntroController extends CommonController {
queryData();
}
Future queryVideoTags() async {
var result = await UserHttp.videoTags(bvid: bvid);
if (result['status']) {
videoTags = result['data'];
debugPrint('tags: ${result['data']}');
}
}
@override
bool customHandleResponse(Success response) {
epId = response.response.episodes!.first.id;

View File

@@ -77,7 +77,10 @@ class _BangumiIntroPanelState extends State<BangumiIntroPanel>
bangumiDetail: loadingState.response,
cid: cid,
showEpisodes: widget.showEpisodes,
showIntroDetail: widget.showIntroDetail,
showIntroDetail: () => widget.showIntroDetail(
loadingState.response,
bangumiIntroController.videoTags,
),
)
: loadingState is Error
? HttpError(
@@ -165,7 +168,7 @@ class _BangumiInfoState extends State<BangumiInfo> {
// 视频介绍
showIntroDetail() {
feedBack();
widget.showIntroDetail(widget.bangumiDetail);
widget.showIntroDetail();
}
@override

View File

@@ -1,16 +1,19 @@
import 'package:PiliPalaX/pages/search/widgets/search_text.dart';
import 'package:flutter/material.dart';
import 'package:PiliPalaX/common/widgets/stat/danmu.dart';
import 'package:PiliPalaX/common/widgets/stat/view.dart';
import 'package:get/get.dart';
import '../../../../utils/utils.dart';
class IntroDetail extends StatelessWidget {
final dynamic bangumiDetail;
final dynamic videoTags;
const IntroDetail({
Key? key,
this.bangumiDetail,
this.videoTags,
}) : super(key: key);
@override
@@ -108,6 +111,23 @@ class IntroDetail extends StatelessWidget {
bangumiDetail.actors,
style: smallTitle.copyWith(fontSize: 13),
),
if (videoTags is List && videoTags.isNotEmpty) ...[
const SizedBox(height: 10),
Wrap(
spacing: 8,
runSpacing: 8,
children: (videoTags as List)
.map(
(item) => SearchText(
fontSize: 13,
searchText: item['tag_name'],
onSelect: (_) => Get.toNamed('/searchResult',
parameters: {'keyword': item['tag_name']}),
),
)
.toList(),
)
],
SizedBox(height: MediaQuery.of(context).padding.bottom + 20)
],
),