From 4075978dc4aa704179937834ec52f492eb1d534b Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sat, 11 Jan 2025 18:53:59 +0800 Subject: [PATCH] opt: reply error widget Signed-off-by: bggRGjQaUbCoE --- lib/common/widgets/loading_widget.dart | 36 ++++++++++++-------- lib/http/reply.dart | 3 +- lib/pages/dynamics/detail/view.dart | 12 +++---- lib/pages/html/view.dart | 12 +++---- lib/pages/video/detail/reply/view.dart | 12 +++---- lib/pages/video/detail/reply_reply/view.dart | 22 +++--------- 6 files changed, 43 insertions(+), 54 deletions(-) diff --git a/lib/common/widgets/loading_widget.dart b/lib/common/widgets/loading_widget.dart index 97fd0b88..fca7721a 100644 --- a/lib/common/widgets/loading_widget.dart +++ b/lib/common/widgets/loading_widget.dart @@ -19,18 +19,26 @@ Widget scrollErrorWidget({errMsg, callback}) => CustomScrollView( ], ); -Widget grpcReplyErrorWidget(context, onReload) => FilledButton.tonal( - onPressed: () { - GlobalData().grpcReply = false; - onReload(); - }, - style: ButtonStyle( - backgroundColor: WidgetStateProperty.resolveWith((states) { - return Theme.of(context).colorScheme.primary.withAlpha(20); - }), - ), - child: Text( - '暂时关闭gRPC加载评论', - style: TextStyle(color: Theme.of(context).colorScheme.primary), - ), +Widget replyErrorWidget(context, isSliver, errMsg, onReload) => HttpError( + isSliver: isSliver, + errMsg: + '${errMsg.startsWith('gRPC Error') ? '如无法加载评论:\n关闭代理\n或设置中关闭使用gRPC加载评论\n\n' : ''}$errMsg', + callback: onReload, + extraWidget: errMsg.startsWith('gRPC Error') && GlobalData().grpcReply + ? FilledButton.tonal( + onPressed: () { + GlobalData().grpcReply = false; + onReload(); + }, + style: ButtonStyle( + backgroundColor: WidgetStateProperty.resolveWith((states) { + return Theme.of(context).colorScheme.primary.withAlpha(20); + }), + ), + child: Text( + '暂时关闭gRPC加载评论', + style: TextStyle(color: Theme.of(context).colorScheme.primary), + ), + ) + : null, ); diff --git a/lib/http/reply.dart b/lib/http/reply.dart index 43527bfa..5887331d 100644 --- a/lib/http/reply.dart +++ b/lib/http/reply.dart @@ -129,8 +129,7 @@ class ReplyHttp { } return LoadingState.success(mainListReply); } else { - return LoadingState.error( - '${res['msg'].startsWith('gRPC Error') ? '如无法加载评论:\n关闭代理\n或设置中关闭使用gRPC加载评论\n\n' : ''}${res['msg']}'); + return LoadingState.error(res['msg']); } } diff --git a/lib/pages/dynamics/detail/view.dart b/lib/pages/dynamics/detail/view.dart index c363a6e2..5af6c49d 100644 --- a/lib/pages/dynamics/detail/view.dart +++ b/lib/pages/dynamics/detail/view.dart @@ -554,13 +554,11 @@ class _DynamicDetailPageState extends State : HttpError( callback: _dynamicDetailController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, - callback: _dynamicDetailController.onReload, - extraWidget: loadingState.errMsg.startsWith('gRPC Error') && - GlobalData().grpcReply - ? grpcReplyErrorWidget(context, _dynamicDetailController.onReload) - : null, + Error() => replyErrorWidget( + context, + true, + loadingState.errMsg, + _dynamicDetailController.onReload, ), LoadingState() => throw UnimplementedError(), }; diff --git a/lib/pages/html/view.dart b/lib/pages/html/view.dart index 758f07e3..db80de7a 100644 --- a/lib/pages/html/view.dart +++ b/lib/pages/html/view.dart @@ -486,13 +486,11 @@ class _HtmlRenderPageState extends State : HttpError( callback: _htmlRenderCtr.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, - callback: _htmlRenderCtr.onReload, - extraWidget: loadingState.errMsg.startsWith('gRPC Error') && - GlobalData().grpcReply - ? grpcReplyErrorWidget(context, _htmlRenderCtr.onReload) - : null, + Error() => replyErrorWidget( + context, + true, + loadingState.errMsg, + _htmlRenderCtr.onReload, ), LoadingState() => throw UnimplementedError(), }; diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index e9310b25..e82cbb43 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -297,13 +297,11 @@ class _VideoReplyPanelState extends State errMsg: '还没有评论', callback: _videoReplyController.onReload, ), - Error() => HttpError( - errMsg: loadingState.errMsg, - callback: _videoReplyController.onReload, - extraWidget: loadingState.errMsg.startsWith('gRPC Error') && - GlobalData().grpcReply - ? grpcReplyErrorWidget(context, _videoReplyController.onReload) - : null, + Error() => replyErrorWidget( + context, + true, + loadingState.errMsg, + _videoReplyController.onReload, ), LoadingState() => throw UnimplementedError(), }; diff --git a/lib/pages/video/detail/reply_reply/view.dart b/lib/pages/video/detail/reply_reply/view.dart index 75ac4c15..801ae023 100644 --- a/lib/pages/video/detail/reply_reply/view.dart +++ b/lib/pages/video/detail/reply_reply/view.dart @@ -13,7 +13,6 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPlus/common/skeleton/video_reply.dart'; -import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/models/common/reply_type.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; @@ -412,22 +411,11 @@ class _VideoReplyReplyPanelState extends State { : _replyItem(loadingState.response[index], index); } }(), - Error() => CustomScrollView( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - slivers: [ - HttpError( - errMsg: loadingState.errMsg, - callback: _videoReplyReplyController.onReload, - extraWidget: loadingState.errMsg.startsWith('gRPC Error') && - GlobalData().grpcReply - ? grpcReplyErrorWidget( - context, - _videoReplyReplyController.onReload, - ) - : null, - ) - ], + Error() => replyErrorWidget( + context, + false, + loadingState.errMsg, + _videoReplyReplyController.onReload, ), LoadingState() => throw UnimplementedError(), };