fun Modifier.onClick(
enabled: Boolean = true,
onClickLabel: String? = null,
role: Role? = null,
limitTime: Long = 500L,
onClick: () -> Unit
) = composed {
val lastClickTime = remember { mutableLongStateOf(0L) }
this.clickable(
enabled = enabled,
onClickLabel = onClickLabel,
onClick = {
val currentTime = System.currentTimeMillis()
if (currentTime - lastClickTime.longValue >= limitTime) {
lastClickTime.longValue = currentTime
onClick()
}
},
role = role,
indication = null,
interactionSource = remember { MutableInteractionSource() }
)
}
@Composable
inline fun composeClick(
limitTime: Long = 500L,
crossinline onClick: () -> Unit
): () -> Unit {
val lastClickTime = remember { mutableLongStateOf(0L) }
return {
val currentTime = System.currentTimeMillis()
if (currentTime - lastClickTime.longValue >= limitTime) {
lastClickTime.longValue = currentTime
onClick()
}
}
}