mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-21 11:00:13 +08:00
@@ -42,15 +42,19 @@ class MemberFavoriteCtr
|
||||
|
||||
@override
|
||||
bool customHandleResponse(
|
||||
bool isRefresh, Success<List<SpaceFavData>?> response) {
|
||||
bool isRefresh,
|
||||
Success<List<SpaceFavData>?> response,
|
||||
) {
|
||||
try {
|
||||
List<SpaceFavData> res = response.response!;
|
||||
first.value = res.first;
|
||||
second.value = res[1];
|
||||
|
||||
firstEnd.value = (res.first.mediaListResponse?.count ?? -1) <=
|
||||
firstEnd.value =
|
||||
(res.first.mediaListResponse?.count ?? -1) <=
|
||||
(res.first.mediaListResponse?.list?.length ?? -1);
|
||||
secondEnd.value = (res[1].mediaListResponse?.count ?? -1) <=
|
||||
secondEnd.value =
|
||||
(res[1].mediaListResponse?.count ?? -1) <=
|
||||
(res[1].mediaListResponse?.list?.length ?? -1);
|
||||
} catch (e) {
|
||||
if (kDebugMode) debugPrint(e.toString());
|
||||
@@ -60,20 +64,23 @@ class MemberFavoriteCtr
|
||||
}
|
||||
|
||||
Future<void> userfavFolder() async {
|
||||
var res = await Request().get(Api.userFavFolder, queryParameters: {
|
||||
'pn': page,
|
||||
'ps': 20,
|
||||
'up_mid': mid,
|
||||
});
|
||||
var res = await Request().get(
|
||||
Api.userFavFolder,
|
||||
queryParameters: {
|
||||
'pn': page,
|
||||
'ps': 20,
|
||||
'up_mid': mid,
|
||||
},
|
||||
);
|
||||
if (res.data['code'] == 0) {
|
||||
page++;
|
||||
firstEnd.value = res.data['data']['has_more'] == false;
|
||||
if (res.data['data'] != null) {
|
||||
List<SpaceFavItemModel> list =
|
||||
(res.data['data']['list'] as List<dynamic>?)
|
||||
?.map((item) => SpaceFavItemModel.fromJson(item))
|
||||
.toList() ??
|
||||
<SpaceFavItemModel>[];
|
||||
?.map((item) => SpaceFavItemModel.fromJson(item))
|
||||
.toList() ??
|
||||
<SpaceFavItemModel>[];
|
||||
first
|
||||
..value.mediaListResponse?.list?.addAll(list)
|
||||
..refresh();
|
||||
@@ -86,21 +93,24 @@ class MemberFavoriteCtr
|
||||
}
|
||||
|
||||
Future<void> userSubFolder() async {
|
||||
var res = await Request().get(Api.userSubFolder, queryParameters: {
|
||||
'up_mid': mid,
|
||||
'ps': 20,
|
||||
'pn': page1,
|
||||
'platform': 'web',
|
||||
});
|
||||
var res = await Request().get(
|
||||
Api.userSubFolder,
|
||||
queryParameters: {
|
||||
'up_mid': mid,
|
||||
'ps': 20,
|
||||
'pn': page1,
|
||||
'platform': 'web',
|
||||
},
|
||||
);
|
||||
if (res.data['code'] == 0) {
|
||||
page++;
|
||||
secondEnd.value = res.data['data']['has_more'] == false;
|
||||
if (res.data['data'] != null) {
|
||||
List<SpaceFavItemModel> list =
|
||||
(res.data['data']['list'] as List<dynamic>?)
|
||||
?.map((item) => SpaceFavItemModel.fromJson(item))
|
||||
.toList() ??
|
||||
<SpaceFavItemModel>[];
|
||||
?.map((item) => SpaceFavItemModel.fromJson(item))
|
||||
.toList() ??
|
||||
<SpaceFavItemModel>[];
|
||||
second
|
||||
..value.mediaListResponse?.list?.addAll(list)
|
||||
..refresh();
|
||||
|
||||
@@ -45,9 +45,11 @@ class _MemberFavoriteState extends State<MemberFavorite>
|
||||
slivers: [
|
||||
SliverPadding(
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.paddingOf(context).bottom + 80),
|
||||
sliver:
|
||||
Obx(() => _buildBody(theme, _controller.loadingState.value)),
|
||||
bottom: MediaQuery.paddingOf(context).bottom + 80,
|
||||
),
|
||||
sliver: Obx(
|
||||
() => _buildBody(theme, _controller.loadingState.value),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -57,37 +59,40 @@ class _MemberFavoriteState extends State<MemberFavorite>
|
||||
Widget _buildBody(ThemeData theme, LoadingState loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => SliverPadding(
|
||||
padding: const EdgeInsets.only(top: 7),
|
||||
sliver: SliverGrid(
|
||||
gridDelegate: Grid.videoCardHDelegate(context),
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
return const VideoCardHSkeleton();
|
||||
},
|
||||
childCount: 10,
|
||||
),
|
||||
padding: const EdgeInsets.only(top: 7),
|
||||
sliver: SliverGrid(
|
||||
gridDelegate: Grid.videoCardHDelegate(context),
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
return const VideoCardHSkeleton();
|
||||
},
|
||||
childCount: 10,
|
||||
),
|
||||
),
|
||||
Success(:var response) => (response as List?)?.isNotEmpty == true
|
||||
? SliverMainAxisGroup(
|
||||
slivers: [
|
||||
SliverToBoxAdapter(
|
||||
child: Obx(
|
||||
() => _buildItem(theme, _controller.first.value, true)),
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: Obx(
|
||||
() => _buildItem(theme, _controller.second.value, false)),
|
||||
),
|
||||
],
|
||||
)
|
||||
: HttpError(
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
),
|
||||
Success(:var response) =>
|
||||
(response as List?)?.isNotEmpty == true
|
||||
? SliverMainAxisGroup(
|
||||
slivers: [
|
||||
SliverToBoxAdapter(
|
||||
child: Obx(
|
||||
() => _buildItem(theme, _controller.first.value, true),
|
||||
),
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: Obx(
|
||||
() => _buildItem(theme, _controller.second.value, false),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
: HttpError(
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
Error(:var errMsg) => HttpError(
|
||||
errMsg: errMsg,
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
errMsg: errMsg,
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -134,7 +139,8 @@ class _MemberFavoriteState extends State<MemberFavorite>
|
||||
),
|
||||
),
|
||||
Obx(
|
||||
() => (isFirst
|
||||
() =>
|
||||
(isFirst
|
||||
? _controller.firstEnd.value
|
||||
: _controller.secondEnd.value)
|
||||
? const SizedBox.shrink()
|
||||
|
||||
@@ -112,10 +112,10 @@ class MemberFavItem extends StatelessWidget {
|
||||
item.type == 0
|
||||
? '${item.mediaCount}个内容 · ${FavUtil.isPublicFavText(item.attr)}'
|
||||
: item.type == 11
|
||||
? '${item.mediaCount}个内容 · ${item.upper?.name}'
|
||||
: item.type == 21
|
||||
? '创建者: ${item.upper?.name}\n${item.mediaCount}个视频 · ${NumUtil.numFormat(item.viewCount)}播放'
|
||||
: '${item.mediaCount}个内容',
|
||||
? '${item.mediaCount}个内容 · ${item.upper?.name}'
|
||||
: item.type == 21
|
||||
? '创建者: ${item.upper?.name}\n${item.mediaCount}个视频 · ${NumUtil.numFormat(item.viewCount)}播放'
|
||||
: '${item.mediaCount}个内容',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: theme.colorScheme.outline,
|
||||
|
||||
Reference in New Issue
Block a user