Контейнерге ачык ээлик кылган Flutter интеграциясы.
ProviderScope контейнерди өзү башкара алат же аны сырттан кабыл алат. Consumer API'лери WidgetRef'ке жеткиликтүүлүктү Riverpod стилиндеги код менен шайкеш сактайт.
ProviderScope ээлиги
Контейнерге ээлик кылуу жоюу жоопкерчилигин өзгөртөт.
Ички контейнер
ProviderScope(child: ...) автоматтык түрдө жоюлат
Сырткы контейнер
ProviderScope(container: c, ...) үчүн чакыруучу c.dispose() кылышы керек
Башкарылбаган scope
UncontrolledProviderScope контейнерди эч качан жойбойт
Көп кездешкен ката
Widget тесттеринде сырттан берилген ProviderContainer'ды жоюуну унутпаңыз, болбосо күтүлүп жаткан таймерлер агып кетиши мүмкүн.
Consumer түрлөрү
Бардык варианттар WidgetRef чыгарат; тандоону виджет стили жана жергиликтүү абал муктаждыгына жараша жасаңыз.
Колдонмонун түпкү каталогу
Ар бирин качан колдонуу керек
Consumer: чакан реактивдүү аймактар үчүн жергиликтүү builder блогу.
ConsumerWidget: build(context, ref) менен stateless widget.
ConsumerStatefulWidget: ConsumerState ичинде ref'и бар stateful widget.
Мисал: 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'дорду жана async жаңыртууларды unit жана widget тесттеринде текшериңиз.
Тесттерди ачууAPI шилтемеси
ProviderScope, WidgetRef жана container ыкмаларынын кол тамгаларын караңыз.
API шилтемесин ачуу