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 функции могут выжить без этого импорта, но другие не могут.

Насколько я понимаю, это одна из тех вещей, которые будут улучшаться по мере развития библиотек и инструментов, но в данный момент просто следите за этим импортом и добавьте его, если он отсутствует, и вы получаете страннее, чем... нормальные результаты.

Другие вопросы по тегам