diff --git a/lib/common/widgets/video_popup_menu.dart b/lib/common/widgets/video_popup_menu.dart index fe3cda74e..57a720bdd 100644 --- a/lib/common/widgets/video_popup_menu.dart +++ b/lib/common/widgets/video_popup_menu.dart @@ -67,212 +67,221 @@ class VideoCustomActions { ), if (videoItem is! SpaceArchiveItem) VideoCustomAction( - '不感兴趣', 'dislike', Icon(MdiIcons.thumbDownOutline, size: 16), - () async { - String? accessKey = Accounts.get(AccountType.recommend).accessKey; - if (accessKey == null || accessKey == "") { - SmartDialog.showToast("请退出账号后重新登录"); - return; - } - if (videoItem is RecVideoItemAppModel) { - RecVideoItemAppModel v = videoItem as RecVideoItemAppModel; - ThreePoint? tp = v.threePoint; - if (tp == null) { - SmartDialog.showToast("未能获取threePoint"); + '不感兴趣', + 'dislike', + Icon(MdiIcons.thumbDownOutline, size: 16), + () { + String? accessKey = Accounts.get(AccountType.recommend).accessKey; + if (accessKey == null || accessKey == "") { + SmartDialog.showToast("请退出账号后重新登录"); return; } - if (tp.dislikeReasons == null && tp.feedbacks == null) { - SmartDialog.showToast("未能获取dislikeReasons或feedbacks"); - return; - } - Widget actionButton(Reason? r, Reason? f) { - return SearchText( - text: r?.name ?? f?.name ?? '未知', - onTap: (_) async { - Get.back(); - SmartDialog.showLoading(msg: '正在提交'); - var res = await VideoHttp.feedDislike( - reasonId: r?.id, - feedbackId: f?.id, - id: v.param!, - goto: v.goto!, - ); - SmartDialog.dismiss(); - SmartDialog.showToast( - res['status'] ? (r?.toast ?? f?.toast) : res['msg'], - ); - if (res['status']) { - onRemove?.call(); - } - }, - ); - } - - showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (tp.dislikeReasons != null) ...[ - const Text('我不想看'), - const SizedBox(height: 5), - Wrap( - spacing: 8.0, - runSpacing: 8.0, - children: tp.dislikeReasons!.map((item) { - return actionButton(item, null); - }).toList(), - ), - ], - if (tp.feedbacks != null) ...[ - const SizedBox(height: 5), - const Text('反馈'), - const SizedBox(height: 5), - Wrap( - spacing: 8.0, - runSpacing: 8.0, - children: tp.feedbacks!.map((item) { - return actionButton(null, item); - }).toList(), - ), - ], - const Divider(), - Center( - child: FilledButton.tonal( - onPressed: () async { - SmartDialog.showLoading(msg: '正在提交'); - var res = await VideoHttp.feedDislikeCancel( - id: v.param!, - goto: v.goto!, - ); - SmartDialog.dismiss(); - SmartDialog.showToast( - res['status'] ? "成功" : res['msg']); - Get.back(); - }, - style: FilledButton.styleFrom( - visualDensity: VisualDensity.compact, - ), - child: const Text("撤销"), - ), - ), - ], - ), - ), + if (videoItem is RecVideoItemAppModel) { + RecVideoItemAppModel v = videoItem as RecVideoItemAppModel; + ThreePoint? tp = v.threePoint; + if (tp == null) { + SmartDialog.showToast("未能获取threePoint"); + return; + } + if (tp.dislikeReasons == null && tp.feedbacks == null) { + SmartDialog.showToast("未能获取dislikeReasons或feedbacks"); + return; + } + Widget actionButton(Reason? r, Reason? f) { + return SearchText( + text: r?.name ?? f?.name ?? '未知', + onTap: (_) async { + Get.back(); + SmartDialog.showLoading(msg: '正在提交'); + var res = await VideoHttp.feedDislike( + reasonId: r?.id, + feedbackId: f?.id, + id: v.param!, + goto: v.goto!, + ); + SmartDialog.dismiss(); + SmartDialog.showToast( + res['status'] ? (r?.toast ?? f?.toast) : res['msg'], + ); + if (res['status']) { + onRemove?.call(); + } + }, ); - }, - ); - } else { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: SingleChildScrollView( - child: Column( - children: [ - const SizedBox(height: 5), - const Text("web端暂不支持精细选择"), - const SizedBox(height: 5), - Wrap( - spacing: 5.0, - runSpacing: 2.0, - children: [ - FilledButton.tonal( - onPressed: () async { - Get.back(); - SmartDialog.showLoading(msg: '正在提交'); - var res = await VideoHttp.dislikeVideo( - bvid: videoItem.bvid as String, type: true); - SmartDialog.dismiss(); - SmartDialog.showToast( - res['status'] ? "点踩成功" : res['msg'], - ); - if (res['status']) { - onRemove?.call(); - } - }, - style: FilledButton.styleFrom( - visualDensity: VisualDensity.compact, - ), - child: const Text("点踩"), + } + + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (tp.dislikeReasons != null) ...[ + const Text('我不想看'), + const SizedBox(height: 5), + Wrap( + spacing: 8.0, + runSpacing: 8.0, + children: tp.dislikeReasons!.map((item) { + return actionButton(item, null); + }).toList(), ), - FilledButton.tonal( + ], + if (tp.feedbacks != null) ...[ + const SizedBox(height: 5), + const Text('反馈'), + const SizedBox(height: 5), + Wrap( + spacing: 8.0, + runSpacing: 8.0, + children: tp.feedbacks!.map((item) { + return actionButton(null, item); + }).toList(), + ), + ], + const Divider(), + Center( + child: FilledButton.tonal( onPressed: () async { - Get.back(); SmartDialog.showLoading(msg: '正在提交'); - var res = await VideoHttp.dislikeVideo( - bvid: videoItem.bvid as String, - type: false); + var res = await VideoHttp.feedDislikeCancel( + id: v.param!, + goto: v.goto!, + ); SmartDialog.dismiss(); SmartDialog.showToast( - res['status'] ? "取消踩" : res['msg']); + res['status'] ? "成功" : res['msg']); + Get.back(); }, style: FilledButton.styleFrom( visualDensity: VisualDensity.compact, ), child: const Text("撤销"), ), - ], - ) - ], + ), + ], + ), ), - ), + ); + }, + ); + } else { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: SingleChildScrollView( + child: Column( + children: [ + const SizedBox(height: 5), + const Text("web端暂不支持精细选择"), + const SizedBox(height: 5), + Wrap( + spacing: 5.0, + runSpacing: 2.0, + children: [ + FilledButton.tonal( + onPressed: () async { + Get.back(); + SmartDialog.showLoading(msg: '正在提交'); + var res = await VideoHttp.dislikeVideo( + bvid: videoItem.bvid as String, + type: true); + SmartDialog.dismiss(); + SmartDialog.showToast( + res['status'] ? "点踩成功" : res['msg'], + ); + if (res['status']) { + onRemove?.call(); + } + }, + style: FilledButton.styleFrom( + visualDensity: VisualDensity.compact, + ), + child: const Text("点踩"), + ), + FilledButton.tonal( + onPressed: () async { + Get.back(); + SmartDialog.showLoading(msg: '正在提交'); + var res = await VideoHttp.dislikeVideo( + bvid: videoItem.bvid as String, + type: false); + SmartDialog.dismiss(); + SmartDialog.showToast( + res['status'] ? "取消踩" : res['msg']); + }, + style: FilledButton.styleFrom( + visualDensity: VisualDensity.compact, + ), + child: const Text("撤销"), + ), + ], + ) + ], + ), + ), + ); + }, + ); + } + }, + ), + if (videoItem is! SpaceArchiveItem) + VideoCustomAction( + '拉黑:${videoItem.owner.name}', + 'block', + Icon(MdiIcons.cancel, size: 16), + () { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: const Text('提示'), + content: Text( + '确定拉黑:${videoItem.owner.name}(${videoItem.owner.mid})?' + '\n\n注:被拉黑的Up可以在隐私设置-黑名单管理中解除'), + actions: [ + TextButton( + onPressed: () => Get.back(), + child: Text( + '点错了', + style: TextStyle( + color: Theme.of(context).colorScheme.outline), + ), + ), + TextButton( + onPressed: () async { + var res = await VideoHttp.relationMod( + mid: videoItem.owner.mid!, + act: 5, + reSrc: 11, + ); + GStorage.setBlackMid(videoItem.owner.mid!); + Get.back(); + SmartDialog.showToast(res['msg'] ?? '成功'); + }, + child: const Text('确认'), + ) + ], ); }, ); - } - }), - if (videoItem is! SpaceArchiveItem) - VideoCustomAction('拉黑:${videoItem.owner.name}', 'block', - Icon(MdiIcons.cancel, size: 16), () { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: const Text('提示'), - content: - Text('确定拉黑:${videoItem.owner.name}(${videoItem.owner.mid})?' - '\n\n注:被拉黑的Up可以在隐私设置-黑名单管理中解除'), - actions: [ - TextButton( - onPressed: () => Get.back(), - child: Text( - '点错了', - style: TextStyle( - color: Theme.of(context).colorScheme.outline), - ), - ), - TextButton( - onPressed: () async { - var res = await VideoHttp.relationMod( - mid: videoItem.owner.mid!, - act: 5, - reSrc: 11, - ); - GStorage.setBlackMid(videoItem.owner.mid!); - Get.back(); - SmartDialog.showToast(res['msg'] ?? '成功'); - }, - child: const Text('确认'), - ) - ], - ); - }, - ); - }), + }, + ), VideoCustomAction( - "${MineController.anonymity.value ? '退出' : '进入'}无痕模式", - 'anonymity', - Icon( - MineController.anonymity.value - ? MdiIcons.incognitoOff - : MdiIcons.incognito, - size: 16, - ), - () => MineController.onChangeAnonymity(context)) + "${MineController.anonymity.value ? '退出' : '进入'}无痕模式", + 'anonymity', + Icon( + MineController.anonymity.value + ? MdiIcons.incognitoOff + : MdiIcons.incognito, + size: 16, + ), + () => MineController.onChangeAnonymity(context), + ) ]; } } diff --git a/lib/grpc/grpc_repo.dart b/lib/grpc/grpc_repo.dart index ada06f1b2..801d7f059 100644 --- a/lib/grpc/grpc_repo.dart +++ b/lib/grpc/grpc_repo.dart @@ -184,7 +184,7 @@ class GrpcRepo { options: Options(headers: headers, responseType: ResponseType.bytes)); if (response.data is Map) { - return LoadingState.error(response.data['message']); + return Error(response.data['message']); } if (response.headers.value('Grpc-Status') == '0') { @@ -192,9 +192,9 @@ class GrpcRepo { Uint8List data = response.data; data = decompressProtobuf(data); final grpcResponse = grpcParser(data); - return LoadingState.success(grpcResponse); + return Success(grpcResponse); } catch (e) { - return LoadingState.error(e.toString()); + return Error(e.toString()); } } else { try { @@ -218,9 +218,9 @@ class GrpcRepo { .replaceAll(_unprintableRegExp, ''); } } - return LoadingState.error(msg); + return Error(msg); } catch (e) { - return LoadingState.error(e.toString()); + return Error(e.toString()); } } } diff --git a/lib/http/bangumi.dart b/lib/http/bangumi.dart index 657df4157..581dacb9a 100644 --- a/lib/http/bangumi.dart +++ b/lib/http/bangumi.dart @@ -26,13 +26,13 @@ class BangumiHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']); + return Success(res.data['data']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } - static Future pgcIndexCondition({ + static Future> pgcIndexCondition({ seasonType, type, indexType, @@ -46,9 +46,9 @@ class BangumiHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(PgcIndexCondition.fromJson(res.data['data'])); + return Success(PgcIndexCondition.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -63,9 +63,9 @@ class BangumiHttp { if (res.data['code'] == 0) { BangumiListDataModel data = BangumiListDataModel.fromJson(res.data['data']); - return LoadingState.success(data.list); + return Success(data.list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -82,10 +82,9 @@ class BangumiHttp { 'pn': pn, }); if (res.data['code'] == 0) { - return LoadingState.success( - BangumiListDataModel.fromJson(res.data['data'])); + return Success(BangumiListDataModel.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -103,9 +102,9 @@ class BangumiHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(PgcTimeline.fromJson(res.data).result); + return Success(PgcTimeline.fromJson(res.data).result); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/black.dart b/lib/http/black.dart index 1ad35468b..1630743d7 100644 --- a/lib/http/black.dart +++ b/lib/http/black.dart @@ -16,9 +16,9 @@ class BlackHttp { }); if (res.data['code'] == 0) { BlackListDataModel data = BlackListDataModel.fromJson(res.data['data']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/dynamics.dart b/lib/http/dynamics.dart index 1eaf15653..81de18088 100644 --- a/lib/http/dynamics.dart +++ b/lib/http/dynamics.dart @@ -44,12 +44,12 @@ class DynamicsHttp { 'ADDITIONAL_TYPE_GOODS', ); } - return LoadingState.success(data); + return Success(data); } catch (err) { - return LoadingState.error(err.toString()); + return Error(err.toString()); } } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -203,10 +203,11 @@ class DynamicsHttp { 'web_location': '333.976', }), ); - - return res.data['code'] == 0 - ? LoadingState.success(SpaceArticleItem.fromJson(res.data['data'])) - : LoadingState.error(res.data['message']); + if (res.data['code'] == 0) { + return Success(SpaceArticleItem.fromJson(res.data['data'])); + } else { + return Error(res.data['message']); + } } static Future> opusDetail( @@ -219,19 +220,21 @@ class DynamicsHttp { 'id': opusId, }), ); - - return res.data['code'] == 0 - ? LoadingState.success(DynamicItemModel.fromOpusJson(res.data['data'])) - : LoadingState.error(res.data['message']); + if (res.data['code'] == 0) { + return Success(DynamicItemModel.fromOpusJson(res.data['data'])); + } else { + return Error(res.data['message']); + } } static Future> voteInfo(dynamic voteId) async { final res = await Request().get(Api.voteInfo, queryParameters: {'vote_id': voteId}); - - return res.data['code'] == 0 - ? LoadingState.success(VoteInfo.fromSeparatedJson(res.data['data'])) - : LoadingState.error(res.data['message']); + if (res.data['code'] == 0) { + return Success(VoteInfo.fromSeparatedJson(res.data['data'])); + } else { + return Error(res.data['message']); + } } static Future> doVote({ @@ -255,10 +258,11 @@ class DynamicsHttp { queryParameters: {'csrf': csrf}, data: data, options: Options(contentType: Headers.jsonContentType)); - - return res.data['code'] == 0 - ? LoadingState.success(VoteInfo.fromJson(res.data['data']['vote_info'])) - : LoadingState.error(res.data['message']); + if (res.data['code'] == 0) { + return Success(VoteInfo.fromJson(res.data['data']['vote_info'])); + } else { + return Error(res.data['message']); + } } static Future> topicTop({required topicId}) async { @@ -273,9 +277,9 @@ class DynamicsHttp { TopDetails? data = res.data['data']?['top_details'] == null ? null : TopDetails.fromJson(res.data['data']['top_details']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -300,9 +304,9 @@ class DynamicsHttp { TopicCardList? data = res.data['data']?['topic_card_list'] == null ? null : TopicCardList.fromJson(res.data['data']['topic_card_list']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -317,9 +321,9 @@ class DynamicsHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(ArticleListData.fromJson(res.data['data'])); + return Success(ArticleListData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/fan.dart b/lib/http/fan.dart index 98fe6df2c..a26136d1f 100644 --- a/lib/http/fan.dart +++ b/lib/http/fan.dart @@ -14,9 +14,9 @@ class FanHttp { 'order_type': orderType, }); if (res.data['code'] == 0) { - return LoadingState.success(FansDataModel.fromJson(res.data['data'])); + return Success(FansDataModel.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/follow.dart b/lib/http/follow.dart index a54ce2bab..59db9bc92 100644 --- a/lib/http/follow.dart +++ b/lib/http/follow.dart @@ -42,11 +42,11 @@ class FollowHttp { }); if (res.data['code'] == 0) { - return LoadingState.success( + return Success( FollowDataModel.fromJson(res.data['data']), ); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/live.dart b/lib/http/live.dart index 43a6bb21f..1d98d92dc 100644 --- a/lib/http/live.dart +++ b/lib/http/live.dart @@ -50,13 +50,13 @@ class LiveHttp { List? list = (res.data['data']?['list'] as List?) ?.map((e) => LiveItemModel.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { String? vVoucher; if (gaiaVtoken == null && res.data['code'] == -352) { vVoucher = res.headers['x-bili-gaia-vvoucher']?.firstOrNull; } - return LoadingState.error(vVoucher ?? res.data['message']); + return Error(vVoucher ?? res.data['message']); } } @@ -167,10 +167,9 @@ class LiveHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success( - LiveEmoteData.fromJson(res.data['data']).data); + return Success(LiveEmoteData.fromJson(res.data['data']).data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -212,9 +211,9 @@ class LiveHttp { queryParameters: params, ); if (res.data['code'] == 0) { - return LoadingState.success(LiveIndexData.fromJson(res.data['data'])); + return Success(LiveIndexData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -229,9 +228,9 @@ class LiveHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(LiveFollowData.fromJson(res.data['data'])); + return Success(LiveFollowData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -280,9 +279,9 @@ class LiveHttp { queryParameters: params, ); if (res.data['code'] == 0) { - return LoadingState.success(LiveSecondData.fromJson(res.data['data'])); + return Success(LiveSecondData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -313,11 +312,11 @@ class LiveHttp { queryParameters: params, ); if (res.data['code'] == 0) { - return LoadingState.success((res.data['data']?['list'] as List?) + return Success((res.data['data']?['list'] as List?) ?.map((e) => AreaList.fromJson(e)) .toList()); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -349,12 +348,12 @@ class LiveHttp { ); if (res.data['code'] == 0) { - return LoadingState.success((res.data['data']?['tags'] as List?) + return Success((res.data['data']?['tags'] as List?) ?.map((e) => AreaItem.fromJson(e)) .toList() ?? []); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -427,11 +426,11 @@ class LiveHttp { queryParameters: params, ); if (res.data['code'] == 0) { - return LoadingState.success((res.data['data'] as List?) + return Success((res.data['data'] as List?) ?.map((e) => AreaItem.fromJson(e)) .toList()); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -469,9 +468,9 @@ class LiveHttp { queryParameters: params, ); if (res.data['code'] == 0) { - return LoadingState.success(LiveSearchData.fromJson(res.data['data'])); + return Success(LiveSearchData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/loading_state.dart b/lib/http/loading_state.dart index f81fdb6fe..9e3efc88f 100644 --- a/lib/http/loading_state.dart +++ b/lib/http/loading_state.dart @@ -1,23 +1,19 @@ -import 'dart:core' hide Error; - import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; sealed class LoadingState { const LoadingState(); factory LoadingState.loading() = Loading; - factory LoadingState.success(T response) = Success; - factory LoadingState.error(String errMsg) = Error; bool get isSuccess => this is Success; T get data => switch (this) { - Success(response: final res) => res, + Success(:var response) => response, _ => throw this, }; T? get dataOrNull => switch (this) { - Success(response: final res) => res, + Success(:var response) => response, _ => null, }; @@ -57,7 +53,7 @@ class Success extends LoadingState { } class Error extends LoadingState { - final String errMsg; + final String? errMsg; const Error(this.errMsg); @override diff --git a/lib/http/member.dart b/lib/http/member.dart index 00c96998a..bcb72af6e 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -76,9 +76,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(SpaceArticleData.fromJson(res.data['data'])); + return Success(SpaceArticleData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -106,9 +106,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(SpaceFav.fromJson(res.data).data); + return Success(SpaceFav.fromJson(res.data).data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -125,9 +125,9 @@ class MemberHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']?['items_lists']); + return Success(res.data['data']?['items_lists']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -180,9 +180,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(SpaceArchiveData.fromJson(res.data['data'])); + return Success(SpaceArchiveData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -222,9 +222,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']); + return Success(res.data['data']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -254,9 +254,9 @@ class MemberHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(SpaceData.fromJson(res.data['data'])); + return Success(SpaceData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -408,14 +408,12 @@ class MemberHttp { }), ); if (res.data['code'] == 0) { - return LoadingState.success( - MemberArchiveDataModel.fromJson(res.data['data'])); + return Success(MemberArchiveDataModel.fromJson(res.data['data'])); } else { Map errMap = { -352: '风控校验失败,请检查登录状态', }; - return LoadingState.error( - errMap[res.data['code']] ?? res.data['message']); + return Error(errMap[res.data['code']] ?? res.data['message']); } } @@ -450,13 +448,12 @@ class MemberHttp { item.modules.moduleDynamic?.additional?.type == 'ADDITIONAL_TYPE_GOODS'); } - return LoadingState.success(data); + return Success(data); } else { Map errMap = { -352: '风控校验失败,请检查登录状态', }; - return LoadingState.error( - errMap[res.data['code']] ?? res.data['message']); + return Error(errMap[res.data['code']] ?? res.data['message']); } } @@ -509,9 +506,9 @@ class MemberHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(DynamicsDataModel.fromJson(res.data['data'])); + return Success(DynamicsDataModel.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -596,12 +593,12 @@ class MemberHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(FollowDataModel( + return Success(FollowDataModel( list: (res.data['data'] as List?) ?.map((e) => FollowItemModel.fromJson(e)) .toList())); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -726,9 +723,9 @@ class MemberHttp { List? list = (res.data['data'] as List?) ?.map((e) => MemberCoinsDataModel.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -754,9 +751,9 @@ class MemberHttp { List? list = (res.data['data']?['list'] as List?) ?.map((e) => MemberCoinsDataModel.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -827,9 +824,9 @@ class MemberHttp { 'wts': params['wts'], }); if (res.data['code'] == 0) { - return LoadingState.success(FollowDataModel.fromJson(res.data['data'])); + return Success(FollowDataModel.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -850,9 +847,9 @@ class MemberHttp { }), ); if (res.data['code'] == 0) { - return LoadingState.success(SpaceOpusData.fromJson(res.data['data'])); + return Success(SpaceOpusData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } } diff --git a/lib/http/msg.dart b/lib/http/msg.dart index dac6d340e..f4cc2fe41 100644 --- a/lib/http/msg.dart +++ b/lib/http/msg.dart @@ -29,9 +29,9 @@ class MsgHttp { }); if (res.data['code'] == 0) { MsgFeedReplyMe data = MsgFeedReplyMe.fromJson(res.data['data']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -46,9 +46,9 @@ class MsgHttp { }); if (res.data['code'] == 0) { MsgFeedAtMe data = MsgFeedAtMe.fromJson(res.data['data']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -63,9 +63,9 @@ class MsgHttp { }); if (res.data['code'] == 0) { MsgFeedLikeMe data = MsgFeedLikeMe.fromJson(res.data['data']); - return LoadingState.success(data); + return Success(data); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -79,9 +79,9 @@ class MsgHttp { List? list = (res.data['data'] as List?) ?.map((e) => SystemNotifyList.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -419,14 +419,14 @@ class MsgHttp { var res = await Request().get(Api.sessionList, queryParameters: params); if (res.data['code'] == 0) { try { - return LoadingState.success( + return Success( SessionDataModel.fromJson(res.data['data']).sessionList, ); } catch (err) { - return LoadingState.error(err.toString()); + return Error(err.toString()); } } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -470,13 +470,12 @@ class MsgHttp { var res = await Request().get(Api.sessionMsg, queryParameters: params); if (res.data['code'] == 0) { try { - return LoadingState.success( - SessionMsgDataModel.fromJson(res.data['data'])); + return Success(SessionMsgDataModel.fromJson(res.data['data'])); } catch (err) { - return LoadingState.error(err.toString()); + return Error(err.toString()); } } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } diff --git a/lib/http/reply.dart b/lib/http/reply.dart index 004502e17..ee49978e2 100644 --- a/lib/http/reply.dart +++ b/lib/http/reply.dart @@ -115,9 +115,9 @@ class ReplyHttp { }); } } - return LoadingState.success(replyData); + return Success(replyData); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -173,9 +173,9 @@ class ReplyHttp { replyData.replies!.removeWhere(needRemove); } } - return LoadingState.success(replyData); + return Success(replyData); } else { - return LoadingState.error( + return Error( isCheck == true ? '${res.data['code']}${res.data['message']}' : res.data['message'], @@ -240,10 +240,9 @@ class ReplyHttp { 'web_location': '333.1245', }); if (res.data['code'] == 0) { - return LoadingState.success( - EmoteModelData.fromJson(res.data['data']).packages); + return Success(EmoteModelData.fromJson(res.data['data']).packages); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } diff --git a/lib/http/search.dart b/lib/http/search.dart index 593de2bd3..d40b7f803 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -76,7 +76,7 @@ class SearchHttp { queryParameters: params, ); if (res.data is! Map) { - return LoadingState.error('没有相关数据'); + return Error('没有相关数据'); } if (res.data['code'] == 0) { dynamic data; @@ -105,13 +105,13 @@ class SearchHttp { data = SearchArticleModel.fromJson(res.data['data']); break; } - return LoadingState.success(data); + return Success(data); } catch (err) { debugPrint(err.toString()); - return LoadingState.error(err.toString()); + return Error(err.toString()); } } else { - return LoadingState.error(res.data['message'] ?? '没有相关数据'); + return Error(res.data['message'] ?? '没有相关数据'); } } @@ -144,17 +144,17 @@ class SearchHttp { queryParameters: params, ); if (res.data is! Map) { - return LoadingState.error('没有相关数据'); + return Error('没有相关数据'); } if (res.data['code'] == 0) { try { - return LoadingState.success(SearchAllModel.fromJson(res.data['data'])); + return Success(SearchAllModel.fromJson(res.data['data'])); } catch (err) { debugPrint(err.toString()); - return LoadingState.error(err.toString()); + return Error(err.toString()); } } else { - return LoadingState.error(res.data['message'] ?? '没有相关数据'); + return Error(res.data['message'] ?? '没有相关数据'); } } @@ -187,10 +187,9 @@ class SearchHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success( - BangumiInfoModel.fromJson(res.data['result'])); + return Success(BangumiInfoModel.fromJson(res.data['result'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -202,9 +201,9 @@ class SearchHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']); + return Success(res.data['data']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -240,9 +239,9 @@ class SearchHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(TrendingData.fromJson(res.data['data'])); + return Success(TrendingData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -254,8 +253,10 @@ class SearchHttp { 'platform': 'android', 's_locale': 'zh_CN', }); - return res.data['code'] == 0 - ? LoadingState.success(SearchKeywordData.fromJson(res.data['data'])) - : LoadingState.error(res.data['message']); + if (res.data['code'] == 0) { + return Success(SearchKeywordData.fromJson(res.data['data'])); + } else { + return Error(res.data['message']); + } } } diff --git a/lib/http/user.dart b/lib/http/user.dart index c9bb6a3b7..e689f8254 100644 --- a/lib/http/user.dart +++ b/lib/http/user.dart @@ -61,9 +61,9 @@ class UserHttp { 'up_mid': mid, }); if (res.data['code'] == 0) { - return LoadingState.success(FavFolderData.fromJson(res.data['data'])); + return Success(FavFolderData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message'] ?? '账号未登录'); + return Error(res.data['message'] ?? '账号未登录'); } } @@ -214,9 +214,9 @@ class UserHttp { 'platform': 'web' }); if (res.data['code'] == 0) { - return LoadingState.success(FavDetailData.fromJson(res.data['data'])); + return Success(FavDetailData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -241,7 +241,7 @@ class UserHttp { ); if (res.data['code'] == 0) { if (res.data['data']['count'] == 0) { - return LoadingState.success({'count': 0}); + return Success({'count': 0}); } List list = []; if (res.data['data']?['list'] != null) { @@ -249,12 +249,12 @@ class UserHttp { list.add(HotVideoItemModel.fromJson(i)); } } - return LoadingState.success({ + return Success({ 'list': list, 'count': res.data['data']['count'], }); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -271,9 +271,9 @@ class UserHttp { 'view_at': viewAt ?? 0, }); if (res.data['code'] == 0) { - return LoadingState.success(HistoryData.fromJson(res.data['data'])); + return Success(HistoryData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -431,9 +431,9 @@ class UserHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(HistoryData.fromJson(res.data['data'])); + return Success(HistoryData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -453,10 +453,9 @@ class UserHttp { }, ); if (res.data['code'] == 0 && res.data['data'] is Map) { - return LoadingState.success( - SubFolderModelData.fromJson(res.data['data']).list); + return Success(SubFolderModelData.fromJson(res.data['data']).list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -474,10 +473,9 @@ class UserHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success( - SubDetailModelData.fromJson(res.data['data'])); + return Success(SubDetailModelData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -489,9 +487,9 @@ class UserHttp { 'page': page, }); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']); + return Success(res.data['data']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -570,10 +568,9 @@ class UserHttp { 'pn': pn, }); if (res.data['code'] == 0) { - return LoadingState.success( - SubDetailModelData.fromJson(res.data['data'])); + return Success(SubDetailModelData.fromJson(res.data['data'])); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } diff --git a/lib/http/video.dart b/lib/http/video.dart index 8fabe9007..5ec8b795c 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -60,9 +60,9 @@ class VideoHttp { } } } - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -137,9 +137,9 @@ class VideoHttp { } } } - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -166,9 +166,9 @@ class VideoHttp { list.add(HotVideoItemModel.fromJson(i)); } } - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -335,9 +335,9 @@ class VideoHttp { final list = RecommendFilter.applyFilterToRelatedVideos ? items?.where((i) => !RecommendFilter.filterAll(i)).toList() : items?.toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -972,9 +972,9 @@ class VideoHttp { list.add(HotVideoItemModel.fromJson(i)); } } - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -989,11 +989,11 @@ class VideoHttp { }), ); if (res.data['code'] == 0) { - return LoadingState.success((res.data['result']?['list'] as List?) + return Success((res.data['result']?['list'] as List?) ?.map((e) => PgcRankItemModel.fromJson(e)) .toList()); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -1008,11 +1008,11 @@ class VideoHttp { }), ); if (res.data['code'] == 0) { - return LoadingState.success((res.data['data']?['list'] as List?) + return Success((res.data['data']?['list'] as List?) ?.map((e) => PgcRankItemModel.fromJson(e)) .toList()); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -1033,9 +1033,9 @@ class VideoHttp { }, ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']); + return Success(res.data['data']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -1054,9 +1054,9 @@ class VideoHttp { List? list = (res.data['data']?['list'] as List?) ?.map((e) => FavArticleModel.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -1075,9 +1075,9 @@ class VideoHttp { List? list = (res.data['data']?['list'] as List?) ?.map((e) => FavArticleModel.fromJson(e)) .toList(); - return LoadingState.success(list); + return Success(list); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } @@ -1123,9 +1123,9 @@ class VideoHttp { ), ); if (res.data['code'] == 0) { - return LoadingState.success(res.data['data']?['list']); + return Success(res.data['data']?['list']); } else { - return LoadingState.error(res.data['message']); + return Error(res.data['message']); } } diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index 3da6d1d91..0fae2f6c8 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -544,11 +544,11 @@ class _ArticlePageState extends State return const VideoReplySkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.builder( - itemCount: loadingState.response!.length + 1, + itemCount: response!.length + 1, itemBuilder: (context, index) { - if (index == loadingState.response!.length) { + if (index == response.length) { _articleCtr.onLoadMore(); return Container( alignment: Alignment.center, @@ -556,11 +556,7 @@ class _ArticlePageState extends State bottom: MediaQuery.of(context).padding.bottom), height: 125, child: Text( - _articleCtr.isEnd.not - ? '加载中...' - : loadingState.response!.isEmpty - ? '还没有评论' - : '没有更多了', + _articleCtr.isEnd.not ? '加载中...' : '没有更多了', style: TextStyle( fontSize: 12, color: theme.colorScheme.outline, @@ -569,14 +565,14 @@ class _ArticlePageState extends State ); } else { return ReplyItemGrpc( - replyItem: loadingState.response![index], + replyItem: response[index], replyLevel: '1', replyReply: (replyItem, id) => replyReply(context, replyItem, id), onReply: () { _articleCtr.onReply( context, - replyItem: loadingState.response![index], + replyItem: response[index], index: index, ); }, @@ -597,11 +593,9 @@ class _ArticlePageState extends State } }, ) - : HttpError( - onReload: _articleCtr.onReload, - ), - Error() => HttpError( - errMsg: loadingState.errMsg, + : HttpError(onReload: _articleCtr.onReload), + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _articleCtr.onReload, ), }; diff --git a/lib/pages/article_list/view.dart b/lib/pages/article_list/view.dart index cc58c3c82..a0baa3984 100644 --- a/lib/pages/article_list/view.dart +++ b/lib/pages/article_list/view.dart @@ -66,7 +66,7 @@ class _ArticleListPageState extends State { ), ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: 2, @@ -77,15 +77,15 @@ class _ArticleListPageState extends State { delegate: SliverChildBuilderDelegate( (context, index) { return ArticleListItem( - item: loadingState.response![index], + item: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: _controller.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/bangumi/controller.dart b/lib/pages/bangumi/controller.dart index 5d8e47c8d..81f254167 100644 --- a/lib/pages/bangumi/controller.dart +++ b/lib/pages/bangumi/controller.dart @@ -89,7 +89,7 @@ class BangumiController extends CommonListController< if (list.isNullOrEmpty) { followEnd = true; if (isRefresh) { - followState.value = LoadingState.success(list); + followState.value = Success(list); } followLoading = false; return; @@ -99,7 +99,7 @@ class BangumiController extends CommonListController< if (list!.length >= followCount.value) { followEnd = true; } - followState.value = LoadingState.success(list); + followState.value = Success(list); followController?.animToTop(); } else if (followState.value is Success) { final currentList = followState.value.data!..addAll(list!); @@ -118,7 +118,7 @@ class BangumiController extends CommonListController< @override Future?>> customGetData() => BangumiHttp.bangumiList( - page: currentPage, + page: page, indexType: tabType == HomeTabType.cinema ? 102 : null, // TODO: sort ); diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index 061548c08..36c3611b3 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -72,15 +72,13 @@ class _BangumiPageState extends CommonPageState ThemeData theme, LoadingState?> loadingState) => switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Builder(builder: (context) { - final initialIndex = max( - 0, - loadingState.response! - .indexWhere((item) => item.isToday == 1)); + final initialIndex = + max(0, response!.indexWhere((item) => item.isToday == 1)); return DefaultTabController( initialIndex: initialIndex, - length: loadingState.response!.length, + length: response.length, child: Column( children: [ Row( @@ -119,7 +117,7 @@ class _BangumiPageState extends CommonPageState ?.copyWith(fontSize: 14) ?? const TextStyle(fontSize: 14), dividerColor: Colors.transparent, - tabs: loadingState.response!.map( + tabs: response.map( (item) { return Tab( text: @@ -147,7 +145,7 @@ class _BangumiPageState extends CommonPageState context.orientation == Orientation.landscape, child: TabBarView( physics: const NeverScrollableScrollPhysics(), - children: loadingState.response!.map((item) { + children: response.map((item) { if (item.episodes!.isNullOrEmpty) { return const SizedBox.shrink(); } @@ -180,14 +178,14 @@ class _BangumiPageState extends CommonPageState ); }) : const SizedBox.shrink(), - Error() => GestureDetector( + Error(:var errMsg) => GestureDetector( behavior: HitTestBehavior.opaque, onTap: controller.queryPgcTimeline, child: Container( padding: const EdgeInsets.symmetric(horizontal: 16), alignment: Alignment.center, child: Text( - loadingState.errMsg, + errMsg ?? '', textAlign: TextAlign.center, ), ), @@ -293,7 +291,7 @@ class _BangumiPageState extends CommonPageState LoadingState?> loadingState) { return switch (loadingState) { Loading() => const SliverToBoxAdapter(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( // 行间距 @@ -307,20 +305,19 @@ class _BangumiPageState extends CommonPageState ), delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } - return BangumiCardV( - bangumiItem: loadingState.response![index]); + return BangumiCardV(bangumiItem: response[index]); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; @@ -415,28 +412,28 @@ class _BangumiPageState extends CommonPageState LoadingState?> loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? MediaQuery.removePadding( context: context, removeLeft: context.orientation == Orientation.landscape, child: ListView.builder( controller: controller.followController, scrollDirection: Axis.horizontal, - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.queryBangumiFollow(false); } return Container( width: Grid.smallCardWidth / 2, margin: EdgeInsets.only( left: StyleString.safeSpace, - right: index == loadingState.response!.length - 1 + right: index == response.length - 1 ? StyleString.safeSpace : 0, ), child: BangumiCardV( - bangumiItem: loadingState.response![index], + bangumiItem: response[index], ), ); }, @@ -445,11 +442,11 @@ class _BangumiPageState extends CommonPageState : Center( child: Text( '还没有${widget.tabType == HomeTabType.bangumi ? '追番' : '追剧'}')), - Error() => Container( + Error(:var errMsg) => Container( padding: const EdgeInsets.symmetric(horizontal: 16), alignment: Alignment.center, child: Text( - loadingState.errMsg, + errMsg ?? '', textAlign: TextAlign.center, ), ), diff --git a/lib/pages/blacklist/controller.dart b/lib/pages/blacklist/controller.dart index 618b7c0d2..13fd6d657 100644 --- a/lib/pages/blacklist/controller.dart +++ b/lib/pages/blacklist/controller.dart @@ -56,5 +56,5 @@ class BlackListController @override Future> customGetData() => - BlackHttp.blackList(pn: currentPage, ps: pageSize); + BlackHttp.blackList(pn: page, ps: pageSize); } diff --git a/lib/pages/blacklist/view.dart b/lib/pages/blacklist/view.dart index a6b8ee025..1ea97235c 100644 --- a/lib/pages/blacklist/view.dart +++ b/lib/pages/blacklist/view.dart @@ -61,14 +61,14 @@ class _BlackListPageState extends State { return const MsgFeedTopSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.builder( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _blackListController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return ListTile( onTap: () { Get.toNamed('/member?mid=${item.mid}'); @@ -105,11 +105,9 @@ class _BlackListPageState extends State { ); }, ) - : HttpError( - onReload: _blackListController.onReload, - ), - Error() => HttpError( - errMsg: loadingState.errMsg, + : HttpError(onReload: _blackListController.onReload), + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _blackListController.onReload, ), }; diff --git a/lib/pages/common/common_controller.dart b/lib/pages/common/common_controller.dart index 74f9ba350..3aa22c3df 100644 --- a/lib/pages/common/common_controller.dart +++ b/lib/pages/common/common_controller.dart @@ -30,15 +30,12 @@ abstract class CommonController extends GetxController @override final ScrollController scrollController = ScrollController(); - late int currentPage = 1; bool isLoading = false; - late bool isEnd = false; Rx get loadingState; - bool? hasFooter; Future> customGetData(); - void handleListResponse(List dataList) {} + Future queryData([bool isRefresh = true]); bool customHandleResponse(bool isRefresh, Success response) { return false; @@ -48,53 +45,8 @@ abstract class CommonController extends GetxController return false; } - List? getDataList(R response) { - return response as List?; - } - - void checkIsEnd(int length) {} - - Future queryData([bool isRefresh = true]) async { - if (isLoading || (isRefresh.not && isEnd)) return; - isLoading = true; - LoadingState response = await customGetData(); - if (response is Success) { - if (!customHandleResponse(isRefresh, response)) { - List? dataList = getDataList(response.response); - if (dataList.isNullOrEmpty) { - isEnd = true; - if (isRefresh) { - loadingState.value = LoadingState?>.success(dataList); - } else if (hasFooter == true) { - loadingState.refresh(); - } - isLoading = false; - return; - } - handleListResponse(dataList!); - if (isRefresh) { - checkIsEnd(dataList.length); - loadingState.value = LoadingState?>.success(dataList); - } else if (loadingState.value is Success) { - final list = (loadingState.value.data! as List)..addAll(dataList); - checkIsEnd(list.length); - loadingState.refresh(); - } - } - currentPage++; - } else { - if (isRefresh && - handleError(response is Error ? response.errMsg : null).not) { - loadingState.value = response; - } - } - isLoading = false; - } - @override Future onRefresh() { - currentPage = 1; - isEnd = false; return queryData(); } @@ -103,7 +55,6 @@ abstract class CommonController extends GetxController } Future onReload() { - loadingState.value = LoadingState.loading(); return onRefresh(); } diff --git a/lib/pages/common/common_data_controller.dart b/lib/pages/common/common_data_controller.dart index 6c79bdee2..7c8111626 100644 --- a/lib/pages/common/common_data_controller.dart +++ b/lib/pages/common/common_data_controller.dart @@ -5,4 +5,28 @@ import 'package:get/get.dart'; abstract class CommonDataController extends CommonController { @override Rx> loadingState = LoadingState.loading().obs; + + @override + Future queryData([bool isRefresh = true]) async { + if (isLoading) return; + isLoading = true; + LoadingState response = await customGetData(); + if (response is Success) { + if (!customHandleResponse(isRefresh, response)) { + loadingState.value = response as LoadingState; + } + } else { + if (isRefresh && + !handleError(response is Error ? response.errMsg : null)) { + loadingState.value = response as LoadingState; + } + } + isLoading = false; + } + + @override + Future onReload() { + loadingState.value = LoadingState.loading(); + return super.onReload(); + } } diff --git a/lib/pages/common/common_list_controller.dart b/lib/pages/common/common_list_controller.dart index ea34b671f..3f4a43d44 100644 --- a/lib/pages/common/common_list_controller.dart +++ b/lib/pages/common/common_list_controller.dart @@ -1,9 +1,73 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; +import 'package:PiliPlus/utils/extension.dart'; import 'package:get/get.dart'; abstract class CommonListController extends CommonController { + int page = 1; + bool isEnd = false; + bool? hasFooter; + @override Rx?>> loadingState = LoadingState?>.loading().obs; + + void handleListResponse(List dataList) {} + + List? getDataList(R response) { + return response as List?; + } + + void checkIsEnd(int length) {} + + @override + Future queryData([bool isRefresh = true]) async { + if (isLoading || (!isRefresh && isEnd)) return; + isLoading = true; + LoadingState response = await customGetData(); + if (response is Success) { + if (!customHandleResponse(isRefresh, response)) { + List? dataList = getDataList(response.response); + if (dataList.isNullOrEmpty) { + isEnd = true; + if (isRefresh) { + loadingState.value = Success(dataList); + } else if (hasFooter == true) { + loadingState.refresh(); + } + isLoading = false; + return; + } + handleListResponse(dataList!); + if (isRefresh) { + checkIsEnd(dataList.length); + loadingState.value = Success(dataList); + } else if (loadingState.value is Success) { + final list = loadingState.value.data!..addAll(dataList); + checkIsEnd(list.length); + loadingState.refresh(); + } + } + page++; + } else { + if (isRefresh && + !handleError(response is Error ? response.errMsg : null)) { + loadingState.value = response as LoadingState?>; + } + } + isLoading = false; + } + + @override + Future onRefresh() { + page = 1; + isEnd = false; + return super.onRefresh(); + } + + @override + Future onReload() { + loadingState.value = LoadingState?>.loading(); + return super.onReload(); + } } diff --git a/lib/pages/common/common_search_page.dart b/lib/pages/common/common_search_page.dart index bb326d071..188d243e9 100644 --- a/lib/pages/common/common_search_page.dart +++ b/lib/pages/common/common_search_page.dart @@ -65,13 +65,13 @@ abstract class CommonSearchPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => const HttpError(), - Success() => loadingState.response?.isNotEmpty == true - ? buildList(loadingState.response!) + Success(:var response) => response?.isNotEmpty == true + ? buildList(response!) : HttpError( onReload: controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/common/common_whisper_controller.dart b/lib/pages/common/common_whisper_controller.dart index 226376b22..87ece77e5 100644 --- a/lib/pages/common/common_whisper_controller.dart +++ b/lib/pages/common/common_whisper_controller.dart @@ -63,7 +63,7 @@ abstract class CommonWhisperController Future onDeleteList() async { var res = await ImGrpc.deleteSessionList(pageType: sessionPageType); if (res.isSuccess) { - loadingState.value = LoadingState.success(null); + loadingState.value = Success(null); } else { res.toast(); } diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 25e8d7348..4e5cf901b 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -178,7 +178,7 @@ abstract class ReplyController extends CommonListController { if (loadingState.value is Success) { List? list = (loadingState.value as Success).response; if (list == null) { - loadingState.value = LoadingState.success([replyInfo]); + loadingState.value = Success([replyInfo]); } else { if (oid != null) { list.insert(hasUpTop ? 1 : 0, replyInfo); @@ -188,7 +188,7 @@ abstract class ReplyController extends CommonListController { loadingState.refresh(); } } else { - loadingState.value = LoadingState.success([replyInfo]); + loadingState.value = Success([replyInfo]); } count.value += 1; @@ -382,7 +382,7 @@ abstract class ReplyController extends CommonListController { // not found if (context.mounted) { showReplyCheckResult( - res2.errMsg.startsWith('12022') + res2.errMsg?.startsWith('12022') == true ? '你的评论被shadow ban(仅自己可见)!\n\n你的评论: $message' : '评论不可见(${res2.errMsg}): $message', ); diff --git a/lib/pages/dynamics/widgets/vote.dart b/lib/pages/dynamics/widgets/vote.dart index dad6cf2a8..250d855ac 100644 --- a/lib/pages/dynamics/widgets/vote.dart +++ b/lib/pages/dynamics/widgets/vote.dart @@ -130,7 +130,7 @@ class _VotePanelState extends State { }); } } else { - SmartDialog.showToast((res as Error).errMsg); + SmartDialog.showToast((res as Error).errMsg ?? ''); } } : null, @@ -386,7 +386,7 @@ Future showVoteDialog(BuildContext context, int voteId, ), )); } else { - SmartDialog.showToast((voteInfo as Error).errMsg); + SmartDialog.showToast((voteInfo as Error).errMsg ?? ''); } } } diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index 6bbc37d56..b4b462108 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -780,10 +780,10 @@ class _DynamicDetailPageState extends State }, itemCount: 8, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.builder( itemBuilder: (context, index) { - if (index == loadingState.response!.length) { + if (index == response.length) { _dynamicDetailController.onLoadMore(); return Container( alignment: Alignment.center, @@ -793,7 +793,7 @@ class _DynamicDetailPageState extends State child: Text( _dynamicDetailController.isEnd.not ? '加载中...' - : loadingState.response!.isEmpty + : response.isEmpty ? '还没有评论' : '没有更多了', style: TextStyle( @@ -804,14 +804,14 @@ class _DynamicDetailPageState extends State ); } else { return ReplyItemGrpc( - replyItem: loadingState.response![index], + replyItem: response[index], replyLevel: '1', replyReply: (replyItem, id) => replyReply(context, replyItem, id), onReply: () { _dynamicDetailController.onReply( context, - replyItem: loadingState.response![index], + replyItem: response[index], index: index, ); }, @@ -832,13 +832,13 @@ class _DynamicDetailPageState extends State ); } }, - itemCount: loadingState.response!.length + 1, + itemCount: response!.length + 1, ) : HttpError( onReload: _dynamicDetailController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _dynamicDetailController.onReload, ), }; diff --git a/lib/pages/dynamics_tab/view.dart b/lib/pages/dynamics_tab/view.dart index b869227ec..71d87b42c 100644 --- a/lib/pages/dynamics_tab/view.dart +++ b/lib/pages/dynamics_tab/view.dart @@ -133,7 +133,7 @@ class _DynamicsTabPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => DynamicsTabPage.dynSkeleton(dynamicsWaterfallFlow), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80, @@ -143,19 +143,17 @@ class _DynamicsTabPageState maxCrossAxisExtent: Grid.smallCardWidth * 2, crossAxisSpacing: StyleString.cardSpace / 2, lastChildLayoutTypeBuilder: (index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } - return index == loadingState.response!.length + return index == response.length ? LastChildLayoutType.foot : LastChildLayoutType.none; }, children: [ - for (int index = 0; - index < loadingState.response!.length; - index++) + for (int index = 0; index < response!.length; index++) DynamicPanel( - item: loadingState.response![index], + item: response[index], onRemove: (idStr) => controller.onRemove(index, idStr), onBlock: () => controller.onBlock(index), @@ -169,10 +167,10 @@ class _DynamicsTabPageState maxExtent: Grid.smallCardWidth * 2, sliver: SliverList.builder( itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return DynamicPanel( item: item, onRemove: (idStr) => @@ -180,7 +178,7 @@ class _DynamicsTabPageState onBlock: () => controller.onBlock(index), ); }, - itemCount: loadingState.response!.length, + itemCount: response!.length, ), ), const SliverFillRemaining(), @@ -190,8 +188,8 @@ class _DynamicsTabPageState : HttpError( onReload: controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/dynamics_topic/view.dart b/lib/pages/dynamics_topic/view.dart index 0e188a108..0ad689200 100644 --- a/lib/pages/dynamics_topic/view.dart +++ b/lib/pages/dynamics_topic/view.dart @@ -74,7 +74,7 @@ class _DynTopicPageState extends State { Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => DynamicsTabPage.dynSkeleton(dynamicsWaterfallFlow), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80, @@ -84,15 +84,15 @@ class _DynTopicPageState extends State { maxCrossAxisExtent: Grid.smallCardWidth * 2, crossAxisSpacing: StyleString.cardSpace / 2, lastChildLayoutTypeBuilder: (index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - return index == loadingState.response!.length + return index == response.length ? LastChildLayoutType.foot : LastChildLayoutType.none; }, children: [ - for (var item in loadingState.response!) + for (var item in response!) if (item.dynamicCardItem != null) DynamicPanel(item: item.dynamicCardItem!) else @@ -106,10 +106,10 @@ class _DynTopicPageState extends State { maxExtent: Grid.smallCardWidth * 2, sliver: SliverList.builder( itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; if (item.dynamicCardItem != null) { return DynamicPanel( item: item.dynamicCardItem!, @@ -118,7 +118,7 @@ class _DynTopicPageState extends State { return Text(item.topicType ?? 'err'); } }, - itemCount: loadingState.response!.length, + itemCount: response!.length, ), ), const SliverFillRemaining(), @@ -128,8 +128,8 @@ class _DynTopicPageState extends State { : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/emote/view.dart b/lib/pages/emote/view.dart index 759988fd1..cd94eba98 100644 --- a/lib/pages/emote/view.dart +++ b/lib/pages/emote/view.dart @@ -33,13 +33,13 @@ class _EmotePanelState extends State Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Column( children: [ Expanded( child: tabBarView( controller: _emotePanelController.tabController, - children: loadingState.response!.map( + children: response!.map( (e) { int size = e.emote!.first.meta!.size!; int type = e.type!; @@ -101,7 +101,7 @@ class _EmotePanelState extends State dividerColor: Colors.transparent, dividerHeight: 0, isScrollable: true, - tabs: loadingState.response! + tabs: response .map( (e) => Padding( padding: const EdgeInsets.all(8), @@ -119,7 +119,7 @@ class _EmotePanelState extends State ], ) : _errorWidget(), - Error() => _errorWidget(loadingState.errMsg), + Error(:var errMsg) => _errorWidget(errMsg), }; } diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 1bb56a697..f7de40405 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -152,8 +152,7 @@ class _EpisodePanelState extends CommonSlidePageState VideoHttp.videoRelation(bvid: widget.bvid).then((result) { if (result['status']) { if (result['data']?['season_fav'] is bool) { - _favState!.value = - LoadingState.success(result['data']['season_fav']); + _favState!.value = Success(result['data']['season_fav']); } } }); @@ -519,19 +518,19 @@ class _EpisodePanelState extends CommonSlidePageState Widget _buildFavBtn(LoadingState loadingState) { return switch (loadingState) { - Success() => mediumButton( - tooltip: loadingState.response ? '取消订阅' : '订阅', - icon: loadingState.response + Success(:var response) => mediumButton( + tooltip: response ? '取消订阅' : '订阅', + icon: response ? Icons.notifications_off_outlined : Icons.notifications_active_outlined, onPressed: () async { dynamic result = await VideoHttp.seasonFav( - isFav: loadingState.response, + isFav: response, seasonId: widget.seasonId, ); if (result['status']) { - SmartDialog.showToast('${loadingState.response ? '取消' : ''}订阅成功'); - _favState!.value = LoadingState.success(!loadingState.response); + SmartDialog.showToast('${response ? '取消' : ''}订阅成功'); + _favState!.value = Success(!response); } else { SmartDialog.showToast(result['msg']); } diff --git a/lib/pages/fan/controller.dart b/lib/pages/fan/controller.dart index 3de6664a8..af6d6dbd2 100644 --- a/lib/pages/fan/controller.dart +++ b/lib/pages/fan/controller.dart @@ -26,7 +26,7 @@ class FansController @override Future> customGetData() => FanHttp.fans( vmid: mid, - pn: currentPage, + pn: page, ps: ps, orderType: 'attention', ); diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index 3da452c4a..75e5fc8d6 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -83,7 +83,7 @@ class _FansPageState extends State { childCount: 16, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80), @@ -94,10 +94,10 @@ class _FansPageState extends State { ), delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _fansController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; String heroTag = Utils.makeHeroTag(item.mid); return ListTile( onTap: () { @@ -150,15 +150,15 @@ class _FansPageState extends State { trailing: const SizedBox(width: 6), ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), ) : HttpError( onReload: _fansController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _fansController.onReload, ), }; diff --git a/lib/pages/fav/article/controller.dart b/lib/pages/fav/article/controller.dart index f96df9d50..bf6eb7aad 100644 --- a/lib/pages/fav/article/controller.dart +++ b/lib/pages/fav/article/controller.dart @@ -24,8 +24,7 @@ class FavArticleController extends CommonListController { } @override - Future customGetData() => - UserHttp.favArticle(page: currentPage); + Future customGetData() => UserHttp.favArticle(page: page); Future onRemove(index, id) async { final res = await UserHttp.communityAction(opusId: id, action: 4); diff --git a/lib/pages/fav/article/view.dart b/lib/pages/fav/article/view.dart index 2c8008299..b4e66d7a8 100644 --- a/lib/pages/fav/article/view.dart +++ b/lib/pages/fav/article/view.dart @@ -56,16 +56,16 @@ class _FavArticlePageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _favArticleController.onLoadMore(); } return FavArticleItem( - item: loadingState.response![index], + item: response[index], onDelete: () { showConfirmDialog( context: context, @@ -73,18 +73,18 @@ class _FavArticlePageState extends State onConfirm: () { _favArticleController.onRemove( index, - loadingState.response![index]['opus_id'], + response[index]['opus_id'], ); }); }, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: _favArticleController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _favArticleController.onReload, ), }; diff --git a/lib/pages/fav/note/child_view.dart b/lib/pages/fav/note/child_view.dart index fa2fa7a46..3d4138712 100644 --- a/lib/pages/fav/note/child_view.dart +++ b/lib/pages/fav/note/child_view.dart @@ -138,7 +138,7 @@ class _FavNoteChildPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80), @@ -146,24 +146,24 @@ class _FavNoteChildPageState extends State gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _favNoteController.onLoadMore(); } return FavNoteItem( - item: loadingState.response![index], + item: response[index], ctr: _favNoteController, onSelect: () { _favNoteController.onSelect(index); }, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), ) : HttpError(onReload: _favNoteController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _favNoteController.onReload, ), }; diff --git a/lib/pages/fav/note/controller.dart b/lib/pages/fav/note/controller.dart index fc07b7416..d8a55b847 100644 --- a/lib/pages/fav/note/controller.dart +++ b/lib/pages/fav/note/controller.dart @@ -30,8 +30,8 @@ class FavNoteController @override Future?>> customGetData() { return isPublish - ? VideoHttp.userNoteList(page: currentPage) - : VideoHttp.noteList(page: currentPage); + ? VideoHttp.userNoteList(page: page) + : VideoHttp.noteList(page: page); } Future onRemove() async { @@ -47,7 +47,7 @@ class FavNoteController if (res['status']) { List remainList = dataList.toSet().difference(removeList).toList(); - loadingState.value = LoadingState.success(remainList); + loadingState.value = Success(remainList); enableMultiSelect.value = false; SmartDialog.showToast('删除成功'); } else { diff --git a/lib/pages/fav/pgc/child_view.dart b/lib/pages/fav/pgc/child_view.dart index b5c323d31..3a7577775 100644 --- a/lib/pages/fav/pgc/child_view.dart +++ b/lib/pages/fav/pgc/child_view.dart @@ -161,7 +161,7 @@ class _FavPgcChildPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80), @@ -169,10 +169,10 @@ class _FavPgcChildPageState extends State gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _favPgcController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return FavPgcItem( item: item, ctr: _favPgcController, @@ -202,13 +202,13 @@ class _FavPgcChildPageState extends State }, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), ) : HttpError(onReload: _favPgcController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _favPgcController.onReload, ), }; diff --git a/lib/pages/fav/pgc/controller.dart b/lib/pages/fav/pgc/controller.dart index 5e09b7a54..c730cbb6e 100644 --- a/lib/pages/fav/pgc/controller.dart +++ b/lib/pages/fav/pgc/controller.dart @@ -43,7 +43,7 @@ class FavPgcController mid: Accounts.main.mid, type: type, followStatus: followStatus, - pn: currentPage, + pn: page, ); void onDisable() { @@ -75,7 +75,7 @@ class FavPgcController if (res['status']) { List remainList = dataList.toSet().difference(updateList).toList(); - loadingState.value = LoadingState.success(remainList); + loadingState.value = Success(remainList); enableMultiSelect.value = false; try { final ctr = Get.find(tag: '$type$followStatus'); diff --git a/lib/pages/fav/video/controller.dart b/lib/pages/fav/video/controller.dart index 10fea8bcf..9170bb85a 100644 --- a/lib/pages/fav/video/controller.dart +++ b/lib/pages/fav/video/controller.dart @@ -17,7 +17,7 @@ class FavController @override Future queryData([bool isRefresh = true]) { if (mid == 0) { - loadingState.value = LoadingState.error('账号未登录'); + loadingState.value = Error('账号未登录'); return Future.value(); } return super.queryData(isRefresh); @@ -38,7 +38,7 @@ class FavController @override Future> customGetData() => UserHttp.userfavFolder( - pn: currentPage, + pn: page, ps: 20, mid: mid, ); diff --git a/lib/pages/fav/video/view.dart b/lib/pages/fav/video/view.dart index 3d2631716..c0d31b8e7 100644 --- a/lib/pages/fav/video/view.dart +++ b/lib/pages/fav/video/view.dart @@ -59,16 +59,16 @@ class _FavVideoPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( - childCount: loadingState.response!.length, + childCount: response!.length, (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _favController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; String heroTag = Utils.makeHeroTag(item.fid); return FavItem( heroTag: heroTag, @@ -94,8 +94,8 @@ class _FavVideoPageState extends State : HttpError( onReload: _favController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _favController.onReload, ), }; diff --git a/lib/pages/fav_detail/controller.dart b/lib/pages/fav_detail/controller.dart index 66fb83871..1d40aab92 100644 --- a/lib/pages/fav_detail/controller.dart +++ b/lib/pages/fav_detail/controller.dart @@ -79,7 +79,7 @@ class FavDetailController @override Future> customGetData() => UserHttp.userFavFolderDetail( - pn: currentPage, + pn: page, ps: 20, mediaId: mediaId, ); @@ -120,7 +120,7 @@ class FavDetailController item.value.mediaCount = item.value.mediaCount! - list.length; item.refresh(); if (remainList.isNotEmpty) { - loadingState.value = LoadingState.success(remainList); + loadingState.value = Success(remainList); } else { onReload(); } diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index b5162e5e5..a6c1bd285 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -364,7 +364,7 @@ class _FavDetailPageState extends State { childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.of(context).padding.bottom + 85, @@ -373,7 +373,7 @@ class _FavDetailPageState extends State { gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length) { + if (index == response.length) { _favDetailController.onLoadMore(); return Container( height: 60, @@ -387,7 +387,7 @@ class _FavDetailPageState extends State { ), ); } - FavDetailItemData item = loadingState.response![index]; + FavDetailItemData item = response[index]; return Stack( clipBehavior: Clip.none, children: [ @@ -492,15 +492,15 @@ class _FavDetailPageState extends State { ], ); }, - childCount: loadingState.response!.length + 1, + childCount: response!.length + 1, ), ), ) : HttpError( onReload: _favDetailController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _favDetailController.onReload, ), }; diff --git a/lib/pages/fav_folder_sort/view.dart b/lib/pages/fav_folder_sort/view.dart index 4d27d4cc9..f3e283781 100644 --- a/lib/pages/fav_folder_sort/view.dart +++ b/lib/pages/fav_folder_sort/view.dart @@ -76,8 +76,7 @@ class _FavFolderSortPageState extends State { ); if (res['status']) { SmartDialog.showToast('排序完成'); - _favController.loadingState.value = - LoadingState.success(sortList); + _favController.loadingState.value = Success(sortList); Get.back(); } else { SmartDialog.showToast(res['msg']); diff --git a/lib/pages/fav_search/controller.dart b/lib/pages/fav_search/controller.dart index 09281f194..aef3ff847 100644 --- a/lib/pages/fav_search/controller.dart +++ b/lib/pages/fav_search/controller.dart @@ -17,7 +17,7 @@ class FavSearchController @override Future> customGetData() => UserHttp.userFavFolderDetail( - pn: currentPage, + pn: page, ps: 20, mediaId: mediaId, keyword: editController.text, diff --git a/lib/pages/fav_sort/view.dart b/lib/pages/fav_sort/view.dart index 0d0643512..c6e209805 100644 --- a/lib/pages/fav_sort/view.dart +++ b/lib/pages/fav_sort/view.dart @@ -82,8 +82,7 @@ class _FavSortPageState extends State { ); if (res['status']) { SmartDialog.showToast('排序完成'); - _favDetailController.loadingState.value = - LoadingState.success(sortList); + _favDetailController.loadingState.value = Success(sortList); Get.back(); } else { SmartDialog.showToast(res['msg']); diff --git a/lib/pages/follow/child_controller.dart b/lib/pages/follow/child_controller.dart index b6dbf38b6..d0568d272 100644 --- a/lib/pages/follow/child_controller.dart +++ b/lib/pages/follow/child_controller.dart @@ -46,12 +46,12 @@ class FollowChildController @override Future> customGetData() { if (tagid != null) { - return MemberHttp.followUpGroup(mid, tagid, currentPage, 20); + return MemberHttp.followUpGroup(mid, tagid, page, 20); } return FollowHttp.followingsNew( vmid: mid, - pn: currentPage, + pn: page, ps: 20, orderType: orderType.value.type, ); diff --git a/lib/pages/follow/child_view.dart b/lib/pages/follow/child_view.dart index b473e9e78..c452be74c 100644 --- a/lib/pages/follow/child_view.dart +++ b/lib/pages/follow/child_view.dart @@ -84,15 +84,15 @@ class _FollowChildPageState extends State return const MsgFeedTopSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.builder( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _followController.onLoadMore(); } return FollowItem( - item: loadingState.response![index], + item: response[index], isOwner: widget.controller?.isOwner, onSelect: widget.onSelect, callback: (attr) { @@ -105,11 +105,9 @@ class _FollowChildPageState extends State ); }, ) - : HttpError( - onReload: _followController.onReload, - ), - Error() => HttpError( - errMsg: loadingState.errMsg, + : HttpError(onReload: _followController.onReload), + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _followController.onReload, ), }; diff --git a/lib/pages/follow/controller.dart b/lib/pages/follow/controller.dart index 979049a6a..01d51b01d 100644 --- a/lib/pages/follow/controller.dart +++ b/lib/pages/follow/controller.dart @@ -47,9 +47,9 @@ class FollowController extends GetxController with GetTickerProviderStateMixin { length: tabs.length, vsync: this, ); - followState.value = LoadingState.success(tabs.hashCode); + followState.value = Success(tabs.hashCode); } else { - followState.value = LoadingState.error(res['msg']); + followState.value = Error(res['msg']); } } diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index 30a82e5b8..ff52d369f 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -4,11 +4,11 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/member/tags.dart'; import 'package:PiliPlus/pages/follow/child_view.dart'; +import 'package:PiliPlus/pages/follow/controller.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:PiliPlus/pages/follow/controller.dart'; class FollowPage extends StatefulWidget { const FollowPage({super.key}); @@ -146,7 +146,9 @@ class _FollowPageState extends State { ], ), Error() => FollowChildPage( - controller: _followController, mid: _followController.mid), + controller: _followController, + mid: _followController.mid, + ), }; } diff --git a/lib/pages/follow_search/controller.dart b/lib/pages/follow_search/controller.dart index 799f980b9..bba151cf8 100644 --- a/lib/pages/follow_search/controller.dart +++ b/lib/pages/follow_search/controller.dart @@ -13,7 +13,7 @@ class FollowSearchController MemberHttp.getfollowSearch( mid: mid, ps: 20, - pn: currentPage, + pn: page, name: editController.value.text, ); diff --git a/lib/pages/history/controller.dart b/lib/pages/history/controller.dart index f288c2d10..fcad5a102 100644 --- a/lib/pages/history/controller.dart +++ b/lib/pages/history/controller.dart @@ -134,7 +134,7 @@ class HistoryController extends MultiSelectController .difference(result.toSet()) .toList(); if (remainList.isNotEmpty) { - loadingState.value = LoadingState.success(remainList); + loadingState.value = Success(remainList); } else { onReload(); } diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 4d0a2b530..37ddbd588 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -90,17 +90,16 @@ class _HistoryPageState extends State _historyController.baseCtr .onClearHistory(context, () { _historyController.loadingState.value = - LoadingState.success(null); + Success(null); if (_historyController.tabController != null) { for (final item in _historyController.tabs) { try { Get.find( - tag: item.type) - .loadingState - .value = - LoadingState.success(null); + tag: item.type) + .loadingState + .value = Success(null); } catch (_) {} } } @@ -266,15 +265,15 @@ class _HistoryPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _historyController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return HistoryItem( videoItem: item, ctr: _historyController.baseCtr, @@ -283,14 +282,14 @@ class _HistoryPageState extends State _historyController.delHistory(item), ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: _historyController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _historyController.onReload, ), }; diff --git a/lib/pages/history_search/controller.dart b/lib/pages/history_search/controller.dart index 7584f77df..a02695c6f 100644 --- a/lib/pages/history_search/controller.dart +++ b/lib/pages/history_search/controller.dart @@ -8,7 +8,7 @@ class HistorySearchController extends CommonSearchController { @override Future> customGetData() => UserHttp.searchHistory( - pn: currentPage, + pn: page, keyword: editController.value.text, ); diff --git a/lib/pages/hot/controller.dart b/lib/pages/hot/controller.dart index 4b5c62a9d..cf39cea8c 100644 --- a/lib/pages/hot/controller.dart +++ b/lib/pages/hot/controller.dart @@ -18,7 +18,7 @@ class HotController @override Future>> customGetData() => VideoHttp.hotVideoList( - pn: currentPage, + pn: page, ps: 20, ); } diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 57f9d6884..934ff0a8b 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -165,27 +165,27 @@ class _HotPageState extends CommonPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => _buildSkeleton(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } return VideoCardH( - videoItem: loadingState.response![index], + videoItem: response[index], showPubdate: true, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index ca0292b8e..a412f6585 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -69,15 +69,15 @@ class _LaterViewChildPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _laterController.onLoadMore(); } - var videoItem = loadingState.response![index]; + var videoItem = response[index]; return Stack( clipBehavior: Clip.none, children: [ @@ -188,14 +188,14 @@ class _LaterViewChildPageState extends State ], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: _laterController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _laterController.onReload, ), }; diff --git a/lib/pages/later/controller.dart b/lib/pages/later/controller.dart index b517bbeca..7f023c9c5 100644 --- a/lib/pages/later/controller.dart +++ b/lib/pages/later/controller.dart @@ -24,7 +24,7 @@ class LaterController extends MultiSelectController { @override Future> customGetData() => UserHttp.seeYouLater( - page: currentPage, + page: page, viewed: laterViewType.type, asc: asc.value, ); @@ -191,7 +191,7 @@ class LaterController extends MultiSelectController { .difference(result.toSet()); baseCtr.counts[laterViewType] = baseCtr.counts[laterViewType]! - aids.length; - loadingState.value = LoadingState.success(remainList.toList()); + loadingState.value = Success(remainList.toList()); if (baseCtr.enableMultiSelect.value) { baseCtr.checkedCount.value = 0; baseCtr.enableMultiSelect.value = false; diff --git a/lib/pages/later_search/controller.dart b/lib/pages/later_search/controller.dart index 4dd6b44a0..febc016d8 100644 --- a/lib/pages/later_search/controller.dart +++ b/lib/pages/later_search/controller.dart @@ -13,7 +13,7 @@ class LaterSearchController @override Future> customGetData() => UserHttp.seeYouLater( - page: currentPage, + page: page, keyword: editController.value.text, ); diff --git a/lib/pages/live/controller.dart b/lib/pages/live/controller.dart index 4ab9be17d..7edbe4f66 100644 --- a/lib/pages/live/controller.dart +++ b/lib/pages/live/controller.dart @@ -70,20 +70,20 @@ class LiveController extends CommonListController { Future customGetData() { if (areaIndex.value != 0) { return LiveHttp.liveSecondList( - pn: currentPage, + pn: page, isLogin: isLogin.value, areaId: areaId, parentAreaId: parentAreaId, sortType: sortType, ); } - return LiveHttp.liveFeedIndex(pn: currentPage, isLogin: isLogin.value); + return LiveHttp.liveFeedIndex(pn: page, isLogin: isLogin.value); } @override Future onRefresh() { count = null; - currentPage = 1; + page = 1; isEnd = false; if (areaIndex.value != 0) { queryTop(); @@ -93,7 +93,7 @@ class LiveController extends CommonListController { Future queryTop() async { final res = await LiveHttp.liveFeedIndex( - pn: currentPage, + pn: page, isLogin: isLogin.value, moduleSelect: true, ); @@ -124,7 +124,7 @@ class LiveController extends CommonListController { parentAreaId = cardLiveItem?.areaV2ParentId; count = null; - currentPage = 1; + page = 1; isEnd = false; queryData(); } @@ -134,7 +134,7 @@ class LiveController extends CommonListController { this.sortType = sortType; count = null; - currentPage = 1; + page = 1; isEnd = false; queryData(); } diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index ec216b973..12d3742cd 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -148,7 +148,7 @@ class _LivePageState extends CommonPageState childCount: 10, ), ), - Success() => SliverMainAxisGroup( + Success(:var response) => SliverMainAxisGroup( slivers: [ if (controller.newTags?.isNotEmpty == true) SliverToBoxAdapter( @@ -183,7 +183,7 @@ class _LivePageState extends CommonPageState itemCount: controller.newTags!.length, ), ), - loadingState.response?.isNotEmpty == true + response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -195,10 +195,10 @@ class _LivePageState extends CommonPageState ), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; if (item is LiveCardList) { return LiveCardVApp( item: item.cardData!.smallCardV1!, @@ -206,14 +206,14 @@ class _LivePageState extends CommonPageState } return LiveCardVApp(item: item); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: controller.onReload), ], ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/live_area/view.dart b/lib/pages/live_area/view.dart index 03816c758..5d901c4aa 100644 --- a/lib/pages/live_area/view.dart +++ b/lib/pages/live_area/view.dart @@ -68,22 +68,20 @@ class _LiveAreaPageState extends State { ThemeData theme, LoadingState?> loadingState) { return switch (loadingState) { Loading() => const SizedBox.shrink(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? DefaultTabController( - length: loadingState.response!.length, + length: response!.length, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TabBar( isScrollable: true, tabAlignment: TabAlignment.start, - tabs: loadingState.response! - .map((e) => Tab(text: e.name)) - .toList(), + tabs: response.map((e) => Tab(text: e.name)).toList(), ), Expanded( child: tabBarView( - children: loadingState.response! + children: response .map( (e) => KeepAliveWrapper( builder: (context) { @@ -144,8 +142,8 @@ class _LiveAreaPageState extends State { ), ) : scrollErrorWidget(onReload: _controller.onReload), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/live_area_detail/child/controller.dart b/lib/pages/live_area_detail/child/controller.dart index 82adc2d22..d75be63db 100644 --- a/lib/pages/live_area_detail/child/controller.dart +++ b/lib/pages/live_area_detail/child/controller.dart @@ -50,7 +50,7 @@ class LiveAreaChildController @override Future> customGetData() => LiveHttp.liveSecondList( - pn: currentPage, + pn: page, isLogin: isLogin, areaId: areaId, parentAreaId: parentAreaId, diff --git a/lib/pages/live_area_detail/child/view.dart b/lib/pages/live_area_detail/child/view.dart index 2207fb408..e35b044f0 100644 --- a/lib/pages/live_area_detail/child/view.dart +++ b/lib/pages/live_area_detail/child/view.dart @@ -74,7 +74,7 @@ class _LiveAreaChildPageState extends State childCount: 10, ), ), - Success() => SliverMainAxisGroup( + Success(:var response) => SliverMainAxisGroup( slivers: [ if (_controller.newTags?.isNotEmpty == true) SliverToBoxAdapter( @@ -111,7 +111,7 @@ class _LiveAreaChildPageState extends State ), ), ), - loadingState.response?.isNotEmpty == true + response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -123,13 +123,12 @@ class _LiveAreaChildPageState extends State ), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - return LiveCardVApp( - item: loadingState.response![index]); + return LiveCardVApp(item: response[index]); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( @@ -137,8 +136,8 @@ class _LiveAreaChildPageState extends State ), ], ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/live_area_detail/view.dart b/lib/pages/live_area_detail/view.dart index 3250595f8..9e3f4c711 100644 --- a/lib/pages/live_area_detail/view.dart +++ b/lib/pages/live_area_detail/view.dart @@ -58,10 +58,10 @@ class _LiveAreaDetailPageState extends State { ThemeData theme, LoadingState?> loadingState) { return switch (loadingState) { Loading() => const SizedBox.shrink(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? DefaultTabController( initialIndex: _controller.initialIndex, - length: loadingState.response!.length, + length: response!.length, child: Builder( builder: (context) { return Column( @@ -75,7 +75,7 @@ class _LiveAreaDetailPageState extends State { dividerColor: Colors.transparent, isScrollable: true, tabAlignment: TabAlignment.start, - tabs: loadingState.response! + tabs: response .map((e) => Tab(text: e.name ?? '')) .toList(), ), @@ -85,7 +85,7 @@ class _LiveAreaDetailPageState extends State { icon: Icons.menu, bgColor: Colors.transparent, onPressed: () { - _showTags(context, theme, loadingState.response!); + _showTags(context, theme, response); }, ), ], @@ -93,7 +93,7 @@ class _LiveAreaDetailPageState extends State { const Divider(height: 1), Expanded( child: tabBarView( - children: loadingState.response! + children: response .map((e) => LiveAreaChildPage( areaId: e.id, parentAreaId: e.parentId, diff --git a/lib/pages/live_emote/view.dart b/lib/pages/live_emote/view.dart index 0fb747667..ce53f7b4b 100644 --- a/lib/pages/live_emote/view.dart +++ b/lib/pages/live_emote/view.dart @@ -46,13 +46,13 @@ class _LiveEmotePanelState extends State Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Column( children: [ Expanded( child: tabBarView( controller: _emotePanelController.tabController, - children: loadingState.response!.map( + children: response!.map( (item) { if (item.emoticons.isNullOrEmpty) { return const SizedBox.shrink(); @@ -116,7 +116,7 @@ class _LiveEmotePanelState extends State dividerColor: Colors.transparent, dividerHeight: 0, isScrollable: true, - tabs: loadingState.response! + tabs: response .map( (item) => Padding( padding: const EdgeInsets.all(8), @@ -134,7 +134,7 @@ class _LiveEmotePanelState extends State ], ) : _errorWidget(), - Error() => _errorWidget(loadingState.errMsg), + Error(:var errMsg) => _errorWidget(errMsg), }; } diff --git a/lib/pages/live_follow/controller.dart b/lib/pages/live_follow/controller.dart index 70c3460ff..221b027bd 100644 --- a/lib/pages/live_follow/controller.dart +++ b/lib/pages/live_follow/controller.dart @@ -30,5 +30,5 @@ class LiveFollowController @override Future> customGetData() => - LiveHttp.liveFollow(currentPage); + LiveHttp.liveFollow(page); } diff --git a/lib/pages/live_follow/view.dart b/lib/pages/live_follow/view.dart index 8f31bfa66..5a51b27ec 100644 --- a/lib/pages/live_follow/view.dart +++ b/lib/pages/live_follow/view.dart @@ -69,7 +69,7 @@ class _LiveFollowPageState extends State { childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -80,19 +80,19 @@ class _LiveFollowPageState extends State { ), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return LiveCardVFollow( - liveItem: loadingState.response![index], + liveItem: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: _controller.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/live_search/child/controller.dart b/lib/pages/live_search/child/controller.dart index ae5120a52..189d24fa9 100644 --- a/lib/pages/live_search/child/controller.dart +++ b/lib/pages/live_search/child/controller.dart @@ -47,7 +47,7 @@ class LiveSearchChildController Future> customGetData() { return LiveHttp.liveSearch( isLogin: isLogin, - page: currentPage, + page: page, keyword: controller.editingController.text, type: searchType, ); diff --git a/lib/pages/live_search/child/view.dart b/lib/pages/live_search/child/view.dart index c124b5df1..27f33fc68 100644 --- a/lib/pages/live_search/child/view.dart +++ b/lib/pages/live_search/child/view.dart @@ -91,7 +91,7 @@ class _LiveSearchChildPageState extends State Widget _buildBody(LoadingState loadingState) { return switch (loadingState) { Loading() => _buildLoading, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Builder( builder: (context) { return switch (widget.searchType) { @@ -106,14 +106,14 @@ class _LiveSearchChildPageState extends State ), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return LiveCardVSearch( - item: loadingState.response![index], + item: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), LiveSearchType.user => SliverGrid( @@ -123,14 +123,14 @@ class _LiveSearchChildPageState extends State ), delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return LiveSearchUserItem( - item: loadingState.response![index], + item: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), }; @@ -139,8 +139,8 @@ class _LiveSearchChildPageState extends State : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/media/view.dart b/lib/pages/media/view.dart index 0eda577ef..5964ef0a2 100644 --- a/lib/pages/media/view.dart +++ b/lib/pages/media/view.dart @@ -170,80 +170,82 @@ class _MediaPageState extends CommonPageState } Widget _buildBody(ThemeData theme, LoadingState loadingState) { - if (loadingState is Success) { - List? favFolderList = loadingState.response.list; - if (favFolderList.isNullOrEmpty) { - return const SizedBox.shrink(); - } - bool flag = controller.count.value > favFolderList!.length; - return ListView.builder( - itemCount: loadingState.response.list.length + (flag ? 1 : 0), - itemBuilder: (context, index) { - if (flag && index == favFolderList.length) { - return Padding( - padding: const EdgeInsets.only(right: 14, bottom: 35), - child: Center( - child: IconButton( - tooltip: '查看更多', - style: ButtonStyle( - padding: WidgetStateProperty.all(EdgeInsets.zero), - backgroundColor: WidgetStateProperty.resolveWith((states) { - return theme.colorScheme.primaryContainer - .withOpacity(0.5); - }), - ), - onPressed: () async { - await Get.toNamed('/fav'); - Future.delayed(const Duration(milliseconds: 150), () { - controller.onRefresh(); - }); - }, - icon: Icon( - Icons.arrow_forward_ios, - size: 18, - color: theme.colorScheme.primary, - ), - ), - ), - ); - } else { - String heroTag = - Utils.makeHeroTag(loadingState.response.list[index].fid); - return FavFolderItem( - heroTag: heroTag, - item: loadingState.response.list[index], - index: index, - onTap: () async { - await Get.toNamed( - '/favDetail', - arguments: loadingState.response.list[index], - parameters: { - 'mediaId': loadingState.response.list[index].id.toString(), - 'heroTag': heroTag, - }, - ); - Future.delayed(const Duration(milliseconds: 150), () { - controller.onRefresh(); - }); + return switch (loadingState) { + Loading() => const SizedBox.shrink(), + Success(:var response) => Builder( + builder: (context) { + List? favFolderList = response.list; + if (favFolderList.isNullOrEmpty) { + return const SizedBox.shrink(); + } + bool flag = controller.count.value > favFolderList!.length; + return ListView.builder( + itemCount: response.list.length + (flag ? 1 : 0), + itemBuilder: (context, index) { + if (flag && index == favFolderList.length) { + return Padding( + padding: const EdgeInsets.only(right: 14, bottom: 35), + child: Center( + child: IconButton( + tooltip: '查看更多', + style: ButtonStyle( + padding: WidgetStateProperty.all(EdgeInsets.zero), + backgroundColor: + WidgetStateProperty.resolveWith((states) { + return theme.colorScheme.primaryContainer + .withOpacity(0.5); + }), + ), + onPressed: () async { + await Get.toNamed('/fav'); + Future.delayed(const Duration(milliseconds: 150), () { + controller.onRefresh(); + }); + }, + icon: Icon( + Icons.arrow_forward_ios, + size: 18, + color: theme.colorScheme.primary, + ), + ), + ), + ); + } else { + String heroTag = Utils.makeHeroTag(response.list[index].fid); + return FavFolderItem( + heroTag: heroTag, + item: response.list[index], + index: index, + onTap: () async { + await Get.toNamed( + '/favDetail', + arguments: response.list[index], + parameters: { + 'mediaId': response.list[index].id.toString(), + 'heroTag': heroTag, + }, + ); + Future.delayed(const Duration(milliseconds: 150), () { + controller.onRefresh(); + }); + }, + ); + } }, + scrollDirection: Axis.horizontal, ); - } - }, - scrollDirection: Axis.horizontal, - ); - } - if (loadingState is Error) { - return SizedBox( - height: 160, - child: Center( - child: Text( - loadingState.errMsg, - textAlign: TextAlign.center, + }, + ), + Error(:var errMsg) => SizedBox( + height: 160, + child: Center( + child: Text( + errMsg ?? '', + textAlign: TextAlign.center, + ), ), ), - ); - } - return const SizedBox.shrink(); + }; } } diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index d3ca9e7d4..98ee4f486 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -141,7 +141,7 @@ class MemberController extends CommonDataController ); showUname.value = true; username = errMsg; - loadingState.value = LoadingState.success(null); + loadingState.value = const Success(null); return true; } diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 79f37b675..0c1b9c451 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -264,14 +264,14 @@ class _MemberPageState extends State { Widget _buildUserInfo(LoadingState userState, [bool isV = true]) { return switch (userState) { Loading() => const CircularProgressIndicator(), - Success() => userState.response is SpaceData + Success(:var response) => response is SpaceData ? Obx( () => UserInfoCard( isV: isV, isOwner: _userController.mid == _userController.ownerMid, relation: _userController.relation.value, - card: userState.response.card, - images: userState.response.images, + card: response.card!, + images: response.images!, onFollow: () => _userController.onFollow(context), live: _userController.live, silence: _userController.silence, @@ -283,8 +283,8 @@ class _MemberPageState extends State { behavior: HitTestBehavior.opaque, child: const SizedBox(height: 56, width: double.infinity), ), - Error() => scrollErrorWidget( - errMsg: userState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _userController.onReload, ), }; diff --git a/lib/pages/member_article/controller.dart b/lib/pages/member_article/controller.dart index 29e5cca84..af946c199 100644 --- a/lib/pages/member_article/controller.dart +++ b/lib/pages/member_article/controller.dart @@ -41,5 +41,5 @@ class MemberArticleCtr @override Future> customGetData() => - MemberHttp.spaceArticle(mid: mid, page: currentPage); + MemberHttp.spaceArticle(mid: mid, page: page); } diff --git a/lib/pages/member_article/view.dart b/lib/pages/member_article/view.dart index 126b14d9d..e0b368cd3 100644 --- a/lib/pages/member_article/view.dart +++ b/lib/pages/member_article/view.dart @@ -62,26 +62,26 @@ class _MemberArticleState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return MemberArticleItem( - item: loadingState.response![index], + item: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_coin/view.dart b/lib/pages/member_coin/view.dart index fb8646e35..2af36cb93 100644 --- a/lib/pages/member_coin/view.dart +++ b/lib/pages/member_coin/view.dart @@ -74,7 +74,7 @@ class _MemberCoinPageState extends State { return const VideoCardVSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid.builder( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -83,14 +83,14 @@ class _MemberCoinPageState extends State { childAspectRatio: StyleString.aspectRatio, mainAxisExtent: MediaQuery.textScalerOf(context).scale(75), ), - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - return MemberCoinsItem(coinItem: loadingState.response![index]); + return MemberCoinsItem(coinItem: response[index]); }, ) : HttpError(onReload: _ctr.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _ctr.onReload, ), }; diff --git a/lib/pages/member_dynamics/view.dart b/lib/pages/member_dynamics/view.dart index 1b33be5dc..143bc3153 100644 --- a/lib/pages/member_dynamics/view.dart +++ b/lib/pages/member_dynamics/view.dart @@ -72,20 +72,20 @@ class _MemberDynamicsPageState extends State Widget _buildContent(LoadingState?> loadingState) { return switch (loadingState) { Loading() => DynamicsTabPage.dynSkeleton(dynamicsWaterfallFlow), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? dynamicsWaterfallFlow ? SliverWaterfallFlow.extent( maxCrossAxisExtent: Grid.smallCardWidth * 2, crossAxisSpacing: StyleString.safeSpace, lastChildLayoutTypeBuilder: (index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _memberDynamicController.onLoadMore(); } - return index == loadingState.response!.length + return index == response.length ? LastChildLayoutType.foot : LastChildLayoutType.none; }, - children: loadingState.response! + children: response! .map((item) => DynamicPanel( item: item, onRemove: _memberDynamicController.onRemove, @@ -99,16 +99,16 @@ class _MemberDynamicsPageState extends State maxExtent: Grid.smallCardWidth * 2, sliver: SliverList.builder( itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _memberDynamicController.onLoadMore(); } return DynamicPanel( - item: loadingState.response![index], + item: response[index], onRemove: _memberDynamicController.onRemove, onSetTop: _memberDynamicController.onSetTop, ); }, - itemCount: loadingState.response!.length, + itemCount: response!.length, ), ), const SliverFillRemaining(), @@ -117,8 +117,8 @@ class _MemberDynamicsPageState extends State : HttpError( onReload: _memberDynamicController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _memberDynamicController.onReload, ), }; diff --git a/lib/pages/member_favorite/view.dart b/lib/pages/member_favorite/view.dart index f0d787272..9376528eb 100644 --- a/lib/pages/member_favorite/view.dart +++ b/lib/pages/member_favorite/view.dart @@ -57,7 +57,7 @@ class _MemberFavoriteState extends State childCount: 10, ), ), - Success() => (loadingState.response as List?)?.isNotEmpty == true + Success(:var response) => (response as List?)?.isNotEmpty == true ? SliverMainAxisGroup( slivers: [ SliverToBoxAdapter( @@ -78,8 +78,8 @@ class _MemberFavoriteState extends State : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_home/view.dart b/lib/pages/member_home/view.dart index 44a47a2d4..1fa99889d 100644 --- a/lib/pages/member_home/view.dart +++ b/lib/pages/member_home/view.dart @@ -223,7 +223,7 @@ class _MemberHomeState extends State ], ) : scrollErrorWidget(), - Error() => scrollErrorWidget(), + Error(:var errMsg) => scrollErrorWidget(errMsg: errMsg), }; } diff --git a/lib/pages/member_like/view.dart b/lib/pages/member_like/view.dart index ebdc7f1cd..dac37a0e2 100644 --- a/lib/pages/member_like/view.dart +++ b/lib/pages/member_like/view.dart @@ -74,7 +74,7 @@ class _MemberLikePageState extends State { return const VideoCardVSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid.builder( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -83,14 +83,14 @@ class _MemberLikePageState extends State { childAspectRatio: StyleString.aspectRatio, mainAxisExtent: MediaQuery.textScalerOf(context).scale(75), ), - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - return MemberCoinsItem(coinItem: loadingState.response![index]); + return MemberCoinsItem(coinItem: response[index]); }, ) : HttpError(onReload: _ctr.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _ctr.onReload, ), }; diff --git a/lib/pages/member_opus/controller.dart b/lib/pages/member_opus/controller.dart index 67ff86494..77b529871 100644 --- a/lib/pages/member_opus/controller.dart +++ b/lib/pages/member_opus/controller.dart @@ -52,7 +52,7 @@ class MemberOpusController @override Future> customGetData() => MemberHttp.spaceOpus( hostMid: mid, - page: currentPage, + page: page, offset: offset, type: type.value.meta, ); diff --git a/lib/pages/member_opus/view.dart b/lib/pages/member_opus/view.dart index 4609c92d3..c9945e3dd 100644 --- a/lib/pages/member_opus/view.dart +++ b/lib/pages/member_opus/view.dart @@ -125,28 +125,27 @@ class _MemberOpusState extends State crossAxisSpacing: StyleString.safeSpace, children: List.generate(10, (_) => const SpaceOpusSkeleton()), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverWaterfallFlow.extent( maxCrossAxisExtent: Grid.smallCardWidth, mainAxisSpacing: StyleString.safeSpace, crossAxisSpacing: StyleString.safeSpace, lastChildLayoutTypeBuilder: (index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - return index == loadingState.response!.length + return index == response.length ? LastChildLayoutType.foot : LastChildLayoutType.none; }, - children: loadingState.response! - .map((item) => SpaceOpusItem(item: item)) - .toList(), + children: + response!.map((item) => SpaceOpusItem(item: item)).toList(), ) : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_pgc/controller.dart b/lib/pages/member_pgc/controller.dart index 40a569afc..8d3a84e24 100644 --- a/lib/pages/member_pgc/controller.dart +++ b/lib/pages/member_pgc/controller.dart @@ -25,9 +25,9 @@ class MemberBangumiCtr super.onInit(); dynamic response = (_ctr.loadingState.value as Success).response; if (response is SpaceData) { - currentPage = 2; + page = 2; dynamic res = response.season; - loadingState.value = LoadingState.success(res.item); + loadingState.value = Success(res.item); count = res.count; isEnd = res.item!.length >= count; } else { @@ -52,6 +52,6 @@ class MemberBangumiCtr MemberHttp.spaceArchive( type: ContributeType.bangumi, mid: mid, - pn: currentPage, + pn: page, ); } diff --git a/lib/pages/member_pgc/view.dart b/lib/pages/member_pgc/view.dart index 5e7684c30..29f2a7af5 100644 --- a/lib/pages/member_pgc/view.dart +++ b/lib/pages/member_pgc/view.dart @@ -64,7 +64,7 @@ class _MemberBangumiState extends State Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => const SliverToBoxAdapter(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -75,19 +75,19 @@ class _MemberBangumiState extends State ), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return BangumiCardVMemberHome( - bangumiItem: loadingState.response![index], + bangumiItem: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: _controller.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_profile/view.dart b/lib/pages/member_profile/view.dart index d41b3c750..0e9311b7f 100644 --- a/lib/pages/member_profile/view.dart +++ b/lib/pages/member_profile/view.dart @@ -69,9 +69,9 @@ class _EditProfilePageState extends State { .then((data) { setState(() { if (data.data['code'] == 0) { - _loadingState = LoadingState.success(data.data['data']); + _loadingState = Success(data.data['data']); } else { - _loadingState = LoadingState.error(data.data['message']); + _loadingState = Error(data.data['message']); } }); }); @@ -90,7 +90,7 @@ class _EditProfilePageState extends State { return switch (loadingState) { Loading() => loadingWidget, - Success() => ListView( + Success(:var response) => ListView( children: [ _item( theme: theme, @@ -99,8 +99,7 @@ class _EditProfilePageState extends State { padding: const EdgeInsets.symmetric(vertical: 5), child: ClipOval( child: CachedNetworkImage( - imageUrl: - Utils.thumbnailImgUrl(loadingState.response['face']), + imageUrl: Utils.thumbnailImgUrl(response['face']), ), ), ), @@ -115,15 +114,15 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '昵称', - text: loadingState.response['name'], + text: response['name'], onTap: () { - if (loadingState.response['coins'] < 6) { + if (response['coins'] < 6) { SmartDialog.showToast('硬币不足'); } else { _editDialog( type: ProfileType.uname, title: '昵称', - text: loadingState.response['name'], + text: response['name'], ); } }, @@ -132,12 +131,11 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '性别', - text: _sex(loadingState.response['sex']), + text: _sex(response['sex']), onTap: () { showDialog( context: context, - builder: (context_) => - _sexDialog(loadingState.response['sex']), + builder: (context_) => _sexDialog(response['sex']), ); }, ), @@ -145,12 +143,11 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '出生年月', - text: loadingState.response['birthday'], + text: response['birthday'], onTap: () { showDatePicker( context: context, - initialDate: - DateTime.parse(loadingState.response['birthday']), + initialDate: DateTime.parse(response['birthday']), firstDate: DateTime(1900, 1, 1), lastDate: DateTime.now(), ).then((date) { @@ -167,14 +164,12 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '个性签名', - text: loadingState.response['sign'].isEmpty - ? '无' - : loadingState.response['sign'], + text: response['sign'].isEmpty ? '无' : response['sign'], onTap: () { _editDialog( type: ProfileType.sign, title: '个性签名', - text: loadingState.response['sign'], + text: response['sign'], ); }, ), @@ -190,9 +185,8 @@ class _EditProfilePageState extends State { theme: theme, title: 'UID', needIcon: false, - text: loadingState.response['mid'].toString(), - onTap: () => - Utils.copyText(loadingState.response['mid'].toString()), + text: response['mid'].toString(), + onTap: () => Utils.copyText(response['mid'].toString()), ), divider1, _item( @@ -205,8 +199,8 @@ class _EditProfilePageState extends State { SizedBox(height: 25 + MediaQuery.paddingOf(context).bottom), ], ), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _getInfo, ), }; diff --git a/lib/pages/member_search/child/controller.dart b/lib/pages/member_search/child/controller.dart index 2910b88a2..f101d216c 100644 --- a/lib/pages/member_search/child/controller.dart +++ b/lib/pages/member_search/child/controller.dart @@ -53,13 +53,13 @@ class MemberSearchChildController extends CommonListController { return switch (searchType) { MemberSearchType.archive => MemberHttp.memberArchiveNew( mid: controller.mid, - pn: currentPage, + pn: page, keyword: controller.editingController.text, order: 'pubdate', ), MemberSearchType.dynamic => MemberHttp.memberDynamicSearchNew( mid: controller.mid, - pn: currentPage, + pn: page, offset: offset ?? '', keyword: controller.editingController.text, ), diff --git a/lib/pages/member_search/child/view.dart b/lib/pages/member_search/child/view.dart index 620703e74..c566cc6cb 100644 --- a/lib/pages/member_search/child/view.dart +++ b/lib/pages/member_search/child/view.dart @@ -72,7 +72,7 @@ class _MemberSearchChildPageState extends State Widget _buildBody(LoadingState loadingState) { return switch (loadingState) { Loading() => _buildLoading, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Builder( builder: (context) { return switch (widget.searchType) { @@ -80,14 +80,14 @@ class _MemberSearchChildPageState extends State gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return VideoCardH( - videoItem: loadingState.response![index], + videoItem: response[index], ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), MemberSearchType.dynamic => dynamicsWaterfallFlow @@ -96,14 +96,14 @@ class _MemberSearchChildPageState extends State crossAxisSpacing: StyleString.safeSpace, mainAxisSpacing: StyleString.safeSpace, lastChildLayoutTypeBuilder: (index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - return index == loadingState.response!.length + return index == response.length ? LastChildLayoutType.foot : LastChildLayoutType.none; }, - children: loadingState.response! + children: response! .map((item) => DynamicPanel(item: item)) .toList(), ) @@ -114,15 +114,14 @@ class _MemberSearchChildPageState extends State maxExtent: Grid.smallCardWidth * 2, sliver: SliverList.builder( itemBuilder: (context, index) { - if (index == - loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return DynamicPanel( - item: loadingState.response![index], + item: response[index], ); }, - itemCount: loadingState.response!.length, + itemCount: response!.length, ), ), const SliverFillRemaining(), @@ -134,8 +133,8 @@ class _MemberSearchChildPageState extends State : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_season_series/controller.dart b/lib/pages/member_season_series/controller.dart index 4f4d43fac..8f4241df7 100644 --- a/lib/pages/member_season_series/controller.dart +++ b/lib/pages/member_season_series/controller.dart @@ -35,6 +35,6 @@ class SeasonSeriesController extends CommonListController { @override Future customGetData() => MemberHttp.seasonSeriesList( mid: mid, - pn: currentPage, + pn: page, ); } diff --git a/lib/pages/member_season_series/view.dart b/lib/pages/member_season_series/view.dart index 096eecc72..758a5decb 100644 --- a/lib/pages/member_season_series/view.dart +++ b/lib/pages/member_season_series/view.dart @@ -63,15 +63,15 @@ class _SeasonSeriesPageState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - dynamic item = loadingState.response![index]; + dynamic item = response[index]; return SeasonSeriesCard( item: item, onTap: () { @@ -103,14 +103,14 @@ class _SeasonSeriesPageState extends State }, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/member_video/controller.dart b/lib/pages/member_video/controller.dart index 748b13589..8e11a6d50 100644 --- a/lib/pages/member_video/controller.dart +++ b/lib/pages/member_video/controller.dart @@ -55,7 +55,7 @@ class MemberVideoCtr lastAid = null; next = null; isEnd = false; - currentPage = 0; + page = 0; await queryData(); } } @@ -66,7 +66,7 @@ class MemberVideoCtr if (type == ContributeType.video) { fromViewAid = Get.parameters['from_view_aid']; } - currentPage = 0; + page = 0; queryData(); } @@ -78,10 +78,10 @@ class MemberVideoCtr ..value = data.episodicButton ?? EpisodicButton() ..refresh(); next = data.next; - if (currentPage == 0 || isLoadPrevious == true) { + if (page == 0 || isLoadPrevious == true) { hasPrev = data.hasPrev; } - if (currentPage == 0 || isLoadPrevious != true) { + if (page == 0 || isLoadPrevious != true) { if ((type == ContributeType.video ? data.hasNext == false : data.next == 0) || @@ -92,7 +92,7 @@ class MemberVideoCtr count.value = type == ContributeType.season ? (data.item?.length ?? -1) : (data.count ?? -1); - if (currentPage != 0 && loadingState.value is Success) { + if (page != 0 && loadingState.value is Success) { data.item ??= []; if (isLoadPrevious == true) { data.item!.addAll((loadingState.value as Success).response); @@ -103,7 +103,7 @@ class MemberVideoCtr firstAid = data.item?.firstOrNull?.param; lastAid = data.item?.lastOrNull?.param; isLoadPrevious = null; - loadingState.value = LoadingState.success(data.item); + loadingState.value = Success(data.item); return true; } @@ -123,11 +123,11 @@ class MemberVideoCtr ? 'asc' : null : sort.value, - pn: type == ContributeType.charging ? currentPage : null, + pn: type == ContributeType.charging ? page : null, next: next, seasonId: seasonId, seriesId: seriesId, - includeCursor: isLocating == true && currentPage == 0 ? true : null, + includeCursor: isLocating == true && page == 0 ? true : null, ); void queryBySort() { diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index f6fd3a313..003f9ac8f 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -91,7 +91,7 @@ class _MemberVideoState extends State _controller ..isLocating = true ..lastAid = _controller.fromViewAid - ..currentPage = 0 + ..page = 0 ..loadingState.value = LoadingState.loading() ..queryData(); }, @@ -115,7 +115,7 @@ class _MemberVideoState extends State childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverMainAxisGroup( slivers: [ SliverPersistentHeader( @@ -205,18 +205,17 @@ class _MemberVideoState extends State delegate: SliverChildBuilderDelegate( (context, index) { if (widget.type != ContributeType.season && - index == loadingState.response!.length - 1) { + index == response.length - 1) { _controller.onLoadMore(); } - final SpaceArchiveItem item = - loadingState.response![index]; + final SpaceArchiveItem item = response[index]; return VideoCardHMemberVideo( key: ValueKey('${item.param}'), videoItem: item, fromViewAid: _controller.fromViewAid, ); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ), ], @@ -224,8 +223,8 @@ class _MemberVideoState extends State : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index 7892e6c1b..138a864d3 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -70,14 +70,14 @@ class _AtMePageState extends State { return const MsgFeedTopSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _atMeController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return ListTile( onTap: () { String? nativeUri = item.item?.nativeUri; @@ -163,8 +163,8 @@ class _AtMePageState extends State { }, ) : HttpError(onReload: _atMeController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _atMeController.onReload, ), }; diff --git a/lib/pages/msg_feed_top/like_me/controller.dart b/lib/pages/msg_feed_top/like_me/controller.dart index ed636b9a0..00cda0cc7 100644 --- a/lib/pages/msg_feed_top/like_me/controller.dart +++ b/lib/pages/msg_feed_top/like_me/controller.dart @@ -10,6 +10,8 @@ class LikeMeController extends CommonDataController { int cursor = -1; int cursorTime = -1; + bool isEnd = false; + @override void onInit() { super.onInit(); @@ -27,14 +29,12 @@ class LikeMeController extends CommonDataController { cursorTime = data.total?.cursor?.time ?? -1; List latest = data.latest?.items ?? []; List total = data.total?.items ?? []; - if (currentPage != 1 && loadingState.value is Success) { - Pair, List> pair = - (loadingState.value as Success).response; + if (!isRefresh && loadingState.value is Success) { + Pair, List> pair = loadingState.value.data; latest.insertAll(0, pair.first); total.insertAll(0, pair.second); } - loadingState.value = - LoadingState.success(Pair(first: latest, second: total)); + loadingState.value = Success(Pair(first: latest, second: total)); return true; } diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index 5ef7ad003..79207d0c3 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -69,10 +69,9 @@ class _LikeMePageState extends State { return const MsgFeedTopSkeleton(); }, ), - Success() => () { + Success(:var response) => () { final theme = Theme.of(context); - Pair, List> pair = - loadingState.response; + Pair, List> pair = response; List latest = pair.first; List total = pair.second; if (latest.isNotEmpty || total.isNotEmpty) { @@ -143,8 +142,8 @@ class _LikeMePageState extends State { } return HttpError(onReload: _likeMeController.onReload); }(), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _likeMeController.onReload, ), }; diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 42b265285..f2f40fd6d 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -70,15 +70,15 @@ class _ReplyMePageState extends State { return const MsgFeedTopSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _replyMeController.onLoadMore(); } - ReplyMeItems item = loadingState.response![index]; + ReplyMeItems item = response[index]; return ListTile( onTap: () { String? nativeUri = item.item?.nativeUri; @@ -176,8 +176,8 @@ class _ReplyMePageState extends State { }, ) : HttpError(onReload: _replyMeController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _replyMeController.onReload, ), }; diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 9ad19778b..0d679ac4c 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -61,14 +61,14 @@ class _SysMsgPageState extends State { }, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _sysMsgController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; String? content = item.content; if (content != null) { try { @@ -131,8 +131,8 @@ class _SysMsgPageState extends State { }, ) : HttpError(onReload: _sysMsgController.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _sysMsgController.onReload, ), }; diff --git a/lib/pages/pgc_index/controller.dart b/lib/pages/pgc_index/controller.dart index 861451876..13a2f5bfa 100644 --- a/lib/pages/pgc_index/controller.dart +++ b/lib/pages/pgc_index/controller.dart @@ -42,7 +42,7 @@ class PgcIndexController extends CommonListController { @override Future customGetData() => BangumiHttp.pgcIndexResult( - page: currentPage, + page: page, params: indexParams, seasonType: indexType == null ? 1 : null, type: 0, diff --git a/lib/pages/pgc_index/view.dart b/lib/pages/pgc_index/view.dart index c88ff8f78..9e207db67 100644 --- a/lib/pages/pgc_index/view.dart +++ b/lib/pages/pgc_index/view.dart @@ -46,8 +46,8 @@ class _PgcIndexPageState extends State Widget _buildBody(ThemeData theme, LoadingState loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => Builder(builder: (context) { - PgcIndexCondition data = loadingState.response; + Success(:var response) => Builder(builder: (context) { + PgcIndexCondition data = response; int count = (data.order?.isNotEmpty == true ? 1 : 0) + (data.filter?.length ?? 0); if (count == 0) return const SizedBox.shrink(); @@ -80,8 +80,8 @@ class _PgcIndexPageState extends State ), ); }), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: () { _ctr.conditionState.value = LoadingState.loading(); _ctr.getPgcIndexCondition(); @@ -206,7 +206,7 @@ class _PgcIndexPageState extends State Widget _buildList(LoadingState?> loadingState) { return switch (loadingState) { Loading() => const HttpError(errMsg: '加载中'), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -217,18 +217,17 @@ class _PgcIndexPageState extends State ), delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _ctr.onLoadMore(); } - return BangumiCardVPgcIndex( - bangumiItem: loadingState.response![index]); + return BangumiCardVPgcIndex(bangumiItem: response[index]); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: _ctr.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _ctr.onReload, ), }; diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index 1af635114..fe3b0c9c8 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -68,12 +68,12 @@ class _ZonePageState extends CommonPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => _buildSkeleton(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - final item = loadingState.response![index]; + final item = response[index]; if (item is HotVideoItemModel) { return VideoCardH( videoItem: item, @@ -82,12 +82,12 @@ class _ZonePageState extends CommonPageState } return PgcRankItem(item: item); }, - childCount: loadingState.response!.length, + childCount: response!.length, ), ) : HttpError(onReload: controller.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/rcmd/controller.dart b/lib/pages/rcmd/controller.dart index 4d5d1f402..971c2517d 100644 --- a/lib/pages/rcmd/controller.dart +++ b/lib/pages/rcmd/controller.dart @@ -14,22 +14,20 @@ class RcmdController extends CommonListController { @override void onInit() { super.onInit(); - currentPage = 0; + page = 0; queryData(); } @override Future customGetData() { return appRcmd - ? VideoHttp.rcmdVideoListApp(freshIdx: currentPage) - : VideoHttp.rcmdVideoList(freshIdx: currentPage, ps: 20); + ? VideoHttp.rcmdVideoListApp(freshIdx: page) + : VideoHttp.rcmdVideoList(freshIdx: page, ps: 20); } @override void handleListResponse(List dataList) { - if (enableSaveLastData && - currentPage == 0 && - loadingState.value is Success) { + if (enableSaveLastData && page == 0 && loadingState.value is Success) { List? currentList = (loadingState.value as Success).response; if (currentList?.isNotEmpty == true) { if (savedRcmdTip) { @@ -45,7 +43,7 @@ class RcmdController extends CommonListController { @override Future onRefresh() { - currentPage = 0; + page = 0; isEnd = false; return queryData(); } diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 65aa7de5a..de12cb530 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -54,7 +54,7 @@ class _RcmdPageState extends CommonPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => _buildSkeleton(), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( mainAxisSpacing: StyleString.cardSpace, @@ -65,7 +65,7 @@ class _RcmdPageState extends CommonPageState ), delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { controller.onLoadMore(); } if (controller.lastRefreshAt != null) { @@ -100,7 +100,7 @@ class _RcmdPageState extends CommonPageState ? index - 1 : index; return VideoCardV( - videoItem: loadingState.response![actualIndex], + videoItem: response[actualIndex], onRemove: () { if (controller.lastRefreshAt != null && actualIndex < controller.lastRefreshAt!) { @@ -115,7 +115,7 @@ class _RcmdPageState extends CommonPageState ); } else { return VideoCardV( - videoItem: loadingState.response![index], + videoItem: response[index], onRemove: () { ((controller.loadingState.value as Success).response as List) @@ -126,13 +126,13 @@ class _RcmdPageState extends CommonPageState } }, childCount: controller.lastRefreshAt != null - ? loadingState.response!.length + 1 - : loadingState.response!.length, + ? response!.length + 1 + : response!.length, ), ) : HttpError(onReload: controller.onReload), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 03e465ab0..a8feae581 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -343,17 +343,17 @@ class _SearchPageState extends State { Widget _buildHotKey( LoadingState loadingState, bool isHot) { return switch (loadingState) { - Success() => loadingState.response.list?.isNotEmpty == true + Success(:var response) => response.list?.isNotEmpty == true ? LayoutBuilder( builder: (context, constraints) => HotKeyword( width: constraints.maxWidth, - hotSearchList: loadingState.response.list!, + hotSearchList: response.list!, onClick: _searchController.onClickKeyword, ), ) : const SizedBox.shrink(), - Error() => errorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => errorWidget( + errMsg: errMsg, onReload: isHot ? _searchController.queryHotSearchList : _searchController.queryRecommendList, diff --git a/lib/pages/search_panel/all/controller.dart b/lib/pages/search_panel/all/controller.dart index 114829fa7..0c93f89bc 100644 --- a/lib/pages/search_panel/all/controller.dart +++ b/lib/pages/search_panel/all/controller.dart @@ -40,7 +40,7 @@ class SearchAllController @override Future> customGetData() => SearchHttp.searchAll( keyword: keyword, - page: currentPage, + page: page, order: order.value, duration: searchType == SearchType.video ? duration.value : null, tids: tids, diff --git a/lib/pages/search_panel/controller.dart b/lib/pages/search_panel/controller.dart index 092b36676..ba7d88e9d 100644 --- a/lib/pages/search_panel/controller.dart +++ b/lib/pages/search_panel/controller.dart @@ -60,7 +60,7 @@ class SearchPanelController, T> Future> customGetData() => SearchHttp.searchByType( searchType: searchType, keyword: keyword, - page: currentPage, + page: page, order: order.value, duration: searchType == SearchType.video ? duration.value : null, tids: tids, diff --git a/lib/pages/search_panel/view.dart b/lib/pages/search_panel/view.dart index be8c18cac..d3378c8a8 100644 --- a/lib/pages/search_panel/view.dart +++ b/lib/pages/search_panel/view.dart @@ -104,13 +104,13 @@ abstract class CommonSearchPanelState< sliver: _builLoading, ) : _builLoading, - Success() => loadingState.response?.isNotEmpty == true - ? buildList(theme, loadingState.response!) + Success(:var response) => response?.isNotEmpty == true + ? buildList(theme, response!) : HttpError( onReload: controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: controller.onReload, ), }; diff --git a/lib/pages/search_trending/view.dart b/lib/pages/search_trending/view.dart index 2c99e885a..998ae2cd7 100644 --- a/lib/pages/search_trending/view.dart +++ b/lib/pages/search_trending/view.dart @@ -144,14 +144,14 @@ class _SearchTrendingPageState extends State { ThemeData theme, LoadingState?> loadingState) { return switch (loadingState) { Loading() => const SliverToBoxAdapter(child: LinearProgressIndicator()), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 100), sliver: SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - final item = loadingState.response![index]; + final item = response[index]; return ListTile( dense: true, onTap: () { @@ -221,8 +221,8 @@ class _SearchTrendingPageState extends State { : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/subscription/controller.dart b/lib/pages/subscription/controller.dart index 811dc7d30..f1d88956e 100644 --- a/lib/pages/subscription/controller.dart +++ b/lib/pages/subscription/controller.dart @@ -21,7 +21,7 @@ class SubController @override Future queryData([bool isRefresh = true]) { if (mid == 0) { - loadingState.value = LoadingState.error('账号未登录'); + loadingState.value = Error('账号未登录'); return Future.value(); } return super.queryData(isRefresh); @@ -67,7 +67,7 @@ class SubController @override Future?>> customGetData() => UserHttp.userSubFolder( - pn: currentPage, + pn: page, ps: 20, mid: mid, ); diff --git a/lib/pages/subscription/view.dart b/lib/pages/subscription/view.dart index 2387440c9..c1e5b952d 100644 --- a/lib/pages/subscription/view.dart +++ b/lib/pages/subscription/view.dart @@ -52,17 +52,17 @@ class _SubPageState extends State { childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( - childCount: loadingState.response!.length, + childCount: response!.length, (BuildContext context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _subController.onLoadMore(); } return SubItem( - subFolderItem: loadingState.response![index], + subFolderItem: response[index], cancelSub: _subController.cancelSub, ); }, @@ -71,8 +71,8 @@ class _SubPageState extends State { : HttpError( onReload: _subController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _subController.onReload, ), }; diff --git a/lib/pages/subscription_detail/controller.dart b/lib/pages/subscription_detail/controller.dart index 203e014bb..0a4fef9c5 100644 --- a/lib/pages/subscription_detail/controller.dart +++ b/lib/pages/subscription_detail/controller.dart @@ -53,14 +53,14 @@ class SubDetailController return UserHttp.favResourceList( id: id, ps: 20, - pn: currentPage, + pn: page, ); } else { return UserHttp.favSeasonList( // item.type! == 21 id: id, ps: 20, - pn: currentPage, + pn: page, ); } } diff --git a/lib/pages/subscription_detail/view.dart b/lib/pages/subscription_detail/view.dart index 2fc19cacf..e974101a4 100644 --- a/lib/pages/subscription_detail/view.dart +++ b/lib/pages/subscription_detail/view.dart @@ -57,7 +57,7 @@ class _SubDetailPageState extends State { childCount: 10, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverPadding( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80, @@ -65,13 +65,13 @@ class _SubDetailPageState extends State { sliver: SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( - childCount: loadingState.response!.length, + childCount: response!.length, (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _subDetailController.onLoadMore(); } return SubVideoCardH( - videoItem: loadingState.response![index], + videoItem: response[index], ); }, ), @@ -80,8 +80,8 @@ class _SubDetailPageState extends State { : HttpError( onReload: _subDetailController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _subDetailController.onReload, ), }; diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 4502a0574..8c517ff4c 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -1092,7 +1092,7 @@ class VideoDetailController extends GetxController subType: videoType == SearchType.media_bangumi ? subType : null, callback: () { if (videoState.value is! Success) { - videoState.value = LoadingState.success(null); + videoState.value = Success(null); } setSubtitle(vttSubtitlesIndex.value); }, @@ -1186,7 +1186,7 @@ class VideoDetailController extends GetxController SmartDialog.showToast('视频资源不存在'); autoPlay.value = false; isShowCover.value = true; - videoState.value = LoadingState.error('视频资源不存在'); + videoState.value = Error('视频资源不存在'); if (plPlayerController.isFullScreen.value) { plPlayerController.toggleFullScreen(false); } @@ -1297,7 +1297,7 @@ class VideoDetailController extends GetxController } else { autoPlay.value = false; isShowCover.value = true; - videoState.value = LoadingState.error(result['msg']); + videoState.value = Error(result['msg']); if (plPlayerController.isFullScreen.value) { plPlayerController.toggleFullScreen(false); } diff --git a/lib/pages/video/introduction/pgc/view.dart b/lib/pages/video/introduction/pgc/view.dart index d3e71c2b0..a824098b9 100644 --- a/lib/pages/video/introduction/pgc/view.dart +++ b/lib/pages/video/introduction/pgc/view.dart @@ -87,19 +87,19 @@ class _BangumiIntroPanelState extends State showEpisodes: widget.showEpisodes, showIntroDetail: () {}, ), - Success() => BangumiInfo( + Success(:var response) => BangumiInfo( heroTag: widget.heroTag, isLoading: false, - bangumiDetail: loadingState.response, + bangumiDetail: response, cid: cid, showEpisodes: widget.showEpisodes, showIntroDetail: () => widget.showIntroDetail( - loadingState.response, + response, bangumiIntroController.videoTags, ), ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: bangumiIntroController.onReload, ), }; diff --git a/lib/pages/video/member/controller.dart b/lib/pages/video/member/controller.dart index 5832ba7e4..ef759b62e 100644 --- a/lib/pages/video/member/controller.dart +++ b/lib/pages/video/member/controller.dart @@ -12,6 +12,8 @@ class HorizontalMemberPageController extends CommonDataController { dynamic mid; + int currentPage = 0; + Rx> userState = LoadingState.loading().obs; RxMap userStat = {}.obs; @@ -19,7 +21,6 @@ class HorizontalMemberPageController extends CommonDataController { @override void onInit() { super.onInit(); - currentPage = 0; getUserInfo(); queryData(); } @@ -27,10 +28,10 @@ class HorizontalMemberPageController extends CommonDataController { Future getUserInfo() async { dynamic res = await MemberHttp.memberInfo(mid: mid); if (res['status']) { - userState.value = LoadingState.success(res['data']); + userState.value = Success(res['data']); getMemberStat(); } else { - userState.value = LoadingState.error(res['msg']); + userState.value = Error(res['msg']); } } @@ -69,7 +70,7 @@ class HorizontalMemberPageController extends CommonDataController { } firstAid = data.item?.firstOrNull?.param; lastAid = data.item?.lastOrNull?.param; - loadingState.value = LoadingState.success(data.item); + loadingState.value = Success(data.item); isLoadPrevious = false; return true; } diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index f65dc3f75..5352a56d9 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -87,7 +87,7 @@ class _HorizontalMemberPageState extends State { Widget _buildUserPage(ThemeData theme, LoadingState userState) { return switch (userState) { Loading() => loadingWidget, - Success() => Column( + Success(:var response) => Column( children: [ const SizedBox(height: 4), Row( @@ -103,7 +103,7 @@ class _HorizontalMemberPageState extends State { const SizedBox(width: 16), ], ), - _buildUserInfo(theme, userState.response), + _buildUserInfo(theme, response), const SizedBox(height: 5), Expanded( child: Obx( @@ -111,11 +111,12 @@ class _HorizontalMemberPageState extends State { ), ], ), - Error() => scrollErrorWidget( + Error(:var errMsg) => scrollErrorWidget( controller: _controller.scrollController, - errMsg: userState.errMsg, + errMsg: errMsg, onReload: () { - _controller.userState.value = LoadingState.loading(); + _controller.userState.value = + LoadingState.loading(); _controller.getUserInfo(); }, ), @@ -178,7 +179,7 @@ class _HorizontalMemberPageState extends State { Widget _buildVideoList(ThemeData theme, LoadingState loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => Material( + Success(:var response) => Material( color: Colors.transparent, child: CustomScrollView( controller: _controller.scrollController, @@ -196,12 +197,10 @@ class _HorizontalMemberPageState extends State { gridDelegate: Grid.videoCardHDelegate(context), delegate: SliverChildBuilderDelegate( (context, index) { - if (index == loadingState.response.length - 1 && - _controller.hasNext) { + if (index == response.length - 1 && _controller.hasNext) { _controller.onLoadMore(); } - final SpaceArchiveItem videoItem = - loadingState.response[index]; + final SpaceArchiveItem videoItem = response[index]; return VideoCardHMemberVideo( key: ValueKey('${videoItem.param}'), videoItem: videoItem, @@ -222,16 +221,16 @@ class _HorizontalMemberPageState extends State { }, ); }, - childCount: loadingState.response.length, + childCount: response.length, ), ), ), ], ), ), - Error() => scrollErrorWidget( + Error(:var errMsg) => scrollErrorWidget( controller: _controller.scrollController, - errMsg: loadingState.errMsg, + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/video/note/controller.dart b/lib/pages/video/note/controller.dart index 11c99cf30..eca5a3ac0 100644 --- a/lib/pages/video/note/controller.dart +++ b/lib/pages/video/note/controller.dart @@ -39,6 +39,6 @@ class NoteListPageCtr extends CommonListController { Future customGetData() => VideoHttp.getVideoNoteList( oid: oid, uperMid: upperMid, - page: currentPage, + page: page, ); } diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index 2b7f63457..a6ebb5379 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -148,7 +148,7 @@ class _NoteListPageState extends CommonSlidePageState { ) ], ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( @@ -157,13 +157,12 @@ class _NoteListPageState extends CommonSlidePageState { slivers: [ SliverList.separated( itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } - return _itemWidget( - context, theme, loadingState.response![index]); + return _itemWidget(context, theme, response[index]); }, - itemCount: loadingState.response!.length, + itemCount: response!.length, separatorBuilder: (context, index) => Divider( height: 1, color: theme.colorScheme.outline.withOpacity(0.1), @@ -178,7 +177,7 @@ class _NoteListPageState extends CommonSlidePageState { ), ) : errWidget(), - Error() => errWidget(loadingState.errMsg), + Error(:var errMsg) => errWidget(errMsg), }; } diff --git a/lib/pages/video/related/view.dart b/lib/pages/video/related/view.dart index 432acf3d5..c21041a11 100644 --- a/lib/pages/video/related/view.dart +++ b/lib/pages/video/related/view.dart @@ -45,19 +45,22 @@ class _RelatedVideoPanelState extends State childCount: 5, ), ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverGrid( gridDelegate: Grid.videoCardHDelegate(context), - delegate: SliverChildBuilderDelegate((context, index) { - return VideoCardH( - videoItem: loadingState.response![index], - showPubdate: true, - ); - }, childCount: loadingState.response!.length), + delegate: SliverChildBuilderDelegate( + (context, index) { + return VideoCardH( + videoItem: response[index], + showPubdate: true, + ); + }, + childCount: response!.length, + ), ) : const SliverToBoxAdapter(), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _relatedController.onReload, ), }; diff --git a/lib/pages/video/reply/view.dart b/lib/pages/video/reply/view.dart index 38dba7145..97e316170 100644 --- a/lib/pages/video/reply/view.dart +++ b/lib/pages/video/reply/view.dart @@ -203,11 +203,11 @@ class _VideoReplyPanelState extends State }, itemCount: 5, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.builder( itemBuilder: (context, index) { double bottom = MediaQuery.of(context).padding.bottom; - if (index == loadingState.response.length) { + if (index == response.length) { _videoReplyController.onLoadMore(); return Container( alignment: Alignment.center, @@ -216,7 +216,7 @@ class _VideoReplyPanelState extends State child: Text( _videoReplyController.isEnd.not ? '加载中...' - : loadingState.response.isEmpty + : response.isEmpty ? '还没有评论' : '没有更多了', style: TextStyle( @@ -227,13 +227,13 @@ class _VideoReplyPanelState extends State ); } else { return ReplyItemGrpc( - replyItem: loadingState.response[index], + replyItem: response[index], replyLevel: widget.replyLevel, replyReply: widget.replyReply, onReply: () { _videoReplyController.onReply( context, - replyItem: loadingState.response[index], + replyItem: response[index], index: index, ); }, @@ -257,14 +257,14 @@ class _VideoReplyPanelState extends State ); } }, - itemCount: loadingState.response.length + 1, + itemCount: response.length + 1, ) : HttpError( errMsg: '还没有评论', onReload: _videoReplyController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _videoReplyController.onReload, ), }; diff --git a/lib/pages/video/reply/widgets/zan_grpc.dart b/lib/pages/video/reply/widgets/zan_grpc.dart index f77292936..0d4611c04 100644 --- a/lib/pages/video/reply/widgets/zan_grpc.dart +++ b/lib/pages/video/reply/widgets/zan_grpc.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/reply.dart'; diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index d32c601fe..7b09b4faf 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -402,8 +402,8 @@ class _VideoReplyReplyPanelState ], ), ), - Success() => () { - if (index == loadingState.response.length) { + Success(:var response) => () { + if (index == response.length) { _videoReplyReplyController.onLoadMore(); return Container( alignment: Alignment.center, @@ -413,7 +413,7 @@ class _VideoReplyReplyPanelState child: Text( _videoReplyReplyController.isEnd.not ? '加载中...' - : loadingState.response.isEmpty + : response.isEmpty ? '还没有评论' : '没有更多了', style: TextStyle( @@ -435,16 +435,16 @@ class _VideoReplyReplyPanelState return ColoredBox( color: colorAnimation!.value ?? theme.colorScheme.onInverseSurface, - child: _replyItem(loadingState.response[index], index), + child: _replyItem(response[index], index), ); }, ); } - return _replyItem(loadingState.response[index], index); + return _replyItem(response[index], index); } }(), - Error() => errorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => errorWidget( + errMsg: errMsg, onReload: _videoReplyReplyController.onReload, ), }; diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index e2a0ed177..9938c66b4 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -97,15 +97,15 @@ class _WhisperPageState extends State { return const WhisperItemSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return WhisperSessionItem( - item: loadingState.response![index], + item: response[index], onSetTop: (isTop, id) => _controller.onSetTop(index, isTop, id), onRemove: (talkerId) => _controller.onRemove(index, talkerId), @@ -121,8 +121,8 @@ class _WhisperPageState extends State { : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/whisper_block/view.dart b/lib/pages/whisper_block/view.dart index eaf72203e..058ab06de 100644 --- a/lib/pages/whisper_block/view.dart +++ b/lib/pages/whisper_block/view.dart @@ -35,7 +35,7 @@ class _WhisperBlockPageState extends State { ThemeData theme, LoadingState?> loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -71,7 +71,7 @@ class _WhisperBlockPageState extends State { child: Wrap( spacing: 12, runSpacing: 12, - children: loadingState.response! + children: response! .map((e) => SearchText( text: e.keyword, onTap: (keyword) { @@ -135,8 +135,8 @@ class _WhisperBlockPageState extends State { ], ), ), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index 8df1e3f6f..1e8687265 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -125,23 +125,23 @@ class _WhisperDetailPageState Widget _buildBody(LoadingState?> loadingState) { return switch (loadingState) { Loading() => loadingWidget, - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? refreshIndicator( onRefresh: _whisperDetailController.onRefresh, child: ListView.separated( shrinkWrap: true, reverse: true, - itemCount: loadingState.response!.length, + itemCount: response!.length, padding: const EdgeInsets.all(12), physics: const AlwaysScrollableScrollPhysics( parent: ClampingScrollPhysics(), ), controller: _whisperDetailController.scrollController, itemBuilder: (context, int index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _whisperDetailController.onLoadMore(); } - final item = loadingState.response![index]; + final item = response[index]; return ChatItem( item: item, eInfos: _whisperDetailController.eInfos, @@ -190,8 +190,8 @@ class _WhisperDetailPageState : scrollErrorWidget( onReload: _whisperDetailController.onReload, ), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _whisperDetailController.onReload, ), }; diff --git a/lib/pages/whisper_secondary/view.dart b/lib/pages/whisper_secondary/view.dart index fb6b316e1..a97320643 100644 --- a/lib/pages/whisper_secondary/view.dart +++ b/lib/pages/whisper_secondary/view.dart @@ -86,15 +86,15 @@ class _WhisperSecPageState extends State { return const WhisperItemSkeleton(); }, ), - Success() => loadingState.response?.isNotEmpty == true + Success(:var response) => response?.isNotEmpty == true ? SliverList.separated( - itemCount: loadingState.response!.length, + itemCount: response!.length, itemBuilder: (context, index) { - if (index == loadingState.response!.length - 1) { + if (index == response.length - 1) { _controller.onLoadMore(); } return WhisperSessionItem( - item: loadingState.response![index], + item: response[index], onSetTop: (isTop, talkerId) => _controller.onSetTop(index, isTop, talkerId), onRemove: (talkerId) => _controller.onRemove(index, talkerId), @@ -110,8 +110,8 @@ class _WhisperSecPageState extends State { : HttpError( onReload: _controller.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, + Error(:var errMsg) => HttpError( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/pages/whisper_settings/controller.dart b/lib/pages/whisper_settings/controller.dart index ef5766ea5..fec91c4bb 100644 --- a/lib/pages/whisper_settings/controller.dart +++ b/lib/pages/whisper_settings/controller.dart @@ -26,7 +26,7 @@ class WhisperSettingsController bool customHandleResponse( bool isRefresh, Success response) { title.value = response.response.pageTitle; - loadingState.value = LoadingState.success(response.response.settings); + loadingState.value = Success(response.response.settings); return true; } diff --git a/lib/pages/whisper_settings/view.dart b/lib/pages/whisper_settings/view.dart index a0561fd90..18e75d8d3 100644 --- a/lib/pages/whisper_settings/view.dart +++ b/lib/pages/whisper_settings/view.dart @@ -45,21 +45,22 @@ class _WhisperSettingsPageState extends State { ThemeData theme, LoadingState> loadingState) { return switch (loadingState) { Loading() => const SizedBox.shrink(), - Success>() => Builder(builder: (context) { - final keys = loadingState.response.keys.toList()..sort(); + Success>(:var response) => + Builder(builder: (context) { + final keys = response.keys.toList()..sort(); return ListView.separated( padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80), itemCount: keys.length, itemBuilder: (context, index) { final key = keys[index]; - final item = loadingState.response[key]!; + final item = response[key]!; return ImSettingsItem( item: item, onSet: () async { PbMap settings = PbMap( - loadingState.response.keyFieldType, - loadingState.response.valueFieldType, + response.keyFieldType, + response.valueFieldType, )..[key] = item; final res = await _controller.onSet(settings); if (res) { @@ -116,8 +117,8 @@ class _WhisperSettingsPageState extends State { _controller.loadingState.refresh(); PbMap settings = PbMap( - loadingState.response.keyFieldType, - loadingState.response.valueFieldType, + response.keyFieldType, + response.valueFieldType, )..[key] = item; final res = await _controller.onSet(settings); @@ -177,8 +178,8 @@ class _WhisperSettingsPageState extends State { ), ); }), - Error() => scrollErrorWidget( - errMsg: loadingState.errMsg, + Error(:var errMsg) => scrollErrorWidget( + errMsg: errMsg, onReload: _controller.onReload, ), }; diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index 365b927cf..30727b534 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -277,7 +277,7 @@ class RequestUtils { return; } } - ctr.loadingState.value = LoadingState.success([res['data']]); + ctr.loadingState.value = Success([res['data']]); } } } catch (e) { @@ -412,8 +412,7 @@ class RequestUtils { .toSet() .difference(resources.toSet()) .toList(); - ctr.loadingState.value = - LoadingState.success(remainList); + ctr.loadingState.value = Success(remainList); } SmartDialog.dismiss(); SmartDialog.showToast('${isCopy ? '复制' : '移动'}成功');