WEBVTT

1
00:01.070 --> 00:03.560
La nostra app attuale ha un problema.

2
00:03.560 --> 00:10.220
Se l'utente fa clic sul pulsante, il
contatore viene incrementato e

3
00:10.250 --> 00:12.740
visualizzato normalmente nel logcat, ma
non viene aggiornata l'interfaccia utente.

4
00:12.770 --> 00:18.380
Quindi il contatore qui, che è un testo
componibile, non viene aggiornato.

5
00:18.410 --> 00:22.730
Ciò è dovuto all'assenza di oggetti di
stato.

6
00:22.730 --> 00:30.470
Si noti che non tutti i valori avviano una
ricomposizione quando cambiano.

7
00:30.500 --> 00:33.050
Solo gli Stati possono farlo.

8
00:33.080 --> 00:36.260
Qui stiamo modificando il conteggio delle
variabili.

9
00:36.260 --> 00:41.000
Ma count è una variabile normale, non un
oggetto di stato.

10
00:41.000 --> 00:46.190
Vorrei che vi concentraste con me per
capire la relazione tra stato e UI.

11
00:46.220 --> 00:48.740
Questa è l'interfaccia utente e questo è
lo stato.

12
00:48.770 --> 00:53.240
Pensate a uno stato superiore, un livello
superiore che è uno stato.

13
00:53.240 --> 01:01.160
Ogni modifica dell'interfaccia utente
influisce sullo stato e ogni modifica
dello stato influisce sull'interfaccia
utente.

14
01:01.170 --> 01:07.350
Ogni applicazione interattiva ha dati
sottostanti che guidano le modifiche
dell'interfaccia utente.

15
01:07.350 --> 01:13.320
Compose fornisce uno stato di sola lettura
e uno stato immutabile che viene letto.

16
01:13.320 --> 01:14.940
Scrivere gli oggetti.

17
01:14.940 --> 01:23.190
Pensate al contatore, che è il testo
dell'interfaccia utente e il testo
dell'applicazione, e al conteggio dei
valori.

18
01:23.190 --> 01:27.510
Ricorda lo stato mutabile di zero, che è
un oggetto di stato.

19
01:27.510 --> 01:35.700
Si tratta di un oggetto di stato
contenente numeri interi, e questa è

20
01:35.700 --> 01:39.600
la relazione tra l'oggetto di stato count
text composable e count variable mutable.

21
01:39.600 --> 01:48.900
Qualsiasi modifica dello stato mutabile da
0 a 1, ad

22
01:48.900 --> 01:49.470
esempio, rifletterà il testo del conteggio
componibile nell'interfaccia utente.

23
01:49.500 --> 01:52.980
Questo è ciò di cui abbiamo bisogno nella
nostra applicazione.

24
01:52.980 --> 02:01.500
Qualsiasi cambiamento nel conteggio deve
essere riflesso nell'interfaccia utente

25
02:01.500 --> 02:02.870
e qualsiasi cambiamento nell'interfaccia
utente deve riflettere lo stato.

26
02:02.870 --> 02:08.660
Per farlo, utilizzeremo gli oggetti di
stato.

27
02:08.660 --> 02:16.460
Voglio che vi concentriate con me perché è
una nota molto

28
02:16.460 --> 02:18.650
importante e queste lezioni e questa
sezione sono molto importanti.

29
02:18.650 --> 02:24.950
E molti sviluppatori hanno problemi con lo
stato per creare uno stato.

30
02:24.950 --> 02:27.290
Non c'è nulla di complicato.

31
02:27.290 --> 02:34.550
È sufficiente chiamare la funzione mutable
state, che restituisce un osservabile di
tipo mutable state.

32
02:34.580 --> 02:42.170
Qui lo cambierò in var count mutable state
of and.

33
02:42.170 --> 02:51.020
In Kotlin, l'interfaccia è un modo per
definire un

34
02:51.020 --> 02:55.760
contratto a cui altre classi o interfacce
devono aderire.

35
02:55.790 --> 03:03.990
In questo codice, lo stato mutabile è
un'interfaccia che estende un'altra
interfaccia, che è lo stato.

36
03:04.020 --> 03:10.080
L'interfaccia state definisce
probabilmente un valore di proprietà di
sola lettura di tipo T.

37
03:10.290 --> 03:18.000
Ora lo stato mutabile estende lo stato e
aggiunge la mutabilità alla proprietà
value.

38
03:18.030 --> 03:27.030
Dichiara che qualsiasi classe che
implementa lo stato mutabile deve

39
03:27.030 --> 03:27.810
fornire una proprietà scrivibile
denominata value di tipo T.

40
03:27.840 --> 03:36.750
È necessario capire che qualsiasi classe
che implementa lo stato mutabile deve
fornire sia un

41
03:36.750 --> 03:42.330
getter che un setter per la proprietà
value, consentendone la lettura e la
modifica.

42
03:42.360 --> 03:47.580
È utile per rappresentare dati statici che
possono essere modificati nel tempo.

43
03:47.580 --> 03:55.440
Lo stato mutabile di è una funzione
chiamata che tipicamente proviene dalla
State Library di

44
03:55.440 --> 03:59.730
Jetpack Compose, un moderno toolkit UI per
la costruzione di interfacce utente native
per Android.

45
03:59.760 --> 04:06.940
Questa funzione crea un supporto di stato
immutabile che avvolge

46
04:06.940 --> 04:09.220
il valore iniziale fornito, che in questo
caso è zero.

47
04:09.250 --> 04:17.560
Stato essenzialmente mutabile che crea un
contenitore per contenere un valore che
può essere modificato nel tempo.

48
04:17.560 --> 04:23.110
Il valore iniziale in questo caso è zero e
viene passato come argomento,

49
04:23.110 --> 04:26.080
mentre il valore all'interno del
contenitore può essere aggiornato
successivamente nel programma.

50
04:26.080 --> 04:33.400
È comunemente usato in Jetpack Compose per
gestire lo stato dei componenti

51
04:33.400 --> 04:35.200
dell'interfaccia utente e per attivare la
ricomposizione quando lo stato cambia.

52
04:35.200 --> 04:43.450
Quindi, per utilizzare lo stato mutabile
di e utilizzare il contatore, dobbiamo
utilizzare il valore del punto.

53
04:43.450 --> 04:50.500
E qui dobbiamo ottenere il valore, perché
abbiamo usato lo stato mutabile.

54
04:50.500 --> 04:57.160
Quindi è necessario impostarlo e
utilizzare il valore invece di usare
direttamente la variabile.

55
04:57.160 --> 05:00.370
Eseguiamo la nostra applicazione ed eccoci
qui.

56
05:00.400 --> 05:02.440
Questa è la nostra bella applicazione.

57
05:02.440 --> 05:08.270
Qui si usa lo stato, che è lo stato
mutabile di e il valore iniziale è zero.

58
05:08.300 --> 05:10.790
Ora proviamo ad aumentare il contatore.

59
05:10.820 --> 05:11.660
Fare clic su di esso.

60
05:11.690 --> 05:12.200
Ops.

61
05:12.230 --> 05:18.740
Non viene aggiornata né l'interfaccia
utente né il Lookat e la variabile
all'interno dell'elemento.

62
05:18.740 --> 05:20.720
Guardate cosa sta succedendo.

63
05:20.720 --> 05:29.090
Poiché c'è un errore nel codice
precedente, è necessario

64
05:29.090 --> 05:29.750
sapere che la ricomposizione può avvenire
in qualsiasi momento.

65
05:29.750 --> 05:37.940
Il contatore componibile può essere
ricomposto in qualsiasi momento e quando
si modifica la variabile del conteggio, la

66
05:37.940 --> 05:45.800
funzione del contatore può essere
ricomposta e verrà eseguita di nuovo, il
che significa che tutto il codice

67
05:45.800 --> 05:53.750
al suo interno verrà rieseguito e che il
conteggio delle conseguenze verrà
reimpostato su 0 o 1.

68
05:53.750 --> 06:01.100
Come si fa a ricordare uno stato anche
quando la funzione viene rieseguita?


