From 1a5639006b37781285a5d622378562ed7ec819be Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Fri, 8 Nov 2024 10:15:39 +0800 Subject: [PATCH] opt: RefreshIndicator Signed-off-by: bggRGjQaUbCoE --- lib/common/widgets/refresh_indicator.dart | 12 ++++++++++++ lib/pages/bangumi/view.dart | 3 ++- lib/pages/blacklist/index.dart | 3 ++- lib/pages/dynamics/detail/view.dart | 3 ++- lib/pages/dynamics/tab/view.dart | 3 ++- lib/pages/fan/view.dart | 3 ++- lib/pages/follow/widgets/follow_list.dart | 3 ++- lib/pages/follow/widgets/owner_follow_list.dart | 3 ++- lib/pages/history/view.dart | 3 ++- lib/pages/hot/view.dart | 3 ++- .../content/article/member_article.dart | 3 ++- .../content/bangumi/member_bangumi.dart | 3 ++- .../content/favorite/member_favorite.dart | 3 ++- .../content/video/member_video.dart | 3 ++- .../new/content/member_dynamic/member_dynamic.dart | 3 ++- lib/pages/msg_feed_top/at_me/view.dart | 3 ++- lib/pages/msg_feed_top/like_me/view.dart | 3 ++- lib/pages/msg_feed_top/reply_me/view.dart | 3 ++- lib/pages/msg_feed_top/sys_msg/view.dart | 3 ++- lib/pages/rank/zone/view.dart | 3 ++- lib/pages/rcmd/view.dart | 3 ++- lib/pages/search_panel/view.dart | 3 ++- lib/pages/video/detail/reply/view.dart | 3 ++- lib/pages/video/detail/reply_reply/view.dart | 3 ++- lib/pages/whisper/view.dart | 3 ++- lib/pages/whisper_detail/view.dart | 3 ++- 26 files changed, 62 insertions(+), 25 deletions(-) create mode 100644 lib/common/widgets/refresh_indicator.dart diff --git a/lib/common/widgets/refresh_indicator.dart b/lib/common/widgets/refresh_indicator.dart new file mode 100644 index 00000000..5e59279b --- /dev/null +++ b/lib/common/widgets/refresh_indicator.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +Widget refreshIndicator({ + required RefreshCallback onRefresh, + required Widget child, +}) { + return RefreshIndicator( + displacement: 20, + onRefresh: onRefresh, + child: child, + ); +} diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index e44a1ab1..480b7e95 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -68,7 +69,7 @@ class _BangumiPageState extends State @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async { await _bangumiController.onRefresh(); await _bangumiController.queryBangumiFollow(); diff --git a/lib/pages/blacklist/index.dart b/lib/pages/blacklist/index.dart index 34ec7085..8508a5f8 100644 --- a/lib/pages/blacklist/index.dart +++ b/lib/pages/blacklist/index.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:flutter/material.dart'; @@ -61,7 +62,7 @@ class _BlackListPageState extends State { ), ), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async => await _blackListController.onRefresh(), child: Obx(() => _buildBody(_blackListController.loadingState.value)), ), diff --git a/lib/pages/dynamics/detail/view.dart b/lib/pages/dynamics/detail/view.dart index b7e5698b..079caa87 100644 --- a/lib/pages/dynamics/detail/view.dart +++ b/lib/pages/dynamics/detail/view.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:math'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:easy_debounce/easy_throttle.dart'; @@ -213,7 +214,7 @@ class _DynamicDetailPageState extends State ), // actions: _detailModel != null ? appBarAction() : [], ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _dynamicDetailController.onRefresh(); }, diff --git a/lib/pages/dynamics/tab/view.dart b/lib/pages/dynamics/tab/view.dart index e3ca952d..e1929b24 100644 --- a/lib/pages/dynamics/tab/view.dart +++ b/lib/pages/dynamics/tab/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/home/controller.dart'; import 'package:PiliPalaX/pages/main/controller.dart'; @@ -89,7 +90,7 @@ class _DynamicsTabPageState extends State Widget build(BuildContext context) { super.build(context); // print(widget.dynamicsType + widget.mid.value.toString()); - return RefreshIndicator( + return refreshIndicator( // key: // ValueKey(widget.dynamicsType + widget.mid.value.toString()), onRefresh: () async { diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index 1c32a071..3a093201 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -57,7 +58,7 @@ class _FansPageState extends State { style: Theme.of(context).textTheme.titleMedium, ), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async => await _fansController.onRefresh(), child: CustomScrollView( physics: const AlwaysScrollableScrollPhysics(), diff --git a/lib/pages/follow/widgets/follow_list.dart b/lib/pages/follow/widgets/follow_list.dart index 5854d6d9..ff617792 100644 --- a/lib/pages/follow/widgets/follow_list.dart +++ b/lib/pages/follow/widgets/follow_list.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -48,7 +49,7 @@ class _FollowListState extends State { @override Widget build(BuildContext context) { - return RefreshIndicator( + return refreshIndicator( onRefresh: () async => await widget.ctr.queryFollowings('init'), child: FutureBuilder( future: _futureBuilderFuture, diff --git a/lib/pages/follow/widgets/owner_follow_list.dart b/lib/pages/follow/widgets/owner_follow_list.dart index ecbb22fc..464a81e1 100644 --- a/lib/pages/follow/widgets/owner_follow_list.dart +++ b/lib/pages/follow/widgets/owner_follow_list.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -78,7 +79,7 @@ class _OwnerFollowListState extends State @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async => await followUpGroup('init'), child: FutureBuilder( future: _futureBuilderFuture, diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index e2507256..b85d89fe 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/pages/fav_search/view.dart' show SearchType; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -176,7 +177,7 @@ class _HistoryPageState extends State { ], ), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _historyController.onRefresh(); return; diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 798af710..01ce2819 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/video_card_h_grpc.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:flutter/material.dart'; @@ -65,7 +66,7 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async { return await _hotController.onRefresh(); }, diff --git a/lib/pages/member/new/content/member_contribute/content/article/member_article.dart b/lib/pages/member/new/content/member_contribute/content/article/member_article.dart index 8465cdb7..ce86b11e 100644 --- a/lib/pages/member/new/content/member_contribute/content/article/member_article.dart +++ b/lib/pages/member/new/content/member_contribute/content/article/member_article.dart @@ -1,4 +1,5 @@ import 'package:PiliPalaX/common/constants.dart'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/http/loading_state.dart'; @@ -43,7 +44,7 @@ class _MemberArticleState extends State ? MediaQuery.removePadding( context: context, removeTop: true, - child: RefreshIndicator( + child: refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart b/lib/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart index ababaa95..0490be6d 100644 --- a/lib/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart +++ b/lib/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart @@ -1,4 +1,5 @@ import 'package:PiliPalaX/common/constants.dart'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/bangumi/widgets/bangumi_card_v_member_home.dart'; @@ -42,7 +43,7 @@ class _MemberBangumiState extends State _buildBody(LoadingState loadingState) { return loadingState is Success - ? RefreshIndicator( + ? refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart b/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart index 120032f0..c208c7cd 100644 --- a/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart +++ b/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart @@ -1,5 +1,6 @@ import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/widgets/badge.dart'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/http/loading_state.dart'; @@ -44,7 +45,7 @@ class _MemberFavoriteState extends State _buildBody(LoadingState loadingState) { return loadingState is Success - ? RefreshIndicator( + ? refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/member/new/content/member_contribute/content/video/member_video.dart b/lib/pages/member/new/content/member_contribute/content/video/member_video.dart index 86c330a7..f59cc9da 100644 --- a/lib/pages/member/new/content/member_contribute/content/video/member_video.dart +++ b/lib/pages/member/new/content/member_contribute/content/video/member_video.dart @@ -1,4 +1,5 @@ import 'package:PiliPalaX/common/constants.dart'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/video_card_h_member_video.dart'; import 'package:PiliPalaX/http/loading_state.dart'; @@ -54,7 +55,7 @@ class _MemberVideoState extends State _buildBody(LoadingState loadingState) { return loadingState is Success && loadingState.response is List - ? RefreshIndicator( + ? refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/member/new/content/member_dynamic/member_dynamic.dart b/lib/pages/member/new/content/member_dynamic/member_dynamic.dart index 71c5ea57..78882a9b 100644 --- a/lib/pages/member/new/content/member_dynamic/member_dynamic.dart +++ b/lib/pages/member/new/content/member_dynamic/member_dynamic.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/dynamics/widgets/dynamic_panel_grpc.dart'; @@ -39,7 +40,7 @@ class _MemberDynamicState extends State _buildBody(LoadingState loadingState) { return loadingState is Success - ? RefreshIndicator( + ? refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index d7155f1a..3b91722a 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -47,7 +48,7 @@ class _AtMePageState extends State { appBar: AppBar( title: const Text('@我的'), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _atMeController.onRefresh(); }, diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index 6b9dfa9a..8b98bb38 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -48,7 +49,7 @@ class _LikeMePageState extends State { appBar: AppBar( title: const Text('收到的赞'), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _likeMeController.onRefresh(); }, diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 295dfdf9..9eeba3ac 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -48,7 +49,7 @@ class _ReplyMePageState extends State { appBar: AppBar( title: const Text('回复我的'), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _replyMeController.onRefresh(); }, diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 481df55b..b095cd70 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/utils/app_scheme.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; @@ -51,7 +52,7 @@ class _SysMsgPageState extends State { appBar: AppBar( title: const Text('系统通知'), ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _sysMsgController.onRefresh(); }, diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index fda55eb8..d7d5485e 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -64,7 +65,7 @@ class _ZonePageState extends State @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async { return await _zoneController.onRefresh(); }, diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 32f9fe50..8fb63847 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/models/common/tab_type.dart'; import 'package:PiliPalaX/pages/common/popup_controller.dart'; @@ -83,7 +84,7 @@ class _RcmdPageState extends State decoration: const BoxDecoration( borderRadius: BorderRadius.all(StyleString.imgRadius), ), - child: RefreshIndicator( + child: refreshIndicator( onRefresh: () async { await _controller.onRefresh(); }, diff --git a/lib/pages/search_panel/view.dart b/lib/pages/search_panel/view.dart index c4d71927..fdf28207 100644 --- a/lib/pages/search_panel/view.dart +++ b/lib/pages/search_panel/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -65,7 +66,7 @@ class _SearchPanelState extends State @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async { await _searchPanelController.onRefresh(); }, diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index 58fbfd45..09125a53 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; @@ -119,7 +120,7 @@ class _VideoReplyPanelState extends State @override Widget build(BuildContext context) { super.build(context); - return RefreshIndicator( + return refreshIndicator( onRefresh: () async { await _videoReplyController.onRefresh(); }, diff --git a/lib/pages/video/detail/reply_reply/view.dart b/lib/pages/video/detail/reply_reply/view.dart index d4ae4d4b..283c50f8 100644 --- a/lib/pages/video/detail/reply_reply/view.dart +++ b/lib/pages/video/detail/reply_reply/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/grpc/app/main/community/reply/v1/reply.pb.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; @@ -127,7 +128,7 @@ class _VideoReplyReplyPanelState extends State { color: Theme.of(context).dividerColor.withOpacity(0.1), ), Expanded( - child: RefreshIndicator( + child: refreshIndicator( onRefresh: () async { await _videoReplyReplyController.onRefresh(); }, diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index 40a0085e..fae6a24f 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -67,7 +68,7 @@ class _WhisperPageState extends State { const SizedBox(width: 12) ], ), - body: RefreshIndicator( + body: refreshIndicator( onRefresh: () async { await _whisperController.queryMsgFeedUnread(); await _whisperController.onRefresh(); diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index a7412c77..8a2f9fa3 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; import 'dart:math'; +import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/pages/emote/view.dart'; import 'package:PiliPalaX/pages/video/detail/reply_new/reply_page.dart'; @@ -153,7 +154,7 @@ class _WhisperDetailPageState extends State { child: CircularProgressIndicator(), ); } - return RefreshIndicator( + return refreshIndicator( onRefresh: _whisperDetailController.querySessionMsg, child: ListView.builder( shrinkWrap: true,