Контейнерге нақты иелік ететін Flutter интеграциясы.
ProviderScope контейнерді иелене алады немесе оны сырттан қабылдай алады. Consumer API-лері WidgetRef қолжетімділігін Riverpod стиліндегі кодпен үйлесімді сақтайды.
ProviderScope иелігі
Контейнерге иелік ету жою жауапкершілігін өзгертеді.
Ішкі контейнер
ProviderScope(child: ...) автоматты түрде жойылады
Сыртқы контейнер
ProviderScope(container: c, ...) үшін шақырушы c.dispose() шақыруы қажет
Басқарылмайтын scope
UncontrolledProviderScope контейнерді ешқашан жоймайды
Жиі кездесетін қате
Widget тесттерінде сырттан берілген ProviderContainer-ды жоюды ұмытпаңыз, әйтпесе күтіліп тұрған таймерлердің ағып кетуі мүмкін.
Consumer нұсқалары
Барлық нұсқалар WidgetRef береді; таңдауды виджет стилі мен жергілікті күй қажеттілігіне қарай жасаңыз.
Қолданба түбірі
Әрқайсысын қашан қолдану керек
Consumer: шағын реактивті аймақтарға арналған жергілікті құрастырушы блогы.
ConsumerWidget: build(context, ref) бар күйсіз виджет.
ConsumerStatefulWidget: ConsumerState ішіндегі ref-і бар күйлі виджет.
Мысал: 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),
),
],
);
}
}
Келесі қадамдар
Тестілеу
Контейнердің өмірлік циклі, override-тар және асинхронды жаңартуларды unit және widget тесттерінде тексеріңіз.
Тестілеуге өтуAPI анықтамасы
ProviderScope, WidgetRef және контейнер әдістерінің қолтаңбаларын қараңыз.
API анықтамасын ашу