Android Academy · Oppitunti

Tila remember- ja mutableStateOf-funktioilla

Säilyttäkää käyttöliittymän tila composableissa.

Oppitunti 1/413 vaihetta

Tila remember- ja mutableStateOf-funktioilla on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mitä tila on?

Tila on mikä tahansa arvo, joka voi muuttua ajan myötä ja johon käyttöliittymän tulisi reagoida — esimerkiksi laskuri, tekstikentän sisältö tai valintaruudun tila. Kun tila muuttuu, Compose piirtää käyttöliittymän uudelleen.

mutableStateOf

mutableStateOf luo havainnoitavan arvon. Kun kirjoitatte siihen uuden arvon, Compose tietää suorittaa uudelleen kaikki composable-funktiot, jotka lukivat kyseistä arvoa.

val count = mutableStateOf(0)
// read with count.value, write with count.value = 1

Miksi remember?

Composable-funktioita voidaan suorittaa monta kertaa (uudelleenkokoonpano). Jos luotte tilan jokaisella suorituskerralla, se nollautuu aina. remember käskee Composea säilyttämään arvon uudelleenkokoonpanojen välillä.

val count = remember { mutableStateOf(0) }

by-delegaatti

.value-ominaisuuden lukeminen ja kirjoittaminen kaikkialla tekee koodista raskassoutuista. Kotlinin by-ominaisuusdelegaatti antaa käsitellä tilaa tavallisen muuttujan tavoin.

var count by remember { mutableStateOf(0) }
// now use count directly, no .value

Tarvittavat importit

by-delegaattia varten importoikaa getter- ja setter-apufunktiot. Android Studio lisää ne automaattisesti.

import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember

Laskuri-composable

Tässä on toimiva laskuri. Painikkeen napauttaminen kasvattaa count-arvoa, ja Text päivittyy automaattisesti.

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Button(onClick = { count++ }) {
        Text(text = "Count: $count")
    }
}

Lukeminen käynnistää päivityksen

Taika piilee siinä, että Text lukee arvon count. Compose tallentaa tämän lukemisen, joten kun count muuttuu, vain kyseinen osa muodostetaan uudelleen ja uusi arvo näytetään.

Tila voi sisältää minkä tahansa tyypin

Tila ei ole tarkoitettu vain numeroille. Voitte tallentaa siihen String- tai Boolean-arvon, listan tai oman dataluokkanne.

var name by remember { mutableStateOf("") }
var isOn by remember { mutableStateOf(false) }

TextField ja tila

Muokattava tekstikenttä tarvitsee nykyiselle arvolleen tilan sekä takaisinsoittokutsun, joka päivittää sitä.

var text by remember { mutableStateOf("") }
TextField(
    value = text,
    onValueChange = { text = it }
)

Tila on paikallinen

remember-funktiolla luotu tila sijaitsee composable-funktion sisällä. Kummallakin kahdesta Counter()-kutsusta on oma toisistaan riippumaton laskurinsa.

Kokonainen esimerkki

Valmis laskurinäkymä, jossa yhdistyvät kaikki tämän oppitunnin aiheet.

@Composable
fun CounterScreen() {
    var count by remember { mutableStateOf(0) }
    Column {
        Text(text = "You tapped $count times")
        Button(onClick = { count++ }) {
            Text(text = "Tap")
        }
    }
}

Pikatarkistus

Miksi mutableStateOf ympäröidään remember-funktiolla?

Kertaus

Tilan perusteet:

  • mutableStateOf luo havainnoitavan arvon.
  • remember säilyttää sen uudelleenkokoonpanojen välillä.
  • by mahdollistaa .value-ominaisuuden ohittamisen.
  • Tilan lukeminen liittää composable-funktion seuraamaan sen muutoksia.
Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
36
Oppitunnit
152

Usein kysytyt kysymykset

Onko oppitunti ”Tila remember- ja mutableStateOf-funktioilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tila remember- ja mutableStateOf-funktioilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tila remember- ja mutableStateOf-funktioilla”?

Säilyttäkää käyttöliittymän tila composableissa. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Tila remember- ja mutableStateOf-funktioilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?

Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tila remember- ja mutableStateOf-funktioilla
  2. Rekomposition selitys
  3. Tilan nostaminen
  4. rememberSaveable
← Takaisin: Android Academy