Integrare Flutter cu proprietate explicită a containerului.

ProviderScope poate deține un container sau îl poate primi din exterior. API-urile Consumer păstrează accesul la WidgetRef compatibil cu codul de stil Riverpod.

Proprietatea ProviderScope

Proprietatea containerului schimbă responsabilitatea pentru eliberare.

Container intern

ProviderScope(child: ...) se eliberează automat

Container extern

ProviderScope(container: c, ...) necesită c.dispose() din partea apelantului

Scop necontrolat

UncontrolledProviderScope nu eliberează niciodată containerul

Capcană frecventă

În testele de widget, nu uita să eliberezi ProviderContainer injectat din exterior pentru a evita scurgerile de timere în așteptare.

Variante de Consumer

Toate opțiunile expun WidgetRef; alege în funcție de stilul widget-ului și de nevoile de stare locală.

Rădăcina aplicației

Când să le folosești

Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.

Exemplu: ConsumerStatefulWidget

Folosește ConsumerState când ai nevoie atât de WidgetRef, cât și de stare UI locală, mutabilă.

class HomePage extends ConsumerStatefulWidget {
  const HomePage({super.key});

  @override
  ConsumerState<HomePage> createState() => _HomePageState();
}

class _HomePageState extends ConsumerState<HomePage> {
  bool expanded = false;

  @override
  Widget build(BuildContext context) {
    final user = ref.watch(currentUser);
    return Column(
      children: [
        Text('$user'),
        Switch(
          value: expanded,
          onChanged: (v) => setState(() => expanded = v),
        ),
      ],
    );
  }
}
Internele Consumer programează reconstrucțiile pentru post-frame, reducând problemele setState în timpul build-ului.
Folosește WidgetRef.watch doar pentru valorile care ar trebui să declanșeze reconstrucții.
Păstrează efectele secundare în afara build-ului; folosește callback-uri și metodele invoke/refresh.

Pașii următori

Testare

Validează ciclul de viață al containerului, suprascrierile și actualizările asincrone în teste unitare și de widget.

Deschide testarea

Referință API

Vezi semnăturile pentru ProviderScope, WidgetRef și metodele containerului.

Deschide referința API