Как передать детей в Jetpack Compose на настраиваемый компонуемый?

Мне любопытно, можно ли передать составные части в пользовательский блок составных частей. Который затем отображается в его определении. Я думал, что можно использовать буквальный подход vararg + function, и не смог найти никакой информации.

//definition
@Composable
fun Content() {
    Row(modifier = Modifier.fillMaxWidth()) {
        //insert a(), b(), ..., z() so that they render in the row
    }
}

//usage
Content() {
    a()
    b()
    ...
    z()
}

Что-то подобное уже существует? Таким образом вы можете использовать Jetpack Compose. Реализация строки должна каким-то образом обрабатывать текст.

Row(){
    Text("a")
    Text("b")
    Text("c")
}
25
0
13 724
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Посмотрев на реализацию Row, RowScope и найдя этот кусок документации . Этого можно добиться с помощью следующего примера кода. Параметр функции content с типом @Composable() () -> Unit передается в строку.

//definition
@Composable
fun MyCustomContent(
    modifier: Modifier = Modifier,
    content: @Composable() () -> Unit
) {
    Row(modifier = modifier) {
        content()
    }
}

//usage
MyCustomContent() {
    a()
    b()
    z()
}

«назовите это как вам угодно» — вы можете начать получать предупреждения Lint. Официальное соглашение состоит в том, что этот параметр называется content.

CommonsWare 11.12.2020 23:52

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