Abbiamo terminato il livello modale.
Passiamo ora al ViewModel.
Il ViewModel espone i flussi di dati rilevanti per la vista
e funge da collegamento tra il modale e la vista.
Negli esempi precedenti e nei progetti precedenti in Xaml, quando
utilizzavamo le viste, usavamo i dati in tempo reale.
Ma quando si tratta di comporre, useremo una cosa diversa.
Utilizzeremo lo stato mutabile di ViewModel, che utilizza lo stato mutabile al posto
di LiveData nella composizione, consentendo la gestione diretta dello stato di composizione.
Quindi, quando si ha a che fare con Jetpack Compose, si deve sempre usare lo
stato mutabile di view al posto di LiveData e flow; creeremo un nuovo pacchetto chiamato
ViewModel e all'interno di questo pacchetto creeremo una nuova classe Kotlin chiamata movie ViewModel.
Questa classe prenderà un oggetto repository e dovrà essere estesa dalla classe del modello di vista.
La classe view model fa parte dei componenti dell'architettura di Android ed è progettata per
memorizzare e gestire i dati relativi all'interfaccia utente in modo consapevole del ciclo di vita.
Permette ai dati di sopravvivere alle modifiche di configurazione, come la rotazione dello schermo,
contribuendo a mantenere lo stato dell'interfaccia utente e a prevenire la perdita di dati.
Durante queste modifiche, il modello di vista è consapevole del ciclo di vita, il che significa che
ha come scopo il ciclo di vita di un componente dell'interfaccia utente, come un'attività o un frammento.
Verrà mantenuto finché l'ambito è in vita e non verrà distrutto
in caso di modifiche alla configurazione, come la rotazione dello schermo.
Lo scopo principale del modello di vista è quello di gestire e conservare i dati relativi all'interfaccia utente.
Assicura che i dati sopravvivano alle modifiche della configurazione, evitando di doverli caricare e ricaricare inutilmente.
Come accennato in precedenza, useremo lo stato mutabile di LiveData,
che ci consente di gestire direttamente lo stato di composizione.
A tale scopo, creerò la var movies con lo stato mutabile di list of movie e
imposteremo la lista vuota Alt+ enter per importare il film e poi useremo il set privato.
Scomponiamo questo codice.
Film.
Questo è il nome della proprietà e la variabile per stato mutabile di questa è una delega.
Si tratta di una delega di proprietà.
Si tratta di un delegato che inizializza la proprietà e ne gestisce lo stato.
Lo stato mutabile è una funzione fornita da Jetpack Compose
che crea un supporto di stato per un valore.
In questo caso, contiene un elenco di oggetti filmati.
Il valore iniziale dell'elenco vuoto della proprietà movies, che è un elenco vuoto che
utilizza lo stato mutabile della funzione, rende movies una proprietà stateful in Jetpack Compose.
Quando il valore dei filmati cambia, compose ricomporrà automaticamente
le parti dell'interfaccia utente che dipendono da questo stato.
Di nuovo, ragazzi, quando scrivo note come commenti, voglio che le
scriviate sul vostro quaderno, perché queste note sono molto importanti.
Quando il valore dei filmati cambia, compose ricomporrà automaticamente le
parti dell'interfaccia utente che dipendono dai filmati di stato.
E qui usiamo lo stato mutabile di invece di LiveData.
In questo corso, quindi, ho cercato di coprire tutti i possibili
codici che potreste incontrare e che potreste scoprire in altri progetti.
E il modo migliore per usarlo con compose è lo stato mutabile di ok alt più enter per importare
l'operatore, ottenere il valore e Alt più enter di nuovo per importare il valore impostato e il set privato.
Questa riga indica che il setter della proprietà del filmato è privato.
Significa che solo la classe contenente il ViewModel può modificare il valore dei filmati.
Le classi o gli oggetti esterni possono leggere il valore dei film, ma non possono modificarlo direttamente.
Di nuovo, ragazzi, abbiamo tre principi in questi due codici:
la delega delle proprietà, la gestione dello stato e l'incapsulamento.
Delegazione della proprietà.
Film è una proprietà mutabile che contiene un elenco di gestione dello stato degli oggetti film.
La proprietà è inizializzata e gestita dallo stato mutabile di, il che la rende una
proprietà statica in Jetpack Compose, e le modifiche ai filmati attiveranno la ricomposizione dell'interfaccia utente.
Dipende da questo Stato.
Incapsulamento.
Il setter dei filmati è privato, il che significa che solo
la classe che contiene questa proprietà può modificarne il valore.
Le altre classi possono solo leggere il valore, garantendo un accesso controllato alla proprietà.
L'unica cosa che dobbiamo ottenere da questo ViewModel sono i filmati.
E questi film.
Abbiamo due modi per ottenerli: dal database locale, che
è il database delle stanze, o dalle API online.
La prima cosa su cui stiamo lavorando è l'online.
Quindi creerò una variabile film simile a quella dei film.
Poi dobbiamo assegnare i filmati online o offline recuperati ai filmati creati in precedenza.
In modo simile a quanto fatto qui, creerò una nuova variabile chiamata
film da API per stato mutabile di lista di film vuota.
Inoltre, è necessario utilizzare un set privato.
Nel prossimo video, continueremo con il ViewModel e useremo lo
scope del ViewModel per ottenere i filmati recuperati e memorizzarli
all'interno dei filmati dall'API, per poi clonarli nei filmati.