Установите miniriverpod за минуты.

Задайте ограничения SDK, добавьте пакет и убедитесь, что ProviderScope + WidgetRef.watch подключены правильно.

Требования

Используйте те же ограничения, что и у пакета, чтобы избежать несоответствий analyzer и runtime.

Dart SDK

>=3.10.0 <4.0.0

Flutter

Совет

Если ваше приложение закреплено ниже Dart 3.10, сначала поднимите ограничения SDK, затем выполните flutter pub get.

Установка

Предпочтите установку через CLI, затем держите версию в соответствии с changelog пакета.

CLI

pubspec.yaml

# Add to dependencies
dependencies:
  miniriverpod: ^0.0.2

Первые шаги

Оберните приложение в ProviderScope, определите Provider и отрисовывайте состояние из ConsumerWidget.

import 'package:flutter/widgets.dart';
import 'package:miniriverpod/miniriverpod.dart';

final counterProvider = Provider<int>((ref) => 0);

void main() {
  runApp(const ProviderScope(child: CounterApp()));
}

class CounterApp extends ConsumerWidget {
  const CounterApp({super.key});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final count = ref.watch(counterProvider);
    return Directionality(
      textDirection: TextDirection.ltr,
      child: Center(child: Text('$count')),
    );
  }
}
Используйте Provider((ref) => ...) для синхронных значений.
Используйте AsyncProvider<T>((ref) async => ...) для Future и ref.emit(stream) для Stream.
Перейдите на ref.invoke(provider.method()), когда будете реализовывать мутации.

Следующие шаги

Основные понятия

Поймите идентичность provider на основе args, инъекцию Scope и дизайнерские решения без codegen.

Открыть основные понятия

Providers и чтение

Изучите поведение watch/read/listen и паттерны обновления AsyncProvider.

Открыть providers

API Reference

Быстро находите методы вроде invalidate, refreshValue, keepAlive и invoke.

Открыть API Reference