Jetpack Compose: исключение при анализе выражения
Я пытаюсь создать простое приложение, используя Jetpack Compose. Я следовал этой документации, скачал репозиторий и создал свой собственный модуль.
Код довольно прост:
import android.app.Activity
import android.os.Bundle
import androidx.compose.Composable
import androidx.ui.core.Text
import androidx.ui.core.setContent
import androidx.ui.material.surface.Card
import androidx.ui.graphics.Color
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp()
}
}
@Composable
fun MyApp() {
Card(color = Color.Cyan) {
Text("test")
}
}
}
Но я заметил, что некоторые составные виджеты не работают, и у меня есть следующая ошибка:
Исключение при анализе выражения в (23,9) в /path/Projects/androidx-master-dev/frameworks/support/ui/compose/src/main/java/app/myown/MainActivity.kt
Где (23,9) ссылки на Card
виджет
Кстати другие виджеты работают, например у меня нет проблем с
@Composable
fun MyApp() {
Padding(10.dp) {
Text("test")
}
}
Он компилируется и работает отлично.
Я получил следующую проблему с:
- Карта
- колонка
- Ряд
- Центр
- FlexColumn
и я думаю, что многие другие виджеты
1 ответ
Я столкнулся с этой проблемой ранее.
Существует неявная необходимость иметь import androidx.compose.composer
в каждом исходном файле Kotlin, который имеет @Composable
функции. Я говорю "неявный", потому что Android Studio считает, что это ненужно и имеет тенденцию удалять эту строку (например, вы просите ее оптимизировать импорт). Несколько @Composable
функции могут выжить без этого импорта, но другие не могут.
Насколько я понимаю, это одна из тех вещей, которые будут улучшаться по мере развития библиотек и инструментов, но в данный момент просто следите за этим импортом и добавьте его, если он отсутствует, и вы получаете страннее, чем... нормальные результаты.