Sobes.tech
Middle

Do czego służą klucze w Flutterze?

sobes.tech AI

Odpowiedź od AI

Klucze są używane do identyfikacji widżetów i elementów w drzewie widżetów Flutter. Jest to ważne dla:

  • Aktualizacji widżetów: Flutter używa kluczy do określenia, czy należy przebudować widżet, czy po prostu zaktualizować jego istniejący egzemplarz. Jeśli klucz widżetu się nie zmienia, a jego dane są aktualizowane, Flutter ponownie używa i aktualizuje istniejący element zamiast tworzyć nowy.
  • Zachowania stanu: Klucze pozwalają zachować stan widżetów podczas ich przemieszczania się w drzewie widżetów lub podczas zmiany kolejności elementów potomnych na liście.
  • Wydajności: Użycie kluczy pomaga Flutterowi zoptymalizować proces renderowania, unikając niepotrzebnych przebudów elementów.

Istnieją różne typy kluczy:

  • LocalKey: Podstawowa klasa dla kluczy, unikalnych w obrębie nadrzędnego widżetu.
    • ValueKey<T>: Używa konkretnej wartości (String, int itp.) jako unikalnego identyfikatora.
    • ObjectKey: Używa odwołania do obiektu jako unikalnego identyfikatora.
  • GlobalKey: Globalnie unikalne klucze w skali całej aplikacji. Używane do dostępu do stanu widżetu z dowolnego miejsca lub do zachowania stanu widżetu podczas jego przenoszenia na inne ekrany.
    • GlobalKey<T extends State<StatefulWidget>>: Do dostępu do stanu StatefulWidget.
    • GlobalKey: Do innych globalnych identyfikatorów.

Przykład użycia ValueKey w ListView do zachowania stanu elementów listy:

ListView.builder(
  itemCount: items.length,
  itemBuilder: (context, index) {
    final item = items[index];
    return Dismissible(
      key: ValueKey(item.id), // Unikalny klucz dla każdego elementu
      onDismissed: (direction) {
        // Usunięcie elementu
      },
      child: ListTile(title: Text(item.name)),
    );
  },
);