Compose-state-slots og content-lambdas
Gør komponenter fleksible med slot-API'er.
Compose-state-slots og content-lambdas er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Gør komponenter fleksible
Et slot lader en komponent modtage et stykke brugergrænseflade som parameter. Kaldende kode udfylder slottet, så én komponent passer til mange designs.
Mød content-lambdaen
Det mest almindelige slot er en afsluttende content-lambda af typen @Composable () -> Unit. Alt, hvad du placerer i klammerne, bliver indholdet.
fun Card(content: @Composable () -> Unit) {
Surface { content() }
}Kald af et slot
Du kalder slottet ligesom en almindelig lambda. Compose kører den brugergrænseflade, som den kaldende kode sendte, præcis dér, hvor du kalder content().
Card {
Text("Anything I want lives here")
}Hvorfor slots er bedre end boolske flag
I stedet for mange flag som showIcon eller showTitle kan du udstille slots. Kaldende kode sammensætter præcis det, den har brug for, med fuld frihed.
Navngivne slots
Komponenter kan tilbyde flere slots, hver som en parameter. Scaffold gør dette med topBar, bottomBar og content. 🧩
fun Banner(
title: @Composable () -> Unit,
action: @Composable () -> Unit
) { /* lay them out */ }Områder giver flere muligheder
Et slot kan være en receiver-lambda, der giver den kaldende kode hjælpefunktioner. I en Column er content af typen ColumnScope.() -> Unit, så weight fungerer.
fun MyColumn(content: @Composable ColumnScope.() -> Unit) {
Column { content() }
}Send data ind i et slot
Slots kan give værdier videre til den kaldende kode. Et slot til en række i en liste kan for eksempel sende elementet med, så den kaldende kode bestemmer, hvordan det skal tegnes.
fun Row(item: User, content: @Composable (User) -> Unit) {
content(item)
}Slots bevarer ophævet tilstand
Fordi den kaldende kode leverer slottets indhold, forbliver din komponent tilstandsløs med hensyn til det, der er indeni. Ejerskabet forbliver tydeligt.
Genbrug på tværs af skærme
Ét Card- eller Dialog-element med slots erstatter et dusin næsten identiske komponenter. Du bygger rammen én gang og varierer udfyldningen. ♻️
Standardindhold til slots
Giv et slot en fornuftig standard, så simple kaldere kan udelade det, mens avancerede kaldere kan tilsidesætte det helt.
fun Section(
header: @Composable () -> Unit = { Text("Section") },
content: @Composable () -> Unit
) { /* ... */ }Slot-tankegangen
Når en komponent begynder at samle boolske flag, så vælg slots i stedet. Fleksibilitet kommer fra at sende brugergrænseflade ind, ikke fra skifter.
Hurtigt tjek
Hvad er den største fordel ved en content-slot-lambda?
Opsummering
Slots modtager brugergrænseflade som @Composable-lambdaer, eventuelt med område eller data. De gør komponenter fleksible, samtidig med at tilstanden forbliver ophævet. 🚀
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Compose-state-slots og content-lambdas” gratis?
Ja — hele teksten til “Compose-state-slots og content-lambdas” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Compose-state-slots og content-lambdas”?
Gør komponenter fleksible med slot-API'er. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Jetpack Compose Academy?
Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Compose-state-slots og content-lambdas”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?
Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Stateful kontra stateless Composables
- Løft state med value og onValueChange
- Én sandhedskilde
- Compose-state-slots og content-lambdas