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/common/widgets/http_error.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
Widget get loadingWidget => Center(child: CircularProgressIndicator()); 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/custom_sliver_persistent_header_delegate.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.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/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.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.dart';
@@ -556,26 +557,9 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
Error() => HttpError( Error() => HttpError(
errMsg: loadingState.errMsg, errMsg: loadingState.errMsg,
callback: _dynamicDetailController.onReload, callback: _dynamicDetailController.onReload,
extraWidget: GlobalData().grpcReply extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
? FilledButton.tonal( GlobalData().grpcReply
onPressed: () { ? grpcReplyErrorWidget(context, _dynamicDetailController.onReload)
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),
),
)
: null, : null,
), ),
LoadingState() => throw UnimplementedError(), 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/article_content.dart';
import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.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/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.dart';
import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/pages/video/detail/reply/widgets/reply_item_grpc.dart';
@@ -488,26 +489,9 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
Error() => HttpError( Error() => HttpError(
errMsg: loadingState.errMsg, errMsg: loadingState.errMsg,
callback: _htmlRenderCtr.onReload, callback: _htmlRenderCtr.onReload,
extraWidget: GlobalData().grpcReply extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
? FilledButton.tonal( GlobalData().grpcReply
onPressed: () { ? grpcReplyErrorWidget(context, _htmlRenderCtr.onReload)
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),
),
)
: null, : null,
), ),
LoadingState() => throw UnimplementedError(), 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/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/refresh_indicator.dart';
import 'package:PiliPlus/common/widgets/http_error.dart'; import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/loading_state.dart';
@@ -299,26 +300,9 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
Error() => HttpError( Error() => HttpError(
errMsg: loadingState.errMsg, errMsg: loadingState.errMsg,
callback: _videoReplyController.onReload, callback: _videoReplyController.onReload,
extraWidget: GlobalData().grpcReply extraWidget: loadingState.errMsg.startsWith('gRPC Error') &&
? FilledButton.tonal( GlobalData().grpcReply
onPressed: () { ? grpcReplyErrorWidget(context, _videoReplyController.onReload)
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),
),
)
: null, : null,
), ),
LoadingState() => throw UnimplementedError(), LoadingState() => throw UnimplementedError(),

View File

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

View File

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