Le système d'initialiser la variable innerPadding en fonction de l'Échafaudage automatiquement?

0

La question

Je suis en train d'apprendre à Composer Un Code qui est de l' article.

On m'a dit le contenu suivant:

Le contenu du corps de type @Composable (InnerPadding) -> Unit: le lambda reçoit un rembourrage en tant que paramètre.

Je suis très étrange où la variable innerPadding est initialisé, le système d'initialiser la variable innerPadding en fonction de Scaffold automatiquement?

Code Un

 Scaffold { innerPadding ->
        Text(text = "Hi there!", modifier = Modifier.padding(innerPadding))
 }
android-jetpack-compose kotlin
2021-11-24 01:53:09
1

La meilleure réponse

2

Inspecter le code source et vous verrez que Scaffold est mis en œuvre comme un subcompose mise en page. La barre du bas est subcomposed:

val bottomBarPlaceables = subcompose(ScaffoldLayoutContent.BottomBar) {
    CompositionLocalProvider(
        LocalFabPlacement provides fabPlacement,
        content = bottomBar
    )
}.fastMap { it.measure(looseConstraints) }

innerPadding est alors calculée à partir de la hauteur de la barre du bas:

val bottomBarHeight = bottomBarPlaceables.fastMaxBy { it.height }?.height ?: 0

val innerPadding = PaddingValues(bottom = bottomBarHeight.toDp())
content(innerPadding)
2021-11-24 03:09:15

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................