opt: HttpError

This commit is contained in:
guozhigq
2024-10-16 22:59:34 +08:00
parent dc8f034df7
commit 0ec14fe1fa
19 changed files with 175 additions and 228 deletions

View File

@ -7,6 +7,7 @@ class HttpError extends StatelessWidget {
required this.fn, required this.fn,
this.btnText, this.btnText,
this.isShowBtn = true, this.isShowBtn = true,
this.isInSliver = true,
super.key, super.key,
}); });
@ -14,20 +15,18 @@ class HttpError extends StatelessWidget {
final Function()? fn; final Function()? fn;
final String? btnText; final String? btnText;
final bool isShowBtn; final bool isShowBtn;
final bool isInSliver;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SliverToBoxAdapter( Color primary = Theme.of(context).colorScheme.primary;
child: SizedBox( final errorContent = SizedBox(
height: 400, height: 400,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
SvgPicture.asset( SvgPicture.asset("assets/images/error.svg", height: 200),
"assets/images/error.svg",
height: 200,
),
const SizedBox(height: 30), const SizedBox(height: 30),
Text( Text(
errMsg ?? '请求异常', errMsg ?? '请求异常',
@ -37,23 +36,21 @@ class HttpError extends StatelessWidget {
const SizedBox(height: 20), const SizedBox(height: 20),
if (isShowBtn) if (isShowBtn)
FilledButton.tonal( FilledButton.tonal(
onPressed: () { onPressed: () => fn?.call(),
fn!();
},
style: ButtonStyle( style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) { backgroundColor: MaterialStateProperty.resolveWith((states) {
return Theme.of(context).colorScheme.primary.withAlpha(20); return primary.withAlpha(20);
}), }),
), ),
child: Text( child: Text(btnText ?? '点击重试', style: TextStyle(color: primary)),
btnText ?? '点击重试',
style:
TextStyle(color: Theme.of(context).colorScheme.primary),
),
), ),
], ],
), ),
),
); );
if (isInSliver) {
return SliverToBoxAdapter(child: errorContent);
} else {
return Center(child: errorContent);
}
} }
} }

View File

@ -183,8 +183,10 @@ class _BangumiPageState extends State<BangumiPage>
return HttpError( return HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () { fn: () {
setState(() {
_futureBuilderFuture = _futureBuilderFuture =
_bangumidController.queryBangumiListFeed(); _bangumidController.queryBangumiListFeed();
});
}, },
); );
} }

View File

@ -77,10 +77,10 @@ class _BlackListPageState extends State<BlackListPage> {
List<BlackListItem> list = _blackListController.blackList; List<BlackListItem> list = _blackListController.blackList;
return Obx( return Obx(
() => list.isEmpty () => list.isEmpty
? CustomScrollView( ? HttpError(
slivers: [ errMsg: '你没有拉黑任何人哦_',
HttpError(errMsg: '你没有拉黑任何人哦_', fn: () => {}) fn: () => {},
], isInSliver: false,
) )
: ListView.builder( : ListView.builder(
controller: scrollController, controller: scrollController,
@ -119,13 +119,10 @@ class _BlackListPageState extends State<BlackListPage> {
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => _blackListController.queryBlacklist(), fn: () => _blackListController.queryBlacklist(),
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -103,17 +103,14 @@ class _FansPageState extends State<FansPage> {
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () { fn: () {
_futureBuilderFuture = setState(() {
_fansController.queryFans('init'); _futureBuilderFuture = _fansController.queryFans('init');
});
}, },
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -112,10 +112,7 @@ class _FavPageState extends State<FavPage> {
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: data?['msg'] ?? '请求异常', errMsg: data?['msg'] ?? '请求异常',
btnText: data?['code'] == -101 ? '去登录' : null, btnText: data?['code'] == -101 ? '去登录' : null,
fn: () { fn: () {
@ -127,8 +124,7 @@ class _FavPageState extends State<FavPage> {
}); });
} }
}, },
), isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -94,13 +94,14 @@ class _FollowListState extends State<FollowList> {
: const CustomScrollView(slivers: [NoData()]), : const CustomScrollView(slivers: [NoData()]),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => widget.ctr.queryFollowings('init'), fn: () {
) setState(() {
], _futureBuilderFuture = widget.ctr.queryFollowings('init');
});
},
isInSliver: false,
); );
} }
} else { } else {

View File

@ -112,13 +112,10 @@ class _OwnerFollowListState extends State<OwnerFollowList>
: const CustomScrollView(slivers: [NoData()]), : const CustomScrollView(slivers: [NoData()]),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => widget.ctr.queryFollowings('init'), fn: () => widget.ctr.queryFollowings('init'),
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -82,10 +82,10 @@ class _FollowSearchPageState extends State<FollowSearchPage> {
if (snapshot.connectionState == ConnectionState.done) { if (snapshot.connectionState == ConnectionState.done) {
var data = snapshot.data; var data = snapshot.data;
if (data == null) { if (data == null) {
return CustomScrollView( return HttpError(
slivers: [ errMsg: snapshot.data['msg'],
HttpError(errMsg: snapshot.data['msg'], fn: reRequest) fn: reRequest,
], isInSliver: false,
); );
} }
if (data['status']) { if (data['status']) {
@ -101,15 +101,17 @@ class _FollowSearchPageState extends State<FollowSearchPage> {
); );
}), }),
) )
: CustomScrollView( : HttpError(
slivers: [HttpError(errMsg: '未搜索到结果', fn: reRequest)], errMsg: '未搜索到结果',
fn: reRequest,
isInSliver: false,
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: [ errMsg: snapshot.data['msg'],
HttpError(errMsg: snapshot.data['msg'], fn: reRequest) fn: reRequest,
], isInSliver: false,
); );
} }
} else { } else {

View File

@ -380,13 +380,10 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
); );
} else { } else {
// 请求错误 // 请求错误
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => setState(() {}), fn: () => setState(() {}),
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -138,16 +138,10 @@ class _MemberArticlePageState extends State<MemberArticlePage> {
} }
Widget _buildError(String errMsg) { Widget _buildError(String errMsg) {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
SliverToBoxAdapter(
child: HttpError(
errMsg: errMsg, errMsg: errMsg,
fn: () {}, fn: () {},
), isInSliver: false,
),
],
); );
} }

View File

@ -164,13 +164,10 @@ class _MemberSearchPageState extends State<MemberSearchPage>
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: <Widget>[
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => setState(() {}), fn: () => setState(() {}),
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -85,18 +85,14 @@ class _MessageLikePageState extends State<MessageLikePage> {
); );
} else { } else {
// 请求错误 // 请求错误
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: snapshot.data['msg'], errMsg: snapshot.data['msg'],
fn: () { fn: () {
setState(() { setState(() {
_futureBuilderFuture = _futureBuilderFuture = _messageLikeCtr.queryMessageLike();
_messageLikeCtr.queryMessageLike();
}); });
}, },
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -82,9 +82,7 @@ class _MessageReplyPageState extends State<MessageReplyPage> {
); );
} else { } else {
// 请求错误 // 请求错误
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: snapshot.data['msg'], errMsg: snapshot.data['msg'],
fn: () { fn: () {
setState(() { setState(() {
@ -92,8 +90,7 @@ class _MessageReplyPageState extends State<MessageReplyPage> {
_messageReplyCtr.queryMessageReply(); _messageReplyCtr.queryMessageReply();
}); });
}, },
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -63,9 +63,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
); );
} else { } else {
// 请求错误 // 请求错误
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: snapshot.data['msg'], errMsg: snapshot.data['msg'],
fn: () { fn: () {
setState(() { setState(() {
@ -73,8 +71,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
_messageSystemCtr.queryMessageSystem(); _messageSystemCtr.queryMessageSystem();
}); });
}, },
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -187,13 +187,10 @@ class _SearchPageState extends State<SearchPage> with RouteAware {
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () => setState(() {}), fn: () => setState(() {}),
) isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -109,33 +109,25 @@ class _SearchPanelState extends State<SearchPanel>
} }
}); });
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: data['msg'], errMsg: data['msg'],
fn: () { fn: () {
setState(() { setState(() {
_searchPanelController.onSearch(); _searchPanelController.onSearch();
}); });
}, },
), isInSliver: false,
],
); );
} }
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: '没有相关数据', errMsg: '没有相关数据',
fn: () { fn: () {
setState(() { setState(() {
_searchPanelController.onSearch(); _searchPanelController.onSearch();
}); });
}, },
), isInSliver: false,
],
); );
} }
} else { } else {

View File

@ -174,14 +174,11 @@ Widget searchArticlePanel(BuildContext context, ctr, list) {
); );
}, },
) )
: CustomScrollView( : HttpError(
slivers: [
HttpError(
errMsg: '没有数据', errMsg: '没有数据',
isShowBtn: false, isShowBtn: false,
fn: () => {}, fn: () => {},
) isInSliver: false,
],
), ),
); );
} }

View File

@ -46,14 +46,11 @@ class SearchVideoPanel extends StatelessWidget {
); );
}, },
) )
: CustomScrollView( : HttpError(
slivers: [
HttpError(
errMsg: '没有数据', errMsg: '没有数据',
isShowBtn: false, isShowBtn: false,
fn: () => {}, fn: () => {},
) isInSliver: false,
],
), ),
), ),
// 分类筛选 // 分类筛选

View File

@ -68,16 +68,15 @@ class _SubPageState extends State<SubPage> {
), ),
); );
} else { } else {
return const CustomScrollView( return const HttpError(
physics: NeverScrollableScrollPhysics(), errMsg: '',
slivers: [HttpError(errMsg: '', btnText: '没有数据', fn: null)], btnText: '没有数据',
fn: null,
isInSliver: false,
); );
} }
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(),
slivers: [
HttpError(
errMsg: data?['msg'] ?? '请求异常', errMsg: data?['msg'] ?? '请求异常',
btnText: data?['code'] == -101 ? '去登录' : null, btnText: data?['code'] == -101 ? '去登录' : null,
fn: () { fn: () {
@ -85,13 +84,11 @@ class _SubPageState extends State<SubPage> {
RoutePush.loginRedirectPush(); RoutePush.loginRedirectPush();
} else { } else {
setState(() { setState(() {
_futureBuilderFuture = _futureBuilderFuture = _subController.querySubFolder();
_subController.querySubFolder();
}); });
} }
}, },
), isInSliver: false,
],
); );
} }
} else { } else {