Код: Выделить всё
@Composable
inline fun AnimatedVisibilityNullable(
value: T?,
...
crossinline content: @Composable (T) -> Unit
) {
// for nullable values
val ref=remember{ Ref() }
LaunchedEffect(value){
ref.value = value?:ref.value
}
// content
AnimatedVisibility(
value!=null && visible(value),
...
){
ref.value?.let { value ->
content(value)
}
}
}
Я хочу знать, есть ли способ сделать это более общим? Что-то вроде этого, но с универсальными типами и переменными аргументами:
Код: Выделить всё
@Composable
fun AnimatedVisibilityNullable(
value1: T1?,
value2: T2?,
...
content: @Composable (T1,T2) -> Unit
) {
// for nullable values
val ref1 = remember { Ref() }
val ref2 = remember { Ref() }
LaunchedEffect(value1,value2) {
ref1.value = value1?:ref1.value
ref2.value = value2?:ref2.value
}
// content
AnimatedVisibility(
value1!=null && value2!=null,
...
){
ref1.value?.let {p1->
ref2.value?.let { p2 ->
content(p1,p2)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... eric-types