Skip to content

Commit ef08bba

Browse files
committed
修改ios下拉刷新模式的机制
1 parent a65737f commit ef08bba

File tree

2 files changed

+610
-25
lines changed

2 files changed

+610
-25
lines changed

lib/widget/pull/gsy_pull_new_load_widget.dart

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:flare_flutter/flare_actor.dart';
2-
import 'package:flutter/cupertino.dart' as IOS;
2+
import 'package:gsy_github_app_flutter/widget/pull/gsy_refresh_sliver.dart' as IOS;
33
import 'package:flutter/material.dart';
44
import 'package:flutter_spinkit/flutter_spinkit.dart';
55
import 'package:gsy_github_app_flutter/common/style/gsy_style.dart';
@@ -45,6 +45,9 @@ class GSYPullLoadWidget extends StatefulWidget {
4545
class _GSYPullLoadWidgetState extends State<GSYPullLoadWidget>
4646
with GSYFlarePullController {
4747
//with GSYFlarePullMutliController {
48+
49+
final GlobalKey<IOS.CupertinoSliverRefreshControlState> sliverRefreshKey = GlobalKey<IOS.CupertinoSliverRefreshControlState>();
50+
4851
ScrollController _scrollController;
4952

5053
bool isRefreshing = false;
@@ -184,32 +187,40 @@ class _GSYPullLoadWidgetState extends State<GSYPullLoadWidget>
184187
Widget build(BuildContext context) {
185188
if (widget.userIos) {
186189
///用ios模式的下拉刷新
187-
return CustomScrollView(
188-
controller: _scrollController,
189-
190-
///回弹效果
191-
physics: const CustomBouncingScrollPhysics(
192-
parent: AlwaysScrollableScrollPhysics(),
193-
refreshHeight: iosRefreshHeight),
194-
slivers: <Widget>[
195-
///控制显示刷新的 CupertinoSliverRefreshControl
196-
IOS.CupertinoSliverRefreshControl(
197-
refreshIndicatorExtent: iosRefreshIndicatorExtent,
198-
refreshTriggerPullDistance: iosRefreshHeight,
199-
onRefresh: handleRefresh,
200-
builder: buildSimpleRefreshIndicator,
201-
),
202-
SliverSafeArea(
203-
sliver: SliverList(
204-
delegate: SliverChildBuilderDelegate(
205-
(BuildContext context, int index) {
206-
return _getItem(index);
207-
},
208-
childCount: _getListCount(),
190+
return new NotificationListener(
191+
onNotification: (ScrollNotification notification) {
192+
///通知 CupertinoSliverRefreshControl 当前的拖拽状态
193+
sliverRefreshKey.currentState.notifyScrollNotification(notification);
194+
return false;
195+
},
196+
child: CustomScrollView(
197+
controller: _scrollController,
198+
199+
///回弹效果
200+
physics: const CustomBouncingScrollPhysics(
201+
parent: AlwaysScrollableScrollPhysics(),
202+
refreshHeight: iosRefreshHeight),
203+
slivers: <Widget>[
204+
///控制显示刷新的 CupertinoSliverRefreshControl
205+
IOS.CupertinoSliverRefreshControl(
206+
key: sliverRefreshKey,
207+
refreshIndicatorExtent: iosRefreshIndicatorExtent,
208+
refreshTriggerPullDistance: iosRefreshHeight,
209+
onRefresh: handleRefresh,
210+
builder: buildSimpleRefreshIndicator,
211+
),
212+
SliverSafeArea(
213+
sliver: SliverList(
214+
delegate: SliverChildBuilderDelegate(
215+
(BuildContext context, int index) {
216+
return _getItem(index);
217+
},
218+
childCount: _getListCount(),
219+
),
209220
),
210221
),
211-
),
212-
],
222+
],
223+
),
213224
);
214225
}
215226

0 commit comments

Comments
 (0)