46 lines
1.6 KiB
Dart
46 lines
1.6 KiB
Dart
//小说/视频推荐
|
|
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<dynamic> {
|
|
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<dynamic>?, 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);
|
|
}
|
|
}
|