Интегратсияи Flutter бо моликияти дақиқи контейнер.
ProviderScope метавонад контейнерро соҳиб шавад ё онро аз берун қабул кунад. API-ҳои Consumer дастрасии WidgetRef-ро бо коди услуби Riverpod мувофиқ нигоҳ медоранд.
Моликияти ProviderScope
Моликияти контейнер масъулияти бекоркуниро тағйир медиҳад.
Контейнери дохилӣ
ProviderScope(child: ...) ба таври худкор бекор мешавад
Контейнери берунӣ
ProviderScope(container: c, ...) аз ҷониби даъваткунанда c.dispose()-ро талаб мекунад
Миқёси беназорат
UncontrolledProviderScope ҳеҷ гоҳ контейнерро бекор намекунад
Мушкили маъмул
Дар санҷишҳои видҷетӣ фаромӯш накунед, ки ProviderContainer-и аз берун воридшударо бекор кунед, то ихроҷи таймерҳои дар навбатмонда пешгирӣ шавад.
Вариантҳои Consumer
Ҳамаи вариантҳо WidgetRef-ро пешниҳод мекунанд; вобаста ба услуби виджет ва ниёзҳои ҳолати маҳаллӣ интихоб кунед.
Решаи барнома
Кай кадомашро истифода бурдан лозим
Consumer: блоки маҳаллии builder барои минтақаҳои хурди реактивӣ.
ConsumerWidget: видҷети бетағйир бо build(context, ref).
ConsumerStatefulWidget: видҷети ҳолатдор бо ref дар дохили ConsumerState.
Намуна: ConsumerStatefulWidget
Ҳангоме ки ба шумо ҳам WidgetRef ва ҳам ҳолати тағйирёбандаи маҳаллии UI лозим аст, ConsumerState-ро истифода баред.
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),
),
],
);
}
}
Қадамҳои баъдӣ
Provider
Давраи ҳаёти контейнер, override-ҳо ва навсозиҳои асинхронро дар санҷишҳои воҳидӣ ва видҷетӣ санҷед.
Санҷишҳоро кушоед