Luk*_*uke 8 android android-jetpack-compose
我有一个看起来像这样的布局:
Row {
...
Box(
modifier = Modifier
.fillMaxHeight()
.width(50.dp)
) {
AnimatedVisibility(
visible = isSelected && selectedAnimationFinished,
enter = fadeIn(),
exit = fadeOut()
) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到编译时错误:
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
Run Code Online (Sandbox Code Playgroud)
看起来 Kotlin 发现AnimatedVisibility
函数不明确,因为 Compose 公开了多个AnimatedVisibility
具有相同签名的函数:有一个fun AnimatedVisibility
没有接收器,一个fun RowScope.AnimatedVisibility
需要RowScope
.
据我所知,Kotlin 抱怨我使用的RowScope
版本不正确,但我只想使用没有接收器的版本!
使用this.AnimatedVisibility
也无济于事。
我发现唯一有效的解决方法是完全限定名称,例如androidx.compose.animation.AnimatedVisibility(...)
. 但我不知道为什么会这样。
任何人都可以对此有所了解吗?有没有比完全限定名称更好的选择?
Ale*_*kov 47
一种解决方法是使用完全限定名称:
Box {
androidx.compose.animation.AnimatedVisibility(visibile = ...) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*set 24
看起来这是语言中的一个错误 - 重载解析不知道@DslMarker
s 之类的东西。我在 Kotlin bugtracker 上找不到相关问题,因此我自己提交了一个 - https://youtrack.jetbrains.com/issue/KT-48215。
除了 Alex 提到的解决方法之外,其他解决方法是当您将 Box 放在列中时引用列范围:
this@Column.AnimatedVisibility(visible = condition) {
Composable()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
156 次 |
最近记录: |