opt: RefreshIndicator

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-08 10:15:39 +08:00
parent 04a0e39980
commit 1a5639006b
26 changed files with 62 additions and 25 deletions

View File

@@ -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,
);
}

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -68,7 +69,7 @@ class _BangumiPageState extends State<BangumiPage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _bangumiController.onRefresh(); await _bangumiController.onRefresh();
await _bangumiController.queryBangumiFollow(); await _bangumiController.queryBangumiFollow();

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -61,7 +62,7 @@ class _BlackListPageState extends State<BlackListPage> {
), ),
), ),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async => await _blackListController.onRefresh(), onRefresh: () async => await _blackListController.onRefresh(),
child: Obx(() => _buildBody(_blackListController.loadingState.value)), child: Obx(() => _buildBody(_blackListController.loadingState.value)),
), ),

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
@@ -213,7 +214,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
), ),
// actions: _detailModel != null ? appBarAction() : [], // actions: _detailModel != null ? appBarAction() : [],
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _dynamicDetailController.onRefresh(); await _dynamicDetailController.onRefresh();
}, },

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/home/controller.dart'; import 'package:PiliPalaX/pages/home/controller.dart';
import 'package:PiliPalaX/pages/main/controller.dart'; import 'package:PiliPalaX/pages/main/controller.dart';
@@ -89,7 +90,7 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
// print(widget.dynamicsType + widget.mid.value.toString()); // print(widget.dynamicsType + widget.mid.value.toString());
return RefreshIndicator( return refreshIndicator(
// key: // key:
// ValueKey<String>(widget.dynamicsType + widget.mid.value.toString()), // ValueKey<String>(widget.dynamicsType + widget.mid.value.toString()),
onRefresh: () async { onRefresh: () async {

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -57,7 +58,7 @@ class _FansPageState extends State<FansPage> {
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async => await _fansController.onRefresh(), onRefresh: () async => await _fansController.onRefresh(),
child: CustomScrollView( child: CustomScrollView(
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -48,7 +49,7 @@ class _FollowListState extends State<FollowList> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return refreshIndicator(
onRefresh: () async => await widget.ctr.queryFollowings('init'), onRefresh: () async => await widget.ctr.queryFollowings('init'),
child: FutureBuilder( child: FutureBuilder(
future: _futureBuilderFuture, future: _futureBuilderFuture,

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -78,7 +79,7 @@ class _OwnerFollowListState extends State<OwnerFollowList>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async => await followUpGroup('init'), onRefresh: () async => await followUpGroup('init'),
child: FutureBuilder( child: FutureBuilder(
future: _futureBuilderFuture, future: _futureBuilderFuture,

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/pages/fav_search/view.dart' show SearchType; import 'package:PiliPalaX/pages/fav_search/view.dart' show SearchType;
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -176,7 +177,7 @@ class _HistoryPageState extends State<HistoryPage> {
], ],
), ),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _historyController.onRefresh(); await _historyController.onRefresh();
return; return;

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/common/widgets/video_card_h_grpc.dart'; import 'package:PiliPalaX/common/widgets/video_card_h_grpc.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -65,7 +66,7 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async { onRefresh: () async {
return await _hotController.onRefresh(); return await _hotController.onRefresh();
}, },

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/common/constants.dart'; 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/http_error.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
@@ -43,7 +44,7 @@ class _MemberArticleState extends State<MemberArticle>
? MediaQuery.removePadding( ? MediaQuery.removePadding(
context: context, context: context,
removeTop: true, removeTop: true,
child: RefreshIndicator( child: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/common/constants.dart'; 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/http_error.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/bangumi/widgets/bangumi_card_v_member_home.dart'; import 'package:PiliPalaX/pages/bangumi/widgets/bangumi_card_v_member_home.dart';
@@ -42,7 +43,7 @@ class _MemberBangumiState extends State<MemberBangumi>
_buildBody(LoadingState loadingState) { _buildBody(LoadingState loadingState) {
return loadingState is Success return loadingState is Success
? RefreshIndicator( ? refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,5 +1,6 @@
import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/badge.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/http_error.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
@@ -44,7 +45,7 @@ class _MemberFavoriteState extends State<MemberFavorite>
_buildBody(LoadingState loadingState) { _buildBody(LoadingState loadingState) {
return loadingState is Success return loadingState is Success
? RefreshIndicator( ? refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/common/constants.dart'; 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/http_error.dart';
import 'package:PiliPalaX/common/widgets/video_card_h_member_video.dart'; import 'package:PiliPalaX/common/widgets/video_card_h_member_video.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
@@ -54,7 +55,7 @@ class _MemberVideoState extends State<MemberVideo>
_buildBody(LoadingState loadingState) { _buildBody(LoadingState loadingState) {
return loadingState is Success && loadingState.response is List return loadingState is Success && loadingState.response is List
? RefreshIndicator( ? refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/dynamics/widgets/dynamic_panel_grpc.dart'; import 'package:PiliPalaX/pages/dynamics/widgets/dynamic_panel_grpc.dart';
@@ -39,7 +40,7 @@ class _MemberDynamicState extends State<MemberDynamic>
_buildBody(LoadingState loadingState) { _buildBody(LoadingState loadingState) {
return loadingState is Success return loadingState is Success
? RefreshIndicator( ? refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -47,7 +48,7 @@ class _AtMePageState extends State<AtMePage> {
appBar: AppBar( appBar: AppBar(
title: const Text('@我的'), title: const Text('@我的'),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _atMeController.onRefresh(); await _atMeController.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -48,7 +49,7 @@ class _LikeMePageState extends State<LikeMePage> {
appBar: AppBar( appBar: AppBar(
title: const Text('收到的赞'), title: const Text('收到的赞'),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _likeMeController.onRefresh(); await _likeMeController.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -48,7 +49,7 @@ class _ReplyMePageState extends State<ReplyMePage> {
appBar: AppBar( appBar: AppBar(
title: const Text('回复我的'), title: const Text('回复我的'),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _replyMeController.onRefresh(); await _replyMeController.onRefresh();
}, },

View File

@@ -1,5 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/utils/app_scheme.dart'; import 'package:PiliPalaX/utils/app_scheme.dart';
import 'package:PiliPalaX/utils/utils.dart'; import 'package:PiliPalaX/utils/utils.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
@@ -51,7 +52,7 @@ class _SysMsgPageState extends State<SysMsgPage> {
appBar: AppBar( appBar: AppBar(
title: const Text('系统通知'), title: const Text('系统通知'),
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _sysMsgController.onRefresh(); await _sysMsgController.onRefresh();
}, },

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
@@ -64,7 +65,7 @@ class _ZonePageState extends State<ZonePage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async { onRefresh: () async {
return await _zoneController.onRefresh(); return await _zoneController.onRefresh();
}, },

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/models/common/tab_type.dart'; import 'package:PiliPalaX/models/common/tab_type.dart';
import 'package:PiliPalaX/pages/common/popup_controller.dart'; import 'package:PiliPalaX/pages/common/popup_controller.dart';
@@ -83,7 +84,7 @@ class _RcmdPageState extends State<RcmdPage>
decoration: const BoxDecoration( decoration: const BoxDecoration(
borderRadius: BorderRadius.all(StyleString.imgRadius), borderRadius: BorderRadius.all(StyleString.imgRadius),
), ),
child: RefreshIndicator( child: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _controller.onRefresh(); await _controller.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -65,7 +66,7 @@ class _SearchPanelState extends State<SearchPanel>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _searchPanelController.onRefresh(); await _searchPanelController.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart';
@@ -119,7 +120,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return RefreshIndicator( return refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _videoReplyController.onRefresh(); await _videoReplyController.onRefresh();
}, },

View File

@@ -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/grpc/app/main/community/reply/v1/reply.pb.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item_grpc.dart';
@@ -127,7 +128,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
color: Theme.of(context).dividerColor.withOpacity(0.1), color: Theme.of(context).dividerColor.withOpacity(0.1),
), ),
Expanded( Expanded(
child: RefreshIndicator( child: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _videoReplyReplyController.onRefresh(); await _videoReplyReplyController.onRefresh();
}, },

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -67,7 +68,7 @@ class _WhisperPageState extends State<WhisperPage> {
const SizedBox(width: 12) const SizedBox(width: 12)
], ],
), ),
body: RefreshIndicator( body: refreshIndicator(
onRefresh: () async { onRefresh: () async {
await _whisperController.queryMsgFeedUnread(); await _whisperController.queryMsgFeedUnread();
await _whisperController.onRefresh(); await _whisperController.onRefresh();

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/http/msg.dart';
import 'package:PiliPalaX/pages/emote/view.dart'; import 'package:PiliPalaX/pages/emote/view.dart';
import 'package:PiliPalaX/pages/video/detail/reply_new/reply_page.dart'; import 'package:PiliPalaX/pages/video/detail/reply_new/reply_page.dart';
@@ -153,7 +154,7 @@ class _WhisperDetailPageState extends State<WhisperDetailPage> {
child: CircularProgressIndicator(), child: CircularProgressIndicator(),
); );
} }
return RefreshIndicator( return refreshIndicator(
onRefresh: _whisperDetailController.querySessionMsg, onRefresh: _whisperDetailController.querySessionMsg,
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,