避免意外重复点击 Any btn 的最佳方法是什么?

What is the best way to avoid accidental repeated clicks on Any btn?

我的问题是不小心重复点击了 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
            }
        }
    }

如果我不使用启用状态,用户可能会打开一个元素几次。 寻找社区意见。 谢谢。

​fun​ NavController.​safeNavigate​(​direction​:​ ​NavDirections​) {​    
       currentDestination?.getAction(direction.actionId)?.​run​ { navigate(direction) }
​}

而不是 navController.navigate,使用具有相同参数的 navController.safeNavigate

导航框架在您的应用程序中提供导航状态的最新和同步视图,因此防止多次点击的最安全方法是检查您是否仍在托管 LazyList 的导航目标中使用

navController.currentDestination

并将其与 LazyList 屏幕标识符进行比较。