Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-07-23 16:47:11 +08:00
parent 148e0872b4
commit 418a1e8d39
821 changed files with 29467 additions and 25520 deletions

View File

@@ -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();

View File

@@ -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()

View File

@@ -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,