//小说/视频推荐 import 'package:hgdj/hj_utils/api_service/acg_service.dart'; import 'package:hgdj/hj_utils/const.dart'; import 'package:hgdj/tools_base/base_list_controller.dart'; import '../../hj_utils/api_service/common_service.dart'; class CartoonRecommendLogic extends ListBaseLogic { final String? mediaId; //acg 推荐的 tagId final MediaStyle mediaStyle; //推荐类型:Video(真人视频) / Cartoon(动漫) / Comics(漫画) final String? videoTagId; //视频(SP)推荐的 tagId,按当前视频 tag 拉同类 CartoonRecommendLogic( {this.mediaId, this.mediaStyle = MediaStyle.Comics, this.videoTagId}); @override void onReady() { super.onReady(); loadData(); } //isRefresh 下拉刷新/加载更多;showLoading 切换时先清空显示 loading void loadData({bool isRefresh = true, bool showLoading = false}) { if (showLoading) { dataList = null; update(); } fetchData(isRefresh: isRefresh, fetch: _fetch); } //按类型分流:视频走 getRecommendList,漫画/动漫走 comicsRecommendList Future<(List?, bool)> _fetch(int page) async { if (mediaStyle == MediaStyle.Video) { final resp = await CommonService.getRecommendList( pageNumber: page, pageSize: 12, tagId: videoTagId, newsType: mediaStyle.rankParam); return (resp?.videos, resp?.hasNext == true); } final model = await ACGService.comicsRecommendList(page, 12, tagId: mediaId, mediaType: mediaStyle.rankParam); return (model?.list, model?.hasNext == true); } }