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),
),
],
);
}
}
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ásaAPI referencia
Nézze meg a ProviderScope, a WidgetRef és a container metódusok szignatúráit.
API referencia megnyitása