現在のchannelではサポートされていないウィジェットだった
他の人が作ったプロジェクトを自分の環境で動かそうとすると、あるウィジェット(ScaffoldMessenger)にエラーが出てしまうことがありました。
色々調べたところ、FlutterSDKのchannelの問題だったようです。
Flutterのchannelについて
詳しくはこちらの公式ページに書いてあります。
https://github.com/flutter/flutter/wiki/Flutter-build-release-channels
FlutterSDKのchannelにはmaster, dev, beta, stableの4つがあり、この順で最新機能が早く使えるようになるようです。
最新機能が使える分、masterなどは検証がまだ不十分な状態のものもあるため、安定して動かしたい製品などの場合はstableの利用が推奨されています。
まずは最新の機能がmasterに出る→少し検証されたらdevに入る→さらに検証されて毎月第一月曜日リリースのbetaに登場→そこで確認されれば四半期に一度リリースのstableへ、といった感じのようです。
リリース情報はこのページです。
https://flutter.dev/docs/development/tools/sdk/releases?tab=macos
今回は、ScaffoldMessengerはdevではリリースされていたものの、自分が使っていたstableのchannelではまだ使えなかったためにエラーが出ていました。
channelをdevに切り替えたところ解決しました。
channelの変更
ターミナルで
flutter channel dev
のように打つことでchannelを変更できます。(devの部分を任意のchannel名に変更)
また、現在のchannelは
flutter channel
で確認できます。
ちなみに、channel変更後に「一応Flutterをupgradeしといた方がいいよ」的な文言が出たので
flutter upgrade
でFlutterSDKをアップグレードしておきました。