Код: Выделить всё
fun ProductsListScreen() {
val lazyListState: LazyGridState = rememberLazyGridState()
var isRefreshing by remember {
mutableStateOf(false)
}
val pullToRefreshState = rememberPullToRefreshState(enabled = { isRefreshing })
val scope = rememberCoroutineScope()
Scaffold(modifier = Modifier.fillMaxSize(), topBar = {
///topAppBar
}) { paddingValues ->
Box(
Modifier
.verticalScroll(rememberScrollState())
.nestedScroll(pullToRefreshState.nestedScrollConnection)
.fillMaxSize()
.padding(paddingValues)
) {
LazyVerticalGrid(
state = lazyListState,
modifier = Modifier
.fillMaxSize()
.padding(10.dp)
.padding(bottom = paddingValues.calculateBottomPadding()),
columns = GridCells.Fixed(2),
contentPadding = PaddingValues(5.dp)
) {
/// Items
}
if (pullToRefreshState.isRefreshing) {
LaunchedEffect(true) {
scope.launch {
isRefreshing = true
productViewModel.loadProducts(forceRefresh = true)
isRefreshing = false
}
}
}
LaunchedEffect(isRefreshing) {
if (isRefreshing) {
pullToRefreshState.startRefresh()
} else {
pullToRefreshState.endRefresh()
}
}
PullToRefreshContainer(
state = pullToRefreshState,
modifier = Modifier
.align(Alignment.TopCenter),
)
}
}
}
Код: Выделить всё
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
Подробнее здесь: https://stackoverflow.com/questions/792 ... ot-working
Мобильная версия