【问题标题】:How to implement swipe to refresh in Jetpack compose如何在Jetpack compose中实现滑动刷新
【发布时间】:2022-12-22 05:09:56
【问题描述】:
如何使用 kotlin 在 Jetpack compose 中创建滑动刷新?请分享正确的参考链接
刷卡刷新不可用
SwipeRefresh(
state = rememberSwipeRefreshState(isRefreshing),
onRefresh = { },
) {
LazyColumn {
}
}
【问题讨论】:
标签:
android
android-jetpack-compose
android-jetpack-compose-lazy-column
【解决方案1】:
要创建滑动刷新布局,我们需要在 build.gradle 中添加依赖,它将提供滑动刷新布局,就像传统 android 中的 SwipeRefreshLayout 一样。
implementation 'com.google.accompanist:accompanist-swiperefresh:0.24.13-rc'
..
要创建这种布局,我们需要两个 API,一个用于布局的 SwipeRefresh,另一个用于记住状态的 rememberSwipeRefreshState。
@Composable
fun SwipeRefreshCompose() {
var refreshing by remember { mutableStateOf(false) }
LaunchedEffect(refreshing) {
if (refreshing) {
delay(3000)
refreshing = false
}
}
SwipeRefresh(
state = rememberSwipeRefreshState(isRefreshing = refreshing),
onRefresh = { refreshing = true },
) {
// list view
}
}
【解决方案2】:
现在您可以使用内置的pullRefresh修饰符。
就像是:
val refreshScope = rememberCoroutineScope()
var refreshing by remember { mutableStateOf(false) }
fun refresh() = refreshScope.launch {
refreshing = true
//...do something
refreshing = false
}
val state = rememberPullRefreshState(refreshing, ::refresh)
Box(Modifier.pullRefresh(state)) {
LazyColumn(Modifier.fillMaxSize()) {
if (!refreshing) {
items(itemCount) {
//...
}
}
}
PullRefreshIndicator(refreshing, state, Modifier.align(Alignment.TopCenter))
}