WEBVTT

1
00:01.160 --> 00:03.170
Abbiamo terminato il livello modale.

2
00:03.200 --> 00:05.540
Passiamo ora al ViewModel.

3
00:05.570 --> 00:12.470
Il ViewModel espone i flussi di dati
rilevanti per la vista

4
00:12.470 --> 00:14.270
e funge da collegamento tra il modale e la
vista.

5
00:14.300 --> 00:23.060
Negli esempi precedenti e nei progetti
precedenti in Xaml, quando

6
00:23.060 --> 00:24.170
utilizzavamo le viste, usavamo i dati in
tempo reale.

7
00:24.170 --> 00:29.990
Ma quando si tratta di comporre, useremo
una cosa diversa.

8
00:29.990 --> 00:38.990
Utilizzeremo lo stato mutabile di
ViewModel, che utilizza lo stato mutabile
al posto

9
00:39.020 --> 00:42.200
di LiveData nella composizione,
consentendo la gestione diretta dello
stato di composizione.

10
00:42.200 --> 00:49.340
Quindi, quando si ha a che fare con
Jetpack Compose, si deve sempre usare lo

11
00:49.340 --> 00:57.890
stato mutabile di view al posto di
LiveData e flow; creeremo un nuovo
pacchetto chiamato

12
00:57.920 --> 01:02.540
ViewModel e all'interno di questo
pacchetto creeremo una nuova classe Kotlin
chiamata movie ViewModel.

13
01:02.540 --> 01:11.720
Questa classe prenderà un oggetto
repository e dovrà essere estesa dalla
classe del modello di vista.

14
01:11.720 --> 01:19.730
La classe view model fa parte dei
componenti dell'architettura di Android ed
è progettata per

15
01:19.730 --> 01:23.450
memorizzare e gestire i dati relativi
all'interfaccia utente in modo consapevole
del ciclo di vita.

16
01:23.450 --> 01:31.040
Permette ai dati di sopravvivere alle
modifiche di configurazione, come la
rotazione dello schermo,

17
01:31.040 --> 01:32.900
contribuendo a mantenere lo stato
dell'interfaccia utente e a prevenire la
perdita di dati.

18
01:32.930 --> 01:40.310
Durante queste modifiche, il modello di
vista è consapevole del ciclo di vita, il
che significa che

19
01:40.310 --> 01:43.790
ha come scopo il ciclo di vita di un
componente dell'interfaccia utente, come
un'attività o un frammento.

20
01:43.790 --> 01:52.070
Verrà mantenuto finché l'ambito è in vita
e non verrà distrutto

21
01:52.070 --> 01:53.540
in caso di modifiche alla configurazione,
come la rotazione dello schermo.

22
01:53.540 --> 01:58.070
Lo scopo principale del modello di vista è
quello di gestire e conservare i dati
relativi all'interfaccia utente.

23
01:58.070 --> 02:06.200
Assicura che i dati sopravvivano alle
modifiche della configurazione, evitando
di doverli caricare e ricaricare
inutilmente.

24
02:06.200 --> 02:13.320
Come accennato in precedenza, useremo lo
stato mutabile di LiveData,

25
02:13.320 --> 02:15.060
che ci consente di gestire direttamente lo
stato di composizione.

26
02:15.060 --> 02:26.430
A tale scopo, creerò la var movies con lo
stato mutabile di list of movie e

27
02:26.460 --> 02:32.010
imposteremo la lista vuota Alt+ enter per
importare il film e poi useremo il set
privato.

28
02:32.010 --> 02:34.200
Scomponiamo questo codice.

29
02:34.200 --> 02:34.890
Film.

30
02:34.890 --> 02:42.300
Questo è il nome della proprietà e la
variabile per stato mutabile di questa è
una delega.

31
02:42.300 --> 02:44.370
Si tratta di una delega di proprietà.

32
02:44.370 --> 02:49.320
Si tratta di un delegato che inizializza
la proprietà e ne gestisce lo stato.

33
02:49.320 --> 02:57.750
Lo stato mutabile è una funzione fornita
da Jetpack Compose

34
02:57.750 --> 02:58.410
che crea un supporto di stato per un
valore.

35
02:58.410 --> 03:02.580
In questo caso, contiene un elenco di
oggetti filmati.

36
03:02.610 --> 03:11.460
Il valore iniziale dell'elenco vuoto della
proprietà movies, che è un elenco vuoto
che

37
03:11.460 --> 03:15.650
utilizza lo stato mutabile della funzione,
rende movies una proprietà stateful in
Jetpack Compose.

38
03:15.650 --> 03:22.880
Quando il valore dei filmati cambia,
compose ricomporrà automaticamente

39
03:22.880 --> 03:24.080
le parti dell'interfaccia utente che
dipendono da questo stato.

40
03:24.110 --> 03:32.570
Di nuovo, ragazzi, quando scrivo note come
commenti, voglio che le

41
03:32.600 --> 03:34.970
scriviate sul vostro quaderno, perché
queste note sono molto importanti.

42
03:35.000 --> 03:42.710
Quando il valore dei filmati cambia,
compose ricomporrà automaticamente le

43
03:42.710 --> 03:44.900
parti dell'interfaccia utente che
dipendono dai filmati di stato.

44
03:44.900 --> 03:49.220
E qui usiamo lo stato mutabile di invece
di LiveData.

45
03:49.220 --> 03:58.040
In questo corso, quindi, ho cercato di
coprire tutti i possibili

46
03:58.040 --> 03:59.810
codici che potreste incontrare e che
potreste scoprire in altri progetti.

47
03:59.810 --> 04:08.150
E il modo migliore per usarlo con compose
è lo stato mutabile di ok alt più enter
per importare

48
04:08.180 --> 04:14.750
l'operatore, ottenere il valore e Alt più
enter di nuovo per importare il valore
impostato e il set privato.

49
04:14.780 --> 04:19.910
Questa riga indica che il setter della
proprietà del filmato è privato.

50
04:19.940 --> 04:27.440
Significa che solo la classe contenente il
ViewModel può modificare il valore dei
filmati.

51
04:27.440 --> 04:34.430
Le classi o gli oggetti esterni possono
leggere il valore dei film, ma non possono
modificarlo direttamente.

52
04:34.460 --> 04:41.330
Di nuovo, ragazzi, abbiamo tre principi in
questi due codici:

53
04:41.330 --> 04:42.980
la delega delle proprietà, la gestione
dello stato e l'incapsulamento.

54
04:42.980 --> 04:44.390
Delegazione della proprietà.

55
04:44.390 --> 04:50.780
Film è una proprietà mutabile che contiene
un elenco di gestione dello stato degli
oggetti film.

56
04:50.780 --> 04:57.470
La proprietà è inizializzata e gestita
dallo stato mutabile di, il che la rende
una

57
04:57.470 --> 05:03.620
proprietà statica in Jetpack Compose, e le
modifiche ai filmati attiveranno la
ricomposizione dell'interfaccia utente.

58
05:03.650 --> 05:05.780
Dipende da questo Stato.

59
05:05.780 --> 05:07.010
Incapsulamento.

60
05:07.010 --> 05:15.050
Il setter dei filmati è privato, il che
significa che solo

61
05:15.050 --> 05:15.920
la classe che contiene questa proprietà
può modificarne il valore.

62
05:15.950 --> 05:21.530
Le altre classi possono solo leggere il
valore, garantendo un accesso controllato
alla proprietà.

63
05:21.530 --> 05:26.150
L'unica cosa che dobbiamo ottenere da
questo ViewModel sono i filmati.

64
05:26.150 --> 05:27.770
E questi film.

65
05:27.770 --> 05:34.670
Abbiamo due modi per ottenerli: dal
database locale, che

66
05:34.670 --> 05:35.930
è il database delle stanze, o dalle API
online.

67
05:35.960 --> 05:40.550
La prima cosa su cui stiamo lavorando è
l'online.

68
05:40.550 --> 05:46.790
Quindi creerò una variabile film simile a
quella dei film.

69
05:46.790 --> 05:54.260
Poi dobbiamo assegnare i filmati online o
offline recuperati ai filmati creati in
precedenza.

70
05:54.260 --> 06:02.990
In modo simile a quanto fatto qui, creerò
una nuova variabile chiamata

71
06:02.990 --> 06:07.790
film da API per stato mutabile di lista di
film vuota.

72
06:07.790 --> 06:10.340
Inoltre, è necessario utilizzare un set
privato.

73
06:10.340 --> 06:16.310
Nel prossimo video, continueremo con il
ViewModel e useremo lo

74
06:16.310 --> 06:23.420
scope del ViewModel per ottenere i filmati
recuperati e memorizzarli

75
06:23.420 --> 06:24.320
all'interno dei filmati dall'API, per poi
clonarli nei filmati.


