feat: up投稿显示充电专属

This commit is contained in:
guozhigq
2024-07-18 00:52:17 +08:00
parent 5a4bf24b30
commit 9c00d3c4d3
3 changed files with 51 additions and 11 deletions

View File

@ -96,7 +96,14 @@ class MemberHttp {
'dm_img_str': dmImgStr.substring(0, dmImgStr.length - 2),
'dm_cover_img_str': dmCoverImgStr.substring(0, dmCoverImgStr.length - 2),
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
...order == 'charge'
? {
'order': 'pubdate',
'special_type': 'charging',
}
: {}
});
var res = await Request().get(
Api.memberArchive,
data: params,

View File

@ -9,12 +9,14 @@ class MemberArchiveController extends GetxController {
int pn = 1;
int count = 0;
RxMap<String, String> currentOrder = <String, String>{}.obs;
List<Map<String, String>> orderList = [
RxList<Map<String, String>> orderList = [
{'type': 'pubdate', 'label': '最新发布'},
{'type': 'click', 'label': '最多播放'},
{'type': 'stow', 'label': '最多收藏'},
];
{'type': 'charge', 'label': '充电专属'},
].obs;
RxList<VListItemModel> archivesList = <VListItemModel>[].obs;
RxBool isLoading = false.obs;
@override
void onInit() {
@ -27,6 +29,8 @@ class MemberArchiveController extends GetxController {
Future getMemberArchive(type) async {
if (type == 'init') {
pn = 1;
archivesList.clear();
isLoading.value = true;
}
var res = await MemberHttp.memberArchive(
mid: mid,
@ -43,6 +47,7 @@ class MemberArchiveController extends GetxController {
count = res['data'].page['count'];
pn += 1;
}
isLoading.value = false;
return res;
}

View File

@ -1,6 +1,8 @@
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pilipala/common/skeleton/video_card_h.dart';
import 'package:pilipala/common/widgets/no_data.dart';
import 'package:pilipala/common/widgets/video_card_h.dart';
import 'package:pilipala/utils/utils.dart';
import '../../common/widgets/http_error.dart';
@ -47,14 +49,29 @@ class _MemberArchivePageState extends State<MemberArchivePage> {
appBar: AppBar(
titleSpacing: 0,
centerTitle: false,
title: Text('他的投稿', style: Theme.of(context).textTheme.titleMedium),
title: Obx(
() => Text(
'他的投稿 - ${_memberArchivesController.currentOrder['label']}',
style: Theme.of(context).textTheme.titleMedium),
),
actions: [
Obx(
() => TextButton.icon(
icon: const Icon(Icons.sort, size: 20),
onPressed: _memberArchivesController.toggleSort,
label: Text(_memberArchivesController.currentOrder['label']!),
),
// Obx(
PopupMenuButton(
icon: const Icon(Icons.more_vert),
onSelected: (value) {
// 这里处理选择逻辑
_memberArchivesController.currentOrder.value = value;
_memberArchivesController.getMemberArchive('init');
},
itemBuilder: (BuildContext context) =>
_memberArchivesController.orderList.map(
(e) {
return PopupMenuItem(
value: e,
child: Text(e['label']!),
);
},
).toList(),
),
const SizedBox(width: 6),
],
@ -85,7 +102,14 @@ class _MemberArchivePageState extends State<MemberArchivePage> {
childCount: list.length,
),
)
: const SliverToBoxAdapter(),
: _memberArchivesController.isLoading.value
? SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return const VideoCardHSkeleton();
}, childCount: 10),
)
: const NoData(),
);
} else {
return HttpError(
@ -100,7 +124,11 @@ class _MemberArchivePageState extends State<MemberArchivePage> {
);
}
} else {
return const SliverToBoxAdapter();
return SliverList(
delegate: SliverChildBuilderDelegate((context, index) {
return const VideoCardHSkeleton();
}, childCount: 10),
);
}
},
),