Bude systém inicializácia premennej innerPadding vo funkcii Lešenie automaticky?

0

Otázka

Učím sa Skladať, Kód A je z článku.

Bolo mi povedané, tthe nasledujúci obsah:

Telo obsah, ktorý je typu @Composable (InnerPadding) -> Jednotky: lambda dostane čalúnenia ako parameter.

Som veľmi podivné, kde premenná innerPadding je inicializovaný, bude systém inicializácia premennej innerPadding funkcia Scaffold automaticky?

Kód

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

Najlepšiu odpoveď

2

Skontrolujte zdrojový kód a uvidíte, že Scaffold je implementovaný ako subcompose rozloženie. Na spodnej lište sa subcomposed:

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

innerPadding je potom odvodený od výšky spodnej lište:

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

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

V iných jazykoch

Táto stránka je v iných jazykoch

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