Sobes.tech
Middle

Kam skirti raktai Flutter?

sobes.tech AI

Atsakymas iš AI

Rakteliai naudojami widget'ų ir elementų identifikavimui Flutter medyje. Tai svarbu:

  • Widget'ų atnaujinimas: Flutter naudoja raktus nustatyti, ar reikia perstatyti widget'ą ar tiesiog atnaujinti esamą jo egzempliorių. Jei widget'o raktas nesikeičia, o jo duomenys atnaujinami, Flutter pakartotinai naudoja ir atnaujina esamą elementą vietoje naujo sukūrimo.
  • Būsenos išsaugojimas: Raktai leidžia išsaugoti widget'ų būseną jų medyje arba keičiant vaikų elementų tvarką sąraše.
  • Efektyvumas: Raktų naudojimas padeda Flutter optimizuoti atvaizdavimo procesą, išvengiant nereikalingų perstatymų.

Yra skirtingų raktų tipų:

  • LocalKey: pagrindinė klasė raktams, unikali tėviniame widget'e.
    • ValueKey<T>: naudoja konkretų reikšmę (String, int ir kt.) kaip unikalų identifikatorių.
    • ObjectKey: naudoja nuorodą į objektą kaip unikalų identifikatorių.
  • GlobalKey: pasauliniai unikalūs raktai visame taikymo lauke. Naudojami prieigos prie widget'o būsenos iš bet kurios taško arba būsenos išsaugojimui, kai widget'as perkeliama į kitus ekranus.
    • GlobalKey<T extends State<StatefulWidget>>: prieiga prie StatefulWidget būsenos.
    • GlobalKey: kitiems globaliems identifikatoriams.

Pavyzdys, kaip naudoti ValueKey ListView-e, kad būtų išsaugota sąrašo elementų būseną:

ListView.builder(
  itemCount: items.length,
  itemBuilder: (context, index) {
    final item = items[index];
    return Dismissible(
      key: ValueKey(item.id), // Unikalus raktas kiekvienam elementui
      onDismissed: (direction) {
        // Elemento ištrynimas
      },
      child: ListTile(title: Text(item.name)),
    );
  },
);