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,46 +15,42 @@ 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", const SizedBox(height: 30),
height: 200, Text(
), errMsg ?? '请求异常',
const SizedBox(height: 30), textAlign: TextAlign.center,
Text( style: Theme.of(context).textTheme.titleSmall,
errMsg ?? '请求异常', ),
textAlign: TextAlign.center, const SizedBox(height: 20),
style: Theme.of(context).textTheme.titleSmall, if (isShowBtn)
), FilledButton.tonal(
const SizedBox(height: 20), onPressed: () => fn?.call(),
if (isShowBtn) style: ButtonStyle(
FilledButton.tonal( backgroundColor: MaterialStateProperty.resolveWith((states) {
onPressed: () { return primary.withAlpha(20);
fn!(); }),
},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return Theme.of(context).colorScheme.primary.withAlpha(20);
}),
),
child: Text(
btnText ?? '点击重试',
style:
TextStyle(color: Theme.of(context).colorScheme.primary),
),
), ),
], child: Text(btnText ?? '点击重试', style: TextStyle(color: 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: () {
_futureBuilderFuture = setState(() {
_bangumidController.queryBangumiListFeed(); _futureBuilderFuture =
_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: [ errMsg: data['msg'],
HttpError( fn: () => _blackListController.queryBlacklist(),
errMsg: data['msg'], isInSliver: false,
fn: () => _blackListController.queryBlacklist(),
)
],
); );
} }
} else { } else {

View File

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

View File

@ -112,23 +112,19 @@ class _FavPageState extends State<FavPage> {
), ),
); );
} else { } else {
return CustomScrollView( return HttpError(
physics: const NeverScrollableScrollPhysics(), errMsg: data?['msg'] ?? '请求异常',
slivers: [ btnText: data?['code'] == -101 ? '去登录' : null,
HttpError( fn: () {
errMsg: data?['msg'] ?? '请求异常', if (data?['code'] == -101) {
btnText: data?['code'] == -101 ? '去登录' : null, RoutePush.loginRedirectPush();
fn: () { } else {
if (data?['code'] == -101) { setState(() {
RoutePush.loginRedirectPush(); _futureBuilderFuture = _favController.queryFavFolder();
} else { });
setState(() { }
_futureBuilderFuture = _favController.queryFavFolder(); },
}); 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: [ errMsg: data['msg'],
HttpError( fn: () {
errMsg: data['msg'], setState(() {
fn: () => widget.ctr.queryFollowings('init'), _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: [ errMsg: data['msg'],
HttpError( fn: () => widget.ctr.queryFollowings('init'),
errMsg: data['msg'], isInSliver: false,
fn: () => widget.ctr.queryFollowings('init'),
)
],
); );
} }
} 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: [ errMsg: data['msg'],
HttpError( fn: () => setState(() {}),
errMsg: data['msg'], isInSliver: false,
fn: () => setState(() {}),
)
],
); );
} }
} 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(), errMsg: errMsg,
slivers: [ fn: () {},
SliverToBoxAdapter( isInSliver: false,
child: HttpError(
errMsg: errMsg,
fn: () {},
),
),
],
); );
} }

View File

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

View File

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

View File

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

View File

@ -63,18 +63,15 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
); );
} else { } else {
// 请求错误 // 请求错误
return CustomScrollView( return HttpError(
slivers: [ errMsg: snapshot.data['msg'],
HttpError( fn: () {
errMsg: snapshot.data['msg'], setState(() {
fn: () { _futureBuilderFuture =
setState(() { _messageSystemCtr.queryMessageSystem();
_futureBuilderFuture = });
_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: [ errMsg: data['msg'],
HttpError( fn: () => setState(() {}),
errMsg: data['msg'], isInSliver: false,
fn: () => setState(() {}),
)
],
); );
} }
} else { } else {

View File

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

View File

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

View File

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

View File

@ -68,30 +68,27 @@ 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(), errMsg: data?['msg'] ?? '请求异常',
slivers: [ btnText: data?['code'] == -101 ? '去登录' : null,
HttpError( fn: () {
errMsg: data?['msg'] ?? '请求异常', if (data?['code'] == -101) {
btnText: data?['code'] == -101 ? '去登录' : null, RoutePush.loginRedirectPush();
fn: () { } else {
if (data?['code'] == -101) { setState(() {
RoutePush.loginRedirectPush(); _futureBuilderFuture = _subController.querySubFolder();
} else { });
setState(() { }
_futureBuilderFuture = },
_subController.querySubFolder(); isInSliver: false,
});
}
},
),
],
); );
} }
} else { } else {