🐸
【Flutter】Riverpod2 で ProviderFamily を overrideWith する方法
riverpod2 の ProviderFamily は次のように overrideWith
できます!
final normalExampleProvider = Provider.family.autoDispose<int, int>(
(ref, id) {
return id;
},
);
// こうやって使う
normalExampleProvider.overrideWith((ref, id) => id + 1),
しかし、 riverpod_generator を使うとうまくいきません。。。
パラメータを指定すればできる
riverpod_generator を使っている場合は、パラメータを指定すれば overrideWith
できます!
generateExample(GenerateExampleRef ref, {required int id}) {
return id;
}
// こうやって使う
generateExampleProvider(id: 1).overrideWith((ref) => ref.id + 1),
int
riverpod_generator 2.3.0 未満は ref
からパラメータにアクセスできませんが、次のようにやればできます!公式な方法ではないので自己責任でお願いします!
2.3.0 未満
// 2.3.0 未満はこうやって使う
generateExampleProvider(id: 1).overrideWith((ref) {
final provider = (ref as AutoDisposeProviderElement).origin
as GenerateExampleProvider;
return provider.id + 1;
}),
こちらを参考にしました!
サンプルコードを公開しています
本記事で紹介したサンプルコードを公開しています!
最後に
Flutter 大学という Flutter エンジニアに特化した学習コミュニティに所属しています。オンラインでわいわい議論したり、Flutter の最新情報をゲットしたりできます!ぜひ Flutter 界隈を盛り上げていきましょう!
Discussion