WEBVTT

1
00:01.040 --> 00:02.080
Bentornati.

2
00:02.400 --> 00:10.560
Abbiamo terminato il modulo repository e
abbiamo detto che questo modulo è usato
per dire

3
00:10.560 --> 00:13.360
a hilt come fornire le dipendenze che non
è in grado di capire da solo.

4
00:13.400 --> 00:18.440
Aiuta a capire come legare le interfacce
alle loro implementazioni.

5
00:18.760 --> 00:22.440
Ora passiamo a creare il pacchetto
ViewModel.

6
00:22.640 --> 00:31.080
All'interno di questo ViewModel, creare
una nuova classe denominata weather UI
state.

7
00:31.280 --> 00:33.760
Questa è una classe sigillata.

8
00:34.040 --> 00:38.440
Una classe sigillata in Kotlin è come un
enum con gli steroidi.

9
00:38.480 --> 00:46.920
Permette di definire un insieme fisso di
sottoclassi, tutte note al momento della
compilazione.

10
00:47.000 --> 00:48.280
Perché è utile.

11
00:48.280 --> 00:55.720
Si possono usare tranquillamente le
dichiarazioni when senza bisogno di un

12
00:55.720 --> 00:57.160
else case e sono perfette per presentare
diversi stati dell'interfaccia utente.

13
00:57.320 --> 01:00.120
E qui abbiamo tre casi.

14
01:00.280 --> 01:01.120
Caricamento.

15
01:01.120 --> 01:02.920
Successi ed errori.

16
01:02.960 --> 01:05.800
Grazie per Android Studio.

17
01:05.960 --> 01:09.840
Completamento del codice che è attivo in
questo stato.

18
01:09.920 --> 01:12.120
Questo ci suggerisce il codice.

19
01:12.120 --> 01:17.440
Quindi, se faccio clic sulla scheda,
possiamo ottenere questo o quei codici.

20
01:17.480 --> 01:17.920
Ok.

21
01:18.160 --> 01:22.150
Alt più Invio per importare la classe Info
meteo.

22
01:22.150 --> 01:23.110
Ed eccoci qui.

23
01:23.110 --> 01:24.590
Abbiamo quindi tre Stati.

24
01:24.590 --> 01:30.590
Stato di successo e di errore del
caricamento mostrato quando i dati sono
ancora in fase di caricamento.

25
01:30.590 --> 01:36.750
Ad esempio, l'oggetto Attesa di una
chiamata di rete e dati viene utilizzato

26
01:36.750 --> 01:38.950
perché non ha bisogno di dati, ma è solo
uno stato singleton.

27
01:38.950 --> 01:46.630
Si può quindi notare che, se viene
utilizzato il costruttore UI state empty,
il secondo stato viene utilizzato con
successo.

28
01:46.630 --> 01:55.150
Quando i dati meteorologici vengono
caricati con successo, vengono trasportati
gli oggetti delle

29
01:55.190 --> 01:57.870
informazioni meteorologiche con la
temperatura, la città e la condizione o la
descrizione.

30
01:57.870 --> 02:02.830
L'ultimo stato è quello di errore,
utilizzato quando qualcosa va storto.

31
02:02.830 --> 02:09.470
L'assenza di internet o la città non
valida comportano un messaggio di errore
da mostrare all'utente.

32
02:09.510 --> 02:14.950
Ancora una volta, ragazzi, questo è lo
stato che mostra i progressi o il successo
del caricamento dello spinner.

33
02:14.950 --> 02:17.110
Mostra l'errore dei dati meteo.

34
02:17.150 --> 02:20.230
Mostra un messaggio di errore all'utente.

35
02:20.270 --> 02:22.710
Perché questo modello è fantastico.

36
02:22.710 --> 02:26.790
Rende la gestione degli stati
dell'interfaccia utente pulita, sicura e
leggibile.

37
02:26.790 --> 02:30.590
Nessun rischio di avere stati non validi o
non corrispondenti.

38
02:30.630 --> 02:38.190
Riduce i bug nelle dichiarazioni when,
perché il compilatore controlla tutti i
casi possibili.


