@@ -6,15 +6,13 @@ import androidx.compose.foundation.layout.Row
6
6
import androidx.compose.foundation.layout.padding
7
7
import androidx.compose.foundation.layout.size
8
8
import androidx.compose.foundation.shape.CircleShape
9
- import androidx.compose.material.ExperimentalMaterialApi
10
- import androidx.compose.material.pullrefresh.PullRefreshIndicator
11
- import androidx.compose.material.pullrefresh.pullRefresh
12
- import androidx.compose.material.pullrefresh.rememberPullRefreshState
9
+ import androidx.compose.material3.ExperimentalMaterial3Api
10
+ import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
11
+ import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
13
12
import androidx.compose.runtime.Composable
13
+ import androidx.compose.runtime.LaunchedEffect
14
14
import androidx.compose.runtime.getValue
15
15
import androidx.compose.runtime.mutableIntStateOf
16
- import androidx.compose.runtime.mutableStateOf
17
- import androidx.compose.runtime.rememberCoroutineScope
18
16
import androidx.compose.runtime.saveable.rememberSaveable
19
17
import androidx.compose.runtime.setValue
20
18
import androidx.compose.ui.Alignment
@@ -40,7 +38,6 @@ import kiwi.orbit.compose.ui.controls.TopAppBarLarge
40
38
import kiwi.orbit.compose.ui.controls.TopAppBarScrollBehavior
41
39
import kiwi.orbit.compose.ui.foundation.ContentEmphasis
42
40
import kotlinx.coroutines.delay
43
- import kotlinx.coroutines.launch
44
41
45
42
@Composable
46
43
internal fun TopAppBarLargeScreen (
@@ -202,28 +199,26 @@ internal fun TopAppBarLargeCustomContentScreen(
202
199
)
203
200
}
204
201
205
- @OptIn(ExperimentalMaterialApi ::class )
202
+ @OptIn(ExperimentalMaterial3Api ::class )
206
203
@Composable
207
204
internal fun TopAppBarLargePullRefreshScreen (
208
205
onNavigateUp : () -> Unit ,
209
206
) {
210
- val refreshScope = rememberCoroutineScope()
211
- var refreshing by rememberSaveable { mutableStateOf(false ) }
212
207
var i by rememberSaveable { mutableIntStateOf(0 ) }
213
208
214
- fun refresh () = refreshScope.launch {
215
- refreshing = true
216
- delay(1500 )
217
- i + = 1
218
- refreshing = false
209
+ val pullRefreshState = rememberPullToRefreshState()
210
+ if (pullRefreshState.isRefreshing) {
211
+ LaunchedEffect (Unit ) {
212
+ delay(1500 )
213
+ i + = 1
214
+ pullRefreshState.endRefresh()
215
+ }
219
216
}
220
-
221
217
val scrollBehavior = TopAppBarScrollBehavior .exitUntilCollapsed()
222
- val pullRefreshState = rememberPullRefreshState(refreshing, ::refresh)
223
218
224
219
Scaffold (
225
220
modifier = Modifier
226
- .pullRefresh (pullRefreshState)
221
+ .nestedScroll (pullRefreshState.nestedScrollConnection )
227
222
.nestedScroll(scrollBehavior.nestedScrollConnection),
228
223
topBar = {
229
224
TopAppBarLarge (
@@ -236,13 +231,10 @@ internal fun TopAppBarLargePullRefreshScreen(
236
231
content = {
237
232
Box {
238
233
CustomContentPlaceholder (it, " Custom content $i " )
239
- PullRefreshIndicator (
240
- refreshing = refreshing,
234
+ PullToRefreshContainer (
241
235
state = pullRefreshState,
242
236
contentColor = OrbitTheme .colors.primary.normal,
243
- modifier = Modifier
244
- .padding(it)
245
- .align(Alignment .TopCenter ),
237
+ modifier = Modifier .align(Alignment .TopCenter ),
246
238
)
247
239
}
248
240
},
0 commit comments