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

View File

@@ -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']);
}
}

View File

@@ -554,13 +554,11 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
: 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(),
};

View File

@@ -486,13 +486,11 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
: 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(),
};

View File

@@ -297,13 +297,11 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
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(),
};

View File

@@ -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<VideoReplyReplyPanel> {
: _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(),
};