Flutter интеграција со јасна сопственост на контейнерот.

ProviderScope може да го поседува контейнерот или да го прими однадвор. Consumer API-ja ја задржуваат WidgetRef пристапноста усогласена со Riverpod стилот на код.

Сопственост на ProviderScope

Сопственоста на контейнерот ја менува одговорноста за ослободување.

Внатрешен контейнер

ProviderScope(child: ...) автоматски се ослободува

Надворешен контейнер

ProviderScope(container: c, ...) бара c.dispose() од повикувачот

Неконтролиран scope

UncontrolledProviderScope никогаш не го ослободува контейнерот

Честа замка

Во widget тестови, запомнете да го ослободите надворешно внесениот ProviderContainer за да избегнете преостанати timer leaks.

Consumer варијанти

Сите опции изложуваат WidgetRef; избирајте според стилот на widget-от и потребите за локална состојба.

Корен на апликацијата

Кога да се користи секој

Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.

Пример: ConsumerStatefulWidget

Користете ConsumerState кога ви требаат и WidgetRef и локална променлива UI состојба.

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-ите по frame, што ги намалува проблемите со setState за време на build.
Користете WidgetRef.watch само за вредности што треба да предизвикаат rebuild.
Чувајте ги side effects надвор од build; користете callbacks и invoke/refresh методи.

Следни чекори

Тестирање

Потврдете го lifecycle-от на контейнерот, override-ите и async ажурирањата во unit и widget тестови.

Отвори тестирање

API референца

Видете ги сигнатурите за ProviderScope, WidgetRef и методите на контейнерот.

Отвори API референца