我有一个看起来像这样的布局:
Row {
...
Box(
modifier = Modifier
.fillMaxHeight()
.width(50.dp)
) {
AnimatedVisibility(
visible = isSelected && selectedAnimationFinished,
enter = fadeIn(),
exit = fadeOut()
) {
...
}
}
}
但是我得到了编译时错误:
fun RowScope.AnimatedVisibility(visible: Boolean, modifier: Modifier = ..., enter: EnterTransition = ..., exit: ExitTransition = ..., content: AnimatedVisibilityScope.() -> Unit): Unit' can't be called in this context by implicit receiver. Use the explicit one if necessary
看起来 Kotlin 发现 AnimatedVisibility
函数不明确,因为 Compose 公开了多个具有相同签名的 AnimatedVisibility
函数:有一个没有接收器的 fun AnimatedVisibility
和一个 fun RowScope.AnimatedVisibility
这需要 RowScope
。
据我所知,Kotlin 抱怨我错误地使用了 RowScope
版本,但我只想使用没有接收器的版本!
使用 this.AnimatedVisibility
也无济于事。
我发现唯一有效的解决方法是完全限定名称,例如 androidx.compose.animation.AnimatedVisibility(...)
。但我不知道为什么会这样。
有人可以对此有所了解吗?有没有比完全限定名称更好的选择?
答案 0 :(得分:0)
看起来这是语言中的一个错误 - 重载解析不知道 @DslMarker
和诸如此类的东西。我在 Kotlin bugtracker 上找不到相关问题,所以我自己提交了一个 - https://youtrack.jetbrains.com/issue/KT-48215。