@@ -114,37 +114,52 @@ fun PullToRefresh(
114114 remember(pullToRefreshState, topAppBarScrollBehavior) {
115115 object : NestedScrollConnection {
116116 override fun onPreScroll (available : Offset , source : NestedScrollSource ): Offset {
117- val consumedByAppBar = topAppBarScrollBehavior?.nestedScrollConnection?.onPreScroll(available, source) ? : Offset .Zero
117+ if (pullToRefreshState == RefreshState .Idle ) {
118+ val consumedByAppBar =
119+ topAppBarScrollBehavior?.nestedScrollConnection?.onPreScroll(available, source) ? : Offset .Zero
118120
119- val remaining = available - consumedByAppBar
120- val consumedByRefresh = pullToRefreshState.createNestedScrollConnection().onPreScroll(remaining, source)
121+ val remaining = available - consumedByAppBar
122+ val consumedByRefresh = pullToRefreshState.createNestedScrollConnection().onPreScroll(remaining, source)
121123
122- return consumedByAppBar + consumedByRefresh
124+ return consumedByAppBar + consumedByRefresh
125+ } else {
126+ val consumedByRefresh = pullToRefreshState.createNestedScrollConnection().onPreScroll(available, source)
127+ val remaining = available - consumedByRefresh
128+ val consumedByAppBar =
129+ topAppBarScrollBehavior?.nestedScrollConnection?.onPreScroll(remaining, source) ? : Offset .Zero
130+
131+ return consumedByRefresh + consumedByAppBar
132+ }
123133 }
124134
125135 override fun onPostScroll (
126136 consumed : Offset ,
127137 available : Offset ,
128138 source : NestedScrollSource
129139 ): Offset {
130- val consumedByAppBar = topAppBarScrollBehavior?.nestedScrollConnection?.onPostScroll(consumed, available, source) ? : Offset .Zero
140+ val consumedByAppBar =
141+ topAppBarScrollBehavior?.nestedScrollConnection?.onPostScroll(consumed, available, source) ? : Offset .Zero
131142
132- val remaining = available - consumedByAppBar
133- val consumedByRefresh =
134- pullToRefreshState.createNestedScrollConnection().onPostScroll(consumed, remaining, source)
143+ val remaining = available - consumedByAppBar
144+ val consumedByRefresh =
145+ pullToRefreshState.createNestedScrollConnection().onPostScroll(consumed, remaining, source)
135146
136- return consumedByAppBar + consumedByRefresh
147+ return consumedByAppBar + consumedByRefresh
137148 }
138149
139150 override suspend fun onPreFling (available : Velocity ): Velocity {
140- return topAppBarScrollBehavior?.nestedScrollConnection?.onPreFling(available) ? : Velocity .Zero
151+ val consumedByAppBar =
152+ topAppBarScrollBehavior?.nestedScrollConnection?.onPreFling(available) ? : Velocity .Zero
153+
154+ return consumedByAppBar
141155 }
142156
143157 override suspend fun onPostFling (
144158 consumed : Velocity ,
145159 available : Velocity
146160 ): Velocity {
147- val consumedByAppBar = topAppBarScrollBehavior?.nestedScrollConnection?.onPostFling(consumed, available) ? : Velocity .Zero
161+ val consumedByAppBar =
162+ topAppBarScrollBehavior?.nestedScrollConnection?.onPostFling(consumed, available) ? : Velocity .Zero
148163
149164 return consumedByAppBar
150165 }
0 commit comments