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,
this.btnText,
this.isShowBtn = true,
this.isInSliver = true,
super.key,
});
@ -14,46 +15,42 @@ class HttpError extends StatelessWidget {
final Function()? fn;
final String? btnText;
final bool isShowBtn;
final bool isInSliver;
@override
Widget build(BuildContext context) {
return SliverToBoxAdapter(
child: SizedBox(
height: 400,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
"assets/images/error.svg",
height: 200,
),
const SizedBox(height: 30),
Text(
errMsg ?? '请求异常',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleSmall,
),
const SizedBox(height: 20),
if (isShowBtn)
FilledButton.tonal(
onPressed: () {
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),
),
Color primary = Theme.of(context).colorScheme.primary;
final errorContent = SizedBox(
height: 400,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset("assets/images/error.svg", height: 200),
const SizedBox(height: 30),
Text(
errMsg ?? '请求异常',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleSmall,
),
const SizedBox(height: 20),
if (isShowBtn)
FilledButton.tonal(
onPressed: () => fn?.call(),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return primary.withAlpha(20);
}),
),
],
),
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(
errMsg: data['msg'],
fn: () {
_futureBuilderFuture =
_bangumidController.queryBangumiListFeed();
setState(() {
_futureBuilderFuture =
_bangumidController.queryBangumiListFeed();
});
},
);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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