🌊
[Flutter/Riverpod]ProviderScopeの使いかた
やりたいこと
Classごとに書いていたSwitch文を、mainスクリーンのファイルでまとめて書き、
条件式の処理を一回にする
書いていたコード
class ScreenCondition extends ConsumerWidget {
const ScreenCondition({
Key? key,
required this.id,
}) : super(key: key);
final int id;
Widget build(BuildContext context, WidgetRef ref) {
final d = ref.watch(articleProvider);
return ProviderScope(
overrides: [
articleProvider.overrideWithProvider(articleProviderFamily(id))
],
child:
switch.....
エラー内容
switch文以降がDead errorとなった。
調べたこと
Flutterの公式Documentを確認したところ、
ProviderScopeのchildにはWidgetを入れる必要があるそう。
解決方法
もう一つClassを作成し、switch文をそこで書いた。
そのClassをmainスクリーンのProviderScopeのchildに入れた。
以下コード
switch用のClass
class ScreenCondition extends ConsumerWidget {
const ScreenCondition({
Key? key,
}) : super(key: key);
Widget build(BuildContext context, WidgetRef ref) {
final d = ref.watch(articleProvider);
switch.....
mainスクリーン
class ArticleScreen extends ConsumerWidget {
const ArticleScreen({
Key? key,
required this.id,
}) : super(key: key);
final int id;
Widget build(BuildContext context, WidgetRef ref) {
return ProviderScope(
overrides: [
articleProvider.overrideWithProvider(articleProviderFamily(id))
],
child: const ScreenCondition(),
);
}
}
Discussion