ANÚNCIO

~/questoes/programacao

Qual widget é mais comum para consumir providers no Riverpod?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Criando um aplicativo Flutter do zero usando Riverpod
Para fixar

ConsumerWidget: o caminho para consumir providers no Riverpod

Conceito central

ConsumerWidget é o widget fundamental do Riverpod para acessar e reagir a mudanças de providers. Ele recebe um parâmetro especial chamado `ref` que permite ler valores de qualquer provider e automaticamente reconstruir a interface quando esses valores mudam.

Por que essa resposta faz sentido

ConsumerWidget é a escolha correta porque oferece uma forma simples e type-safe de acessar providers através do parâmetro `ref`. Qualquer dado de um provider fica imediatamente disponível no build method, e o widget se reconstrói automaticamente quando o provider muda.

Armadilhas comuns

  • Confundir ConsumerWidget com StatelessWidget comum e tentar acessar providers sem o parâmetro `ref`.
  • Pensar que apenas StateProvider funciona com ConsumerWidget, quando na verdade qualquer tipo de provider é suportado.
  • Usar widgets padrão do Flutter como ValueListenableBuilder ou StreamBuilder quando ConsumerWidget ofereceria uma solução mais integrada e clara.

Entenda as alternativas

A

ValueListenableBuilder é um widget padrão do Flutter que funciona com ValueListenable, não é específico do Riverpod e não oferece suporte integrado para todos os tipos de providers.

B

ConsumerWidget é exatamente isso: um widget que estende StatelessWidget e adiciona o parâmetro `ref` no build method, permitindo consumir qualquer tipo de provider com uma sintaxe limpa e reativa.

C

StreamBuilder é um widget padrão do Flutter para trabalhar com streams, não é específico do Riverpod e não oferece suporte nativo automático para providers do framework.

D

InheritedWidget é um conceito fundamental do Flutter, mas não é a solução padrão do Riverpod. O Riverpod foi criado justamente para oferecer uma abstração melhor e mais flexível que InheritedWidget.

Dica prática: Na prática, comece sempre com ConsumerWidget quando precisar ler um provider. A assinatura é simples: `Widget build(BuildContext context, WidgetRef ref)`. Use `ref.watch(seuProvider)` para ler e reagir a mudanças.

Revise pensando: Se você precisa exibir um valor de um provider em um widget e quer que a tela se atualize automaticamente quando esse valor muda, qual widget você escolheria e por quê?