我的問題是不小心重復點擊 LazyVerticalGrid 元素,使用以下方法解決:
var enabled by rememberSaveable { mutableStateOf(true) }和val scope = LocalLifecycleOwner.current.lifecycleScope。
LazyVerticalGrid(
state = lazyVGState,
cells = GridCells.Fixed(3),
contentPadding = PaddingValues(bottom = 100.dp)
) {
items(groupMap.keys.toList().sorted()) { item ->
Column(
modifier = Modifier.clickable(
enabled = enabled,
) {
enabled = false
navController.currentBackStackEntry?.savedStateHandle?.set(
CITY_WEATHER_LIST,
cityList
)
navController.navigate(Screen.CityForecastScreen.route)
scope.launchWhenStarted {
delay(10)
enabled = true
}
},
) {
// some elements
}
}
}
如果我不使用啟用狀態,用戶可能會打開一個元素幾次。征求社區意見。謝謝。
uj5u.com熱心網友回復:
導航框架在您的應用程式中提供導航狀態的最新和同步視圖,因此防止多次點擊的最安全方法是檢查您是否仍在托管 LazyList 的導航目標中,使用
navController.currentDestination
并將其與 LazyList 螢屏識別符號進行比較。
uj5u.com熱心網友回復:
?fun? NavController.?safeNavigate?(?direction?:? ?NavDirections?) {?
currentDestination?.getAction(direction.actionId)?.?run? { navigate(direction) }
?}
而不是navController.navigate, 使用navController.safeNavigate相同的引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/472023.html
標籤:安卓 按钮 android-jetpack-compose 懒人网格
上一篇:反應原生:按下時更改組件道具
下一篇:初識C++02:類和物件
