mod: 我的收藏

This commit is contained in:
guozhigq
2023-07-23 23:43:51 +08:00
parent dbfe85e781
commit bafda1f0bd
5 changed files with 153 additions and 48 deletions

View File

@@ -4,30 +4,42 @@ import 'package:pilipala/http/user.dart';
import 'package:pilipala/http/video.dart';
import 'package:pilipala/models/user/fav_detail.dart';
import 'package:pilipala/models/user/fav_folder.dart';
import 'package:pilipala/utils/id_utils.dart';
class FavDetailController extends GetxController {
FavFolderItemData? item;
Rx<FavDetailData> favDetailData = FavDetailData().obs;
int? mediaId;
late String heroTag;
int currentPage = 1;
bool isLoadingMore = false;
RxMap favInfo = {}.obs;
RxList<FavDetailItemData> favList = [FavDetailItemData()].obs;
@override
void onInit() {
item = Get.arguments;
if (Get.parameters.keys.isNotEmpty) {
mediaId = int.parse(Get.parameters['mediaId']!);
heroTag = Get.parameters['heroTag']!;
}
super.onInit();
}
Future<dynamic> queryUserFavFolderDetail() async {
print('🐯🐯虎');
Future<dynamic> queryUserFavFolderDetail({type = 'init'}) async {
var res = await await UserHttp.userFavFolderDetail(
pn: 1,
ps: 15,
pn: currentPage,
ps: 20,
mediaId: mediaId!,
);
favDetailData.value = res['data'];
if (res['status']) {
favInfo.value = res['data'].info;
if (currentPage == 1 && type == 'init') {
favList.value = res['data'].medias;
} else if (type == 'onload') {
favList.addAll(res['data'].medias);
}
}
return res;
}
@@ -49,4 +61,8 @@ class FavDetailController extends GetxController {
}
}
}
onLoad() {
queryUserFavFolderDetail(type: 'onload');
}
}

View File

@@ -34,6 +34,14 @@ class _FavDetailPageState extends State<FavDetailPage> {
} else if (_controller.offset <= 160) {
titleStreamC.add(false);
}
if (_controller.position.pixels >=
_controller.position.maxScrollExtent - 200) {
if (!_favDetailController.isLoadingMore) {
_favDetailController.isLoadingMore = true;
_favDetailController.onLoad();
}
}
},
);
}
@@ -109,9 +117,8 @@ class _FavDetailPageState extends State<FavDetailPage> {
// mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 180,
height: 110,
Hero(
tag: _favDetailController.heroTag,
child: NetworkImgLayer(
width: 180,
height: 110,
@@ -156,7 +163,7 @@ class _FavDetailPageState extends State<FavDetailPage> {
padding: const EdgeInsets.only(top: 15, bottom: 8, left: 14),
child: Obx(
() => Text(
'${_favDetailController.favDetailData.value.medias != null ? _favDetailController.favDetailData.value.medias!.length : '-'}条视频',
'${_favDetailController.favInfo['media_count'] ?? '-'}条视频',
style: TextStyle(
fontSize:
Theme.of(context).textTheme.labelMedium!.fontSize,
@@ -184,12 +191,9 @@ class _FavDetailPageState extends State<FavDetailPage> {
() => SliverList(
delegate: SliverChildBuilderDelegate((context, index) {
return FavVideoCardH(
videoItem: _favDetailController
.favDetailData.value.medias![index],
videoItem: _favDetailController.favList[index],
);
},
childCount: _favDetailController
.favDetailData.value.medias!.length),
}, childCount: _favDetailController.favList.length),
),
);
}