Контейнерге ачык ээлик кылган 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),
        ),
      ],
    );
  }
}
Consumer'дун ички иштөөсү rebuild'дерди кадрдан кийинки этапка пландаштырып, build учурунда setState чакыруудан чыккан көйгөйлөрдү азайтат.
WidgetRef.watchту rebuild жаратышы керек болгон маанилер үчүн гана колдонуңуз.
Жанама таасирлерди build'дин сыртында кармаңыз; callback'терди жана invoke/refresh ыкмаларын колдонуңуз.

Кийинки кадамдар

Тестирлөө

Контейнердин жашоо циклин, override'дорду жана async жаңыртууларды unit жана widget тесттеринде текшериңиз.

Тесттерди ачуу

API шилтемеси

ProviderScope, WidgetRef жана container ыкмаларынын кол тамгаларын караңыз.

API шилтемесин ачуу