Kotlin Multiplatform Academy · Lezione

Esporre lo stato dell'interfaccia come StateFlow

Pubblicare un'unica fonte di verità per la schermata

Lezione 2 di 413 passaggi

Esporre lo stato dell'interfaccia come StateFlow è una lezione Kotlin Multiplatform Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Multiplatform Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Multiplatform Academy include 4 lezioni in totale.

Un'unica fonte di verità

La schermata ha bisogno di una rappresentazione unica e affidabile dei propri dati. Un StateFlow offre esattamente questo: un solo valore osservabile di cui l'interfaccia può fidarsi.

Modelli la schermata come stato

Raccolga tutto ciò che la schermata mostra in un'unica data class immutabile. Caricamento, dati ed errori vivono insieme in un solo oggetto.

data class HomeState(
    val isLoading: Boolean = false,
    val name: String = ""
)

Mantenga un MutableStateFlow privato

Nel ViewModel mantenga un MutableStateFlow privato. Solo il Suo codice può modificarlo, quindi lo stato rimane controllato e prevedibile.

private val _state =
    MutableStateFlow(HomeState())

Esponga una vista in sola lettura

Lo pubblichi come StateFlow in sola lettura. L'interfaccia può raccogliere i valori, ma non può mai scrivervi direttamente. Incapsulamento mantenuto in modo pulito.

val state: StateFlow<HomeState> =
    _state.asStateFlow()

Ha sempre un valore

A differenza di un normale Flow, uno StateFlow contiene sempre un valore corrente. I nuovi collector ricevono immediatamente lo stato più recente, senza attese.

Aggiorni con .update

Modifichi lo stato in sicurezza usando update. Copia il valore corrente e applica la modifica in modo atomico, anche tra thread.

_state.update { it.copy(isLoading = true) }

copy mantiene l'immutabilità

Poiché lo stato è una data class, copy crea un nuovo oggetto con un campo modificato. Lo stato precedente non viene mai modificato direttamente.

Carichi i dati, poi emetta il nuovo stato

Avvii una coroutine, recuperi i dati e poi emitta il nuovo stato. L'interfaccia esegue automaticamente il rendering quando il valore cambia. ✨

scope.launch {
    val name = repo.greet()
    _state.update { it.copy(name = name) }
}

StateFlow e LiveData

Gli sviluppatori Android conoscono LiveData, ma è disponibile solo sulla JVM. StateFlow funziona su ogni target KMP, quindi è la scelta portabile.

Legga direttamente il valore

Ha bisogno dello stato corrente senza raccogliere il flow? Legga semplicemente .value. È utile nei test o per controlli occasionali all'interno del ViewModel.

val current = _state.value

L'interfaccia resta semplice

La schermata raccoglie solo state e lo disegna. Tutte le decisioni restano nel codice condiviso, così entrambe le app si comportano allo stesso modo.

Verifica rapida

Verifichiamo perché separiamo i flow mutabili da quelli in sola lettura.

Riepilogo

Raccolga i dati della schermata in una classe di stato, li conservi in un MutableStateFlow privato ed esponga uno StateFlow in sola lettura che l'interfaccia si limita a osservare. 🚀

Gratis per iniziare

Impara Kotlin con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Esporre lo stato dell'interfaccia come StateFlow» è gratuita?

Sì — il testo completo di «Esporre lo stato dell'interfaccia come StateFlow» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Multiplatform Academy, passa a CoddyKit PRO. Il corso Kotlin Multiplatform Academy include 4 lezioni in totale.

Cosa imparerò in «Esporre lo stato dell'interfaccia come StateFlow»?

Pubblicare un'unica fonte di verità per la schermata Eserciti Kotlin Multiplatform Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Multiplatform Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Multiplatform Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Esporre lo stato dell'interfaccia come StateFlow»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Multiplatform Academy?

Sì. Ogni lezione Kotlin Multiplatform Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Una base ViewModel multipiattaforma
  2. Esporre lo stato dell'interfaccia come StateFlow
  3. Gestire intenti e azioni dell'utente
  4. Collegare il ViewModel a ogni interfaccia
← Torna a Kotlin Multiplatform Academy