Kotlin-Snippets
Alle Snippets für Kotlin — copy-&-paste-fertig, erklärt und aus der Praxis.
Modifier-Reihenfolge in Compose – warum padding vor background alles ändert
In Jetpack Compose ist die Reihenfolge der Modifier keine Kosmetik, sondern Logik. background vor padding färbt auch den Rand ein, padding vor background nicht. Ein Beispiel, das den Groschen fallen lässt.
remember vs. rememberSaveable – Zustand, der die Drehung übersteht
remember hält Zustand über Recompositions, verliert ihn aber bei Konfigurationsänderungen wie der Bildschirmdrehung. rememberSaveable rettet einfache Werte automatisch über den Bundle-Mechanismus.
XML-Layout vs. Jetpack Compose – dasselbe UI, zwei Welten
Ein einfacher Screen mit Bild, Titel und Button – einmal als klassisches XML-Layout mit findViewById, einmal deklarativ in Jetpack Compose. Der direkte Vergleich zeigt, warum Compose so viel Boilerplate spart.
withContext(Dispatchers.IO) – schwere Arbeit vom Main-Thread nehmen
Datei lesen oder ein Bild dekodieren blockiert den Main-Thread und ruckelt die UI. Mit withContext(Dispatchers.IO) schiebst du blockierende Arbeit sauber auf einen Hintergrund-Thread.
Navigation in Compose – NavHost mit Argumenten
Von der Liste zum Detail und mit einer ID zurück: Navigation Compose macht das mit NavHost, Routen und typisierten Argumenten. So richtest du den Grundfluss sauber ein.
UI-State als sealed interface – Loading, Success, Error sauber modellieren
Zwei Booleans für "lädt" und "Fehler"? Das gibt unmögliche Zustände. Mit einem sealed interface bildest du genau die Fälle ab, die es wirklich gibt – und der Compiler hilft dir.
LaunchedEffect in Compose – Effekte genau einmal auslösen
Datenladen oder eine Snackbar direkt im Composable-Body? Das feuert bei jeder Recomposition erneut. Mit LaunchedEffect bindest du Nebenwirkungen sauber an einen Schlüssel.
State Hoisting in Jetpack Compose – Zustand richtig herausziehen
Wer in Compose Zustand direkt in die UI packt, bekommt schwer testbare Composables. Mit State Hoisting trennst du Anzeige und Zustand sauber – wiederverwendbar und testbar.
LazyColumn mit stabilen Keys in Jetpack Compose
Eine performante Liste in Compose baust du mit LazyColumn und items(list, key = ...). Die stabilen Keys sorgen dafür, dass Compose beim Umsortieren nur das Nötige neu zeichnet.
Retrofit mit Coroutines und sauberer Fehlerbehandlung
Eine suspend-Funktion in Retrofit, ausgeführt auf dem IO-Dispatcher und in ein Result gekapselt – so trennst du Netzwerkfehler, HTTP-Fehler und Erfolg sauber voneinander.
StateFlow im ViewModel sauber in Compose einsammeln
So hältst du deinen UI-State im ViewModel als StateFlow und liest ihn in Compose lebenszyklus-sicher mit collectAsStateWithLifecycle() aus – ohne Sammel-Leaks im Hintergrund.