Zoltan Demant
05/05/2022, 4:33 AMremember
and if (showDialog) {}
, instead simply call dialog.show()
or dialog.dismiss()
.
val dialog = rememberToggle { toggle ->
Alert(
onDismiss = {
toggle.dismiss()
},
title = "I exist!"
)
}
@Composable
inline fun rememberToggle(
content: @Composable (Toggle) -> Unit
): Toggle {
val toggle = remember {
Toggle()
}
if (toggle.visible()) {
content(toggle)
}
return toggle
}
@JvmInline
value class Toggle internal constructor(
private val state: MutableState<Boolean>
) {
private inline var visible
get() = state.value
set(value) {
state.value = value
}
constructor(
initialVisible: Boolean = false
) : this(
state = mutableStateOf(initialVisible)
)
fun visible(): Boolean {
return visible
}
fun show() {
visible = true
}
fun dismiss() {
visible = false
}
}
Max Novikov
05/05/2022, 7:23 AMZoltan Demant
05/05/2022, 8:00 AMToggle
class becomes a MutableState<Boolean>
Umar Saidu
05/05/2022, 9:04 AMColton Idle
05/05/2022, 5:38 PMZoltan Demant
05/06/2022, 5:17 AM