Riverpodでスコープを意識したProviderを作る
code:dart
// Widgetを書くファイル
typedef _Providers = FooProviders;
class FooComponent extends ConsumerWidget {
...
@override
Widget build(BuildContext context, WidgetRef ref) {
final value = ref.watch(_Providers.fooValue);
...
}
}
code:dart
// Providerを書くファイル
class FooProviders {
static final fooValue = Provider.autoDispose((ref) => 42);
}
Providerは基本的にグローバルに宣言するものだけど、とはいえそれだと同じような名前のProviderを別の箇所で宣言したいときに困る(そういう状況は実は回避すべきなのかもしれないが)というときに使う。
これなら実質グローバルなのでテスタビリティは変わらないし、命名もかなり自由になる