Arhitectura Fundamentală a Widget-urilor în Flutter: Stateless vs Stateful și Ciclul de Viață al State-ului în Flutter

Ghid complet pentru widget-urile Flutter: diferențele dintre StatelessWidget și StatefulWidget, ciclul de viață complet al State (initState, didUpdateWidget, dispose) și chei unice (Keys).

Sintaxă
class MyWidget extends StatefulWidget { @override State createState() => ... }

Înțelegerea diferenței dintre un StatelessWidget (care depinde doar de datele de configurare primite și nu își schimbă niciodată starea internă) și un StatefulWidget (care menține o instanță de State persistentă pe durata vieții ecranului) este primul pas în stăpânirea Flutter.

Ciclul de Viață al unui StatefulWidget
class LifecycleDemo extends StatefulWidget {
  const LifecycleDemo({super.key});

  @override
  State createState() => _LifecycleDemoState();
}

class _LifecycleDemoState extends State {
  @override
  void initState() {
    super.initState();
    // 1. Inițializare unică: pornire stream-uri, listeneri, cereri HTTP
    print('initState: Ecranul a fost montat în arbore.');
  }

  @override
  void dispose() {
    // 2. Curățare obligatorie: eliberare controllere și stream-uri pentru a evita memory leaks!
    print('dispose: Ecranul este distrus.');
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}