Instale o miniriverpod em minutos.

Defina as restrições do SDK, adicione o pacote e confirme que ProviderScope + WidgetRef.watch estão conectados corretamente.

Requisitos

Use as mesmas restrições do pacote para evitar divergências entre o analyzer e o runtime.

Dart SDK

>=3.10.0 <4.0.0

Flutter

Dica

Se o seu app estiver fixado abaixo do Dart 3.10, aumente primeiro as restrições do SDK e depois execute flutter pub get.

Instalação

Prefira a instalação via CLI e depois mantenha a versão alinhada ao changelog do pacote.

CLI

pubspec.yaml

# Add to dependencies
dependencies:
  miniriverpod: ^0.0.2

Primeiros passos

Envolva seu app em ProviderScope, defina um Provider e renderize estado a partir de 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')),
    );
  }
}
Use Provider((ref) => ...) para valores síncronos.
Use AsyncProvider<T>((ref) async => ...) para Future e ref.emit(stream) para Stream.
Mude para ref.invoke(provider.method()) quando implementar mutations.

Próximos passos

Conceitos básicos

Entenda a identidade de provider baseada em args, a injeção de Scope e as escolhas de design sem codegen.

Abrir conceitos básicos

Providers e leituras

Aprenda o comportamento de watch/read/listen e os padrões de refresh do AsyncProvider.

Abrir providers

Referência da API

Localize rapidamente métodos como invalidate, refreshValue, keepAlive e invoke.

Abrir referência da API