Lucas Prioste
10/16/2024, 3:06 PMLazyColumn
. This issue only occurs when the component is scrollable. I’ll share a video to show exactly what’s happening.https://youtube.com/shorts/WZSkPGpTPLU?feature=shareHristijan
10/16/2024, 3:27 PMLucas Prioste
10/16/2024, 3:28 PM@Composable
fun PullToRefreshLazyColumn(
modifier: Modifier = Modifier,
isRefreshing: Boolean? = null,
enabledPullToRefresh: Boolean = true,
onRefresh: () -> Unit,
contentPadding: PaddingValues = PaddingValues(),
verticalArrangement: Arrangement.Vertical = <http://Arrangement.Top|Arrangement.Top>,
lazyListState: LazyListState = rememberLazyListState(),
positionalThreshold: Dp = PullToRefreshDefaults.PositionalThreshold,
content: (LazyListScope.() -> Unit),
) {
val scope = rememberCoroutineScope()
val pullToRefreshState = rememberPullToRefreshState()
Box(
modifier = modifier
.pullToRefresh(
isRefreshing = isRefreshing ?: false,
state = pullToRefreshState,
threshold = positionalThreshold,
enabled = enabledPullToRefresh,
onRefresh = {
onRefresh()
scope.launch {
if (isRefreshing == null) pullToRefreshState.animateToHidden()
}
}
),
) {
LazyColumn(
state = lazyListState,
contentPadding = contentPadding,
modifier = Modifier
.fillMaxSize(),
verticalArrangement = verticalArrangement
) {
content()
}
Indicator(
modifier = Modifier.align(Alignment.TopCenter),
isRefreshing = isRefreshing ?: false,
state = pullToRefreshState,
threshold = positionalThreshold,
)
}
}
Lucas Prioste
10/18/2024, 8:37 AM