opt: reply error widget

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-11 18:53:59 +08:00
parent 9b8b9bd1ab
commit 4075978dc4
6 changed files with 43 additions and 54 deletions

View File

@@ -19,18 +19,26 @@ Widget scrollErrorWidget({errMsg, callback}) => CustomScrollView(
], ],
); );
Widget grpcReplyErrorWidget(context, onReload) => FilledButton.tonal( Widget replyErrorWidget(context, isSliver, errMsg, onReload) => HttpError(
onPressed: () { isSliver: isSliver,
GlobalData().grpcReply = false; errMsg:
onReload(); '${errMsg.startsWith('gRPC Error') ? '如无法加载评论:\n关闭代理\n或设置中关闭使用gRPC加载评论\n\n' : ''}$errMsg',
}, callback: onReload,
style: ButtonStyle( extraWidget: errMsg.startsWith('gRPC Error') && GlobalData().grpcReply
backgroundColor: WidgetStateProperty.resolveWith((states) { ? FilledButton.tonal(
return Theme.of(context).colorScheme.primary.withAlpha(20); onPressed: () {
}), GlobalData().grpcReply = false;
), onReload();
child: Text( },
'暂时关闭gRPC加载评论', style: ButtonStyle(
style: TextStyle(color: Theme.of(context).colorScheme.primary), backgroundColor: WidgetStateProperty.resolveWith((states) {
), return Theme.of(context).colorScheme.primary.withAlpha(20);
}),
),
child: Text(
'暂时关闭gRPC加载评论',
style: TextStyle(color: Theme.of(context).colorScheme.primary),
),
)
: null,
); );

View File

@@ -129,8 +129,7 @@ class ReplyHttp {
} }
return LoadingState.success(mainListReply); return LoadingState.success(mainListReply);
} else { } else {
return LoadingState.error( return LoadingState.error(res['msg']);
'${res['msg'].startsWith('gRPC Error') ? '如无法加载评论:\n关闭代理\n或设置中关闭使用gRPC加载评论\n\n' : ''}${res['msg']}');
} }
} }

View File

@@ -554,13 +554,11 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
: HttpError( : HttpError(
callback: _dynamicDetailController.onReload, callback: _dynamicDetailController.onReload,
), ),
Error() => HttpError( Error() => replyErrorWidget(
errMsg: loadingState.errMsg, context,
callback: _dynamicDetailController.onReload, true,
extraWidget: loadingState.errMsg.startsWith('gRPC Error') && loadingState.errMsg,
GlobalData().grpcReply _dynamicDetailController.onReload,
? grpcReplyErrorWidget(context, _dynamicDetailController.onReload)
: null,
), ),
LoadingState() => throw UnimplementedError(), LoadingState() => throw UnimplementedError(),
}; };

View File

@@ -486,13 +486,11 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
: HttpError( : HttpError(
callback: _htmlRenderCtr.onReload, callback: _htmlRenderCtr.onReload,
), ),
Error() => HttpError( Error() => replyErrorWidget(
errMsg: loadingState.errMsg, context,
callback: _htmlRenderCtr.onReload, true,
extraWidget: loadingState.errMsg.startsWith('gRPC Error') && loadingState.errMsg,
GlobalData().grpcReply _htmlRenderCtr.onReload,
? grpcReplyErrorWidget(context, _htmlRenderCtr.onReload)
: null,
), ),
LoadingState() => throw UnimplementedError(), LoadingState() => throw UnimplementedError(),
}; };

View File

@@ -297,13 +297,11 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
errMsg: '还没有评论', errMsg: '还没有评论',
callback: _videoReplyController.onReload, callback: _videoReplyController.onReload,
), ),
Error() => HttpError( Error() => replyErrorWidget(
errMsg: loadingState.errMsg, context,
callback: _videoReplyController.onReload, true,
extraWidget: loadingState.errMsg.startsWith('gRPC Error') && loadingState.errMsg,
GlobalData().grpcReply _videoReplyController.onReload,
? grpcReplyErrorWidget(context, _videoReplyController.onReload)
: null,
), ),
LoadingState() => throw UnimplementedError(), LoadingState() => throw UnimplementedError(),
}; };

View File

@@ -13,7 +13,6 @@ import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:PiliPlus/common/skeleton/video_reply.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:PiliPlus/models/common/reply_type.dart';
import 'package:get/get_navigation/src/dialog/dialog_route.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
@@ -412,22 +411,11 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
: _replyItem(loadingState.response[index], index); : _replyItem(loadingState.response[index], index);
} }
}(), }(),
Error() => CustomScrollView( Error() => replyErrorWidget(
shrinkWrap: true, context,
physics: const NeverScrollableScrollPhysics(), false,
slivers: [ loadingState.errMsg,
HttpError( _videoReplyReplyController.onReload,
errMsg: loadingState.errMsg,
callback: _videoReplyReplyController.onReload,
extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
GlobalData().grpcReply
? grpcReplyErrorWidget(
context,
_videoReplyReplyController.onReload,
)
: null,
)
],
), ),
LoadingState() => throw UnimplementedError(), LoadingState() => throw UnimplementedError(),
}; };