opt: reply error widget

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-11 18:38:19 +08:00
parent ba192a0356
commit 9b8b9bd1ab
6 changed files with 36 additions and 81 deletions

View File

@@ -1,4 +1,5 @@
import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:flutter/material.dart';
Widget get loadingWidget => Center(child: CircularProgressIndicator());
@@ -17,3 +18,19 @@ 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),
),
);

View File

@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart';
import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item.dart';
@@ -556,26 +557,9 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
Error() => HttpError(
errMsg: loadingState.errMsg,
callback: _dynamicDetailController.onReload,
extraWidget: GlobalData().grpcReply
? FilledButton.tonal(
onPressed: () {
GlobalData().grpcReply = false;
_dynamicDetailController.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),
),
)
extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
GlobalData().grpcReply
? grpcReplyErrorWidget(context, _dynamicDetailController.onReload)
: null,
),
LoadingState() => throw UnimplementedError(),

View File

@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:PiliPlus/common/widgets/article_content.dart';
import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart';
import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item.dart';
import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart';
@@ -488,26 +489,9 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
Error() => HttpError(
errMsg: loadingState.errMsg,
callback: _htmlRenderCtr.onReload,
extraWidget: GlobalData().grpcReply
? FilledButton.tonal(
onPressed: () {
GlobalData().grpcReply = false;
_htmlRenderCtr.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),
),
)
extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
GlobalData().grpcReply
? grpcReplyErrorWidget(context, _htmlRenderCtr.onReload)
: null,
),
LoadingState() => throw UnimplementedError(),

View File

@@ -1,4 +1,5 @@
import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart';
import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/http/loading_state.dart';
@@ -299,26 +300,9 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
Error() => HttpError(
errMsg: loadingState.errMsg,
callback: _videoReplyController.onReload,
extraWidget: GlobalData().grpcReply
? FilledButton.tonal(
onPressed: () {
GlobalData().grpcReply = false;
_videoReplyController.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),
),
)
extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
GlobalData().grpcReply
? grpcReplyErrorWidget(context, _videoReplyController.onReload)
: null,
),
LoadingState() => throw UnimplementedError(),

View File

@@ -1,4 +1,5 @@
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart';
import 'package:PiliPlus/common/widgets/loading_widget.dart';
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/grpc/app/main/community/reply/v1/reply.pb.dart';
import 'package:PiliPlus/http/loading_state.dart';
@@ -418,26 +419,11 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
HttpError(
errMsg: loadingState.errMsg,
callback: _videoReplyReplyController.onReload,
extraWidget: GlobalData().grpcReply
? FilledButton.tonal(
onPressed: () {
GlobalData().grpcReply = false;
_videoReplyReplyController.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),
),
extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
GlobalData().grpcReply
? grpcReplyErrorWidget(
context,
_videoReplyReplyController.onReload,
)
: null,
)

View File

@@ -491,7 +491,7 @@ class Utils {
}
}
if (data.episodes?.isEmpty == true) {
if (data.episodes.isNullOrEmpty) {
SmartDialog.showToast('资源加载失败');
return;
}