Files
PiliPlus/lib/pages/popular_series/controller.dart
My-Responsitories f5dbfcec79 tweaks (#2032)
* fix: 1080p

* opt: import export

* opt: downloader

* opt: skeleton

* opt: parseColor

* tweak

* opt: sb seek

* opt: rxn
2026-05-08 20:50:43 +08:00

62 lines
1.8 KiB
Dart

import 'package:PiliPlus/common/widgets/scroll_physics.dart' show ReloadMixin;
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/model_hot_video_item.dart';
import 'package:PiliPlus/models_new/popular/popular_series_list/list.dart';
import 'package:PiliPlus/models_new/popular/popular_series_one/config.dart';
import 'package:PiliPlus/models_new/popular/popular_series_one/data.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
import 'package:get/get.dart';
class PopularSeriesController
extends CommonListController<PopularSeriesOneData, HotVideoItemModel>
with ReloadMixin {
late int number;
final config = Rxn<PopularSeriesConfig>();
String? reminder;
List<PopularSeriesListItem>? seriesList;
@override
void onInit() {
super.onInit();
_getSeriesList();
}
Future<void> _getSeriesList() async {
final res = await VideoHttp.popularSeriesList();
if (res case Success(:final response)) {
if (response != null && response.isNotEmpty) {
number = response.first.number!;
seriesList = response;
queryData();
} else {
loadingState.value = const Success(null);
}
} else {
loadingState.value = res as Error;
}
}
@override
List<HotVideoItemModel>? getDataList(PopularSeriesOneData response) {
config.value = response.config;
reminder = response.reminder;
return response.list;
}
@override
Future<LoadingState<PopularSeriesOneData>> customGetData() =>
VideoHttp.popularSeriesOne(number: number);
@override
Future<void> onReload() {
if (seriesList.isNullOrEmpty) {
return _getSeriesList();
}
reload = true;
return super.onReload();
}
}