Контейнерге нақты иелік ететін 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),
        ),
      ],
    );
  }
}
Consumer ішкі механикасы қайта құруларды кадрдан кейінге жоспарлайды, бұл build кезінде setState шақыру мәселелерін азайтады.
WidgetRef.watch-ты тек қайта құруды тудыруы тиіс мәндер үшін ғана қолданыңыз.
Жанама әсерлерді build-тен тыс ұстаңыз; кері шақырулар мен invoke/refresh әдістерін қолданыңыз.

Келесі қадамдар

Тестілеу

Контейнердің өмірлік циклі, override-тар және асинхронды жаңартуларды unit және widget тесттерінде тексеріңіз.

Тестілеуге өту

API анықтамасы

ProviderScope, WidgetRef және контейнер әдістерінің қолтаңбаларын қараңыз.

API анықтамасын ашу