mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-27 11:38:40 +00:00
refa: query data (#659)
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -8,7 +8,8 @@ import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
import '../../models/user/sub_folder.dart';
|
||||
|
||||
class SubController extends CommonController {
|
||||
class SubController
|
||||
extends CommonListController<List<SubFolderItemData>?, SubFolderItemData> {
|
||||
dynamic mid;
|
||||
|
||||
@override
|
||||
@@ -49,9 +50,10 @@ class SubController extends CommonController {
|
||||
var res = await UserHttp.cancelSub(
|
||||
id: subFolderItem.id!, type: subFolderItem.type!);
|
||||
if (res['status']) {
|
||||
List list = (loadingState.value as Success).response;
|
||||
List<SubFolderItemData> list =
|
||||
(loadingState.value as Success).response;
|
||||
list.remove(subFolderItem);
|
||||
loadingState.value = LoadingState.success(list);
|
||||
loadingState.refresh();
|
||||
SmartDialog.showToast('取消订阅成功');
|
||||
} else {
|
||||
SmartDialog.showToast(res['msg']);
|
||||
@@ -66,7 +68,8 @@ class SubController extends CommonController {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<LoadingState> customGetData() => UserHttp.userSubFolder(
|
||||
Future<LoadingState<List<SubFolderItemData>?>> customGetData() =>
|
||||
UserHttp.userSubFolder(
|
||||
pn: currentPage,
|
||||
ps: 20,
|
||||
mid: mid,
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/skeleton/video_card_h.dart';
|
||||
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/user/sub_folder.dart';
|
||||
import 'package:PiliPlus/pages/subscription/widgets/item.dart';
|
||||
import 'package:PiliPlus/utils/grid.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -41,7 +42,7 @@ class _SubPageState extends State<SubPage> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(LoadingState loadingState) {
|
||||
Widget _buildBody(LoadingState<List<SubFolderItemData>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => SliverGrid(
|
||||
gridDelegate: SliverGridDelegateWithExtentAndRatio(
|
||||
@@ -54,7 +55,7 @@ class _SubPageState extends State<SubPage> {
|
||||
childCount: 10,
|
||||
),
|
||||
),
|
||||
Success() => (loadingState.response as List?)?.isNotEmpty == true
|
||||
Success() => loadingState.response?.isNotEmpty == true
|
||||
? SliverGrid(
|
||||
gridDelegate: SliverGridDelegateWithExtentAndRatio(
|
||||
mainAxisSpacing: 2,
|
||||
@@ -62,13 +63,13 @@ class _SubPageState extends State<SubPage> {
|
||||
childAspectRatio: StyleString.aspectRatio * 2.2,
|
||||
),
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
childCount: loadingState.response.length,
|
||||
childCount: loadingState.response!.length,
|
||||
(BuildContext context, int index) {
|
||||
if (index == loadingState.response.length - 1) {
|
||||
if (index == loadingState.response!.length - 1) {
|
||||
_subController.onLoadMore();
|
||||
}
|
||||
return SubItem(
|
||||
subFolderItem: loadingState.response[index],
|
||||
subFolderItem: loadingState.response![index],
|
||||
cancelSub: _subController.cancelSub,
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user