Kotlin Multiplatform Academy · Lektion

Tabellen als Flow beobachten

Reaktive Aktualisierungen erhalten, wenn sich die Datenbank ändert

Lektion 4 von 413 Schritte

Tabellen als Flow beobachten ist eine kostenlose Kotlin Multiplatform Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Multiplatform Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Multiplatform Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum beobachten statt abfragen

Wenn Sie eine Abfrage manuell erneut ausführen, entgehen Ihnen Änderungen. SQLDelight kann Ihnen immer dann aktuelle Ergebnisse senden, wenn sich die Tabelle ändert.

Die Coroutines-Erweiterung hinzufügen

Reaktive Abfragen benötigen das coroutines-extensions-Artefakt, das Ihren generierten Abfragen Flow-Unterstützung hinzufügt.

implementation("app.cash.sqldelight:coroutines-extensions:2.0.2")

Eine Abfrage in einen Flow umwandeln

Rufen Sie bei einer beliebigen Select-Abfrage asFlow auf, um einen Flow zu erhalten, der bei jedem Schreibvorgang in die zugrunde liegende Tabelle erneut emittiert.

val flow = queries.selectAll().asFlow()

Auf Ergebnisse abbilden

asFlow liefert einen Abfrage-Wrapper. Verketten Sie daher mapToList, damit bei jeder Datenänderung eine fertige Kotlin-Liste emittiert wird.

val players = queries.selectAll()
    .asFlow()
    .mapToList(Dispatchers.IO)

Datenströme für einzelne Zeilen

Verwenden Sie für eine einzelne Zeile mapToOneOrNull. Es emittiert die Zeile oder null und aktualisiert sich automatisch, sobald sich diese Zeile ändert.

queries.selectById(1)
    .asFlow()
    .mapToOneOrNull(Dispatchers.IO)

Im gemeinsamen Code sammeln

Sie verarbeiten den Datenstrom, indem Sie ihn sammeln. Jede Einfügung, Aktualisierung oder Löschung in dieser Tabelle löst eine neue Emission aus.

players.collect { list -> render(list) }

Als StateFlow bereitstellen

Umschließen Sie den Flow mit einem StateFlow, damit Ihr gemeinsames ViewModel die aktuelle Liste als einzige Quelle der Wahrheit enthält.

val state = players.stateIn(scope, SharingStarted.Eagerly, emptyList())

Android sammelt mit Compose

Unter Android wandelt collectAsState den StateFlow in Compose-State um, sodass die Liste bei jeder Änderung automatisch neu zusammengesetzt wird.

val list by viewModel.state.collectAsState()

iOS sammelt aus Swift

Unter iOS beobachten Sie denselben StateFlow aus Swift und aktualisieren SwiftUI, sodass beide Apps mit der Datenbank synchron bleiben.

Ein Schreibvorgang aktualisiert beide UIs

Fügen Sie an beliebiger Stelle eine Zeile ein, und jeder aktive Flow gibt erneut Werte aus. Die Datenbank wird zur Live-Quelle, die beide Plattformen antreibt.

Den richtigen Dispatcher wählen

Führen Sie das Mapping nebenläufig zum Hauptthread aus, indem Sie einen Hintergrund-dispatcher übergeben. So bleibt die UI flüssig, während Abfragen laufen.

Kurzer Check

Sie sammeln selectAll().asFlow().mapToList(...). Wann gibt der Flow erneut einen Wert aus?

Rückblick: Live-Daten

Sie haben Abfragen in Flows umgewandelt, sie auf Ergebnisse abgebildet, einen StateFlow bereitgestellt und beide UIs bei jedem Schreibvorgang aktualisieren lassen. Ihre gemeinsame Datenbank ist jetzt reaktiv. ✅

Kostenlos starten

Lerne Kotlin mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Tabellen als Flow beobachten“ kostenlos?

Ja — der vollständige Text von „Tabellen als Flow beobachten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Multiplatform Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Multiplatform Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tabellen als Flow beobachten“?

Reaktive Aktualisierungen erhalten, wenn sich die Datenbank ändert Du übst Kotlin Multiplatform Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Multiplatform Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Multiplatform Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Tabellen als Flow beobachten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Multiplatform Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Multiplatform Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. SQLDelight hinzufügen und .sq-Schemas schreiben
  2. Plattformspezifisches SqlDriver-Setup
  3. Zeilen einfügen, abfragen und aktualisieren
  4. Tabellen als Flow beobachten
← Zurück zu Kotlin Multiplatform Academy