Flutter integráció explicit container-ownership mellett.

A ProviderScope birtokolhat egy containert, vagy kaphat egyet kívülről. A Consumer API-k a WidgetRef elérést a Riverpod-stílusú kóddal kompatibilisen tartják.

ProviderScope ownership

A container ownership megváltoztatja a dispose felelősségét.

Belső container

ProviderScope(child: ...) automatikusan dispose-olódik

Külső container

ProviderScope(container: c, ...) esetén a hívónak kell meghívnia a c.dispose()-t

Nem felügyelt scope

Az UncontrolledProviderScope soha nem dispose-olja a containert

Gyakori hiba

Widget tesztekben ne felejtse el dispose-olni a kívülről injektált ProviderContainert, hogy elkerülje a függőben maradt timer leakeket.

Consumer variánsok

Minden opció WidgetRefet biztosít; a widget stílusa és a helyi állapot igényei alapján válasszon.

Alkalmazás gyökere

Mikor melyiket használja

Consumer: helyi builder blokk kis reaktív területekhez.
ConsumerWidget: stateless widget build(context, ref) metódussal.
ConsumerStatefulWidget: stateful widget, amelyben a ref a ConsumerState-en belül érhető el.

Példa: ConsumerStatefulWidget

Használja a ConsumerState-et, amikor egyszerre van szüksége WidgetRefre és helyi, módosítható UI-állapotra.

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),
        ),
      ],
    );
  }
}
A Consumer belső működése a rebuildet post-frame-re ütemezi, így csökkenti a setState-during-build problémákat.
A WidgetRef.watch-ot csak olyan értékeknél használja, amelyeknek rebuildet kell kiváltaniuk.
A side effecteket tartsa a builden kívül; használjon callbackeket és invoke/refresh metódusokat.

Következő lépések

Tesztelés

Ellenőrizze a container életciklusát, az override-okat és az aszinkron frissítéseket unit és widget tesztekben.

Tesztelés megnyitása

API referencia

Nézze meg a ProviderScope, a WidgetRef és a container metódusok szignatúráit.

API referencia megnyitása