🌊

[Flutter/Riverpod]ProviderScopeの使いかた

2022/05/21に公開

やりたいこと

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を入れる必要があるそう。
https://pub.dev/documentation/flutter_riverpod/latest/flutter_riverpod/ProviderScope-class.html

解決方法

もう一つ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(),
  );
}
}

パラグアイでFlutter勉強してます🇵🇾
Twitter

GitHubで編集を提案

Discussion