dart final kiedy

W Dartcie słowo kluczowe final oznacza, że wartość zmiennej można
przypisać tylko raz – ale sam obiekt może być modyfikowalny (np. lista), o
ile nie jest też const.
Kiedy używać final?
Najczęstsze przypadki:
- Gdy znasz wartość tylko raz, ale dopiero w czasie działania programu (runtime), np. wynik funkcji, odczyt z API,
DateTime.now(), itp.
- Gdy chcesz uniknąć przypadkowych ponownych przypisań i potraktować zmienną jako „tylko do odczytu” po inicjalizacji.
- W klasach – dla pól, które powinny być ustawione w konstruktorze i później już się nie zmieniać (np.
final String id;).
Przykład:
dart
final now = DateTime.now(); // OK – przypisanie raz
// now = DateTime.now(); // Błąd – nie można przypisać ponownie
final vs var vs const
var– można przypisywać wiele razy ; typ jest inferowany, ale wartość zmienna.
final– przypisanie tylko raz , ale obiekt może być mutowalny (np. lista, mapa).
const– wartość znana w czasie kompilacji; obiekt jest niemutowalny i współdzielony (compile‑time constant).
Przykład różnicy:
dart
final list = [1, 2, 3];
list.add(4); // OK – modyfikujesz zawartość
// list = [1, 2]; // Błąd – nie można przypisać nowej listy
const clist = [1, 2, 3];
// clist.add(4); // Błąd – const lista jest niemutowalna
Jak to zapamiętać?
- Używaj
final, gdy: „ustawiam raz, potem tylko czytam”. - Używaj
const, gdy: „wartość jest znana w compile‑time i nigdy się nie zmieni”. - Używaj
var, gdy: „zmienna będzie zmieniać wartość w czasie działania programu”.
Jeśli chcesz, można przejść przez Twoje konkretne przykłady kodu i dobrać, czy
lepsze będzie final, var czy const.