FlutterでConsumerを使うときに型指定をせずに怒られた話

みなさんこんにちは!ひろぽんです!

いやーーFlutterはなんであんなに楽しいんやろか?というくらい楽しくて、日々ずっとコードを書いています!

そんなFlutterを程度かけるようになってくると、次のステップとしてFlutterでの状態管理をProviderでしようと思い始めると思います。

私もその1人なのですが、以前そのProviderでConsumerを使用する際に下記のような感じで怒られました。

Tried to call Provider.of<dynamic>. This is likely a mistake and is therefore
unsupported.

If you want to expose a variable that can be anything, consider changing
`dynamic` to `Object` instead.
'package:provider/src/provider.dart':
Failed assertion: line 307 pos 7: 'T != dynamic'

翻訳にかけると下記のような感じ。

Provider.of を呼び出そうとしました。 これは間違いである可能性が高いため、
サポートされていません。

何でもよい変数を公開したい場合は、変更を検討してください
代わりに「動的」から「オブジェクト」へ。
「パッケージ:プロバイダー/src/provider.dart」:
失敗したアサーション: 行 307 pos 7: ‘T != dynamic’

は??

って思っていろいろ調べて1時間はまりました。

原因は下記。

    return Consumer(builder: (_,model,__){

ConsumerでラップしたWidgetを返しているのですが、Consumerにジェネリック型指定をしていない!!!!!

下記のように修正したら無事ビルドは通りました。

    return Consumer<ProjectItemListViewModel>(builder: (_,model,__){

この記事が気に入ったら
いいねしてね!

どんどんシェア待ってるぜ!!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次