5. Dicas de Desempenho e Arquitetura
Reutilização do Cache
Vários widgets podem acessar o mesmo provedor:
ref.watch(
productsByCategoryProvider(
cat.id,
),
);A API é executada apenas uma vez.
Riverpod reutiliza o resultado do cache.
Invalidando Provedores de Família
Invalidar um parâmetro específico:
ref.invalidate(
productsByCategoryProvider(
'electronics',
),
);Invalidar toda a família:
ref.invalidate(
productsByCategoryProvider,
);Múltiplos Parâmetros com Registros
Os registros do Dart 3 funcionam perfeitamente com family.
final filteredProductsProvider =
FutureProvider.family<
List<Product>,
(String, SortOrder)
>((ref, params) {
final (
categoryId,
sortOrder,
) = params;
return ref
.read(
productRepositoryProvider,
)
.fetchByCategory(
categoryId,
sortBy: sortOrder,
);
});Uso:
ref.watch(
filteredProductsProvider(
(
'electronics',
SortOrder.newest,
),
),
);Os registros usam igualdade de valor, tornando-os ideais para provedores de família.

