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_img_str': dmImgStr.substring(0, dmImgStr.length - 2),
'dm_cover_img_str': dmCoverImgStr.substring(0, dmCoverImgStr.length - 2), 'dm_cover_img_str': dmCoverImgStr.substring(0, dmCoverImgStr.length - 2),
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}', 'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
...order == 'charge'
? {
'order': 'pubdate',
'special_type': 'charging',
}
: {}
}); });
var res = await Request().get( var res = await Request().get(
Api.memberArchive, Api.memberArchive,
data: params, data: params,

View File

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

View File

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