flutterチュートリアルの外部パッケージ導入で詰まったときのメモ

flutterチュートリアルをしていたら、

https://flutter.ctrnost.com/tutorial/tutorial04/

外部パッケージの導入でつまづいたのでメモ

dependencies:
    flutter:
      sdk: flutter
  cupertino_icons: ^0.1.2
  english_words: ^3.1.0

ここで、

flutter packages get

してプロジェクトを実行すると

engliesh_wordsがnull-safetyでないというmigrateエラーがでたので

以下のサイトにて

https://zenn.dev/hirothings/scraps/294558ad228cb

flutter pub outdated --mode=null-safetyでアプリの依存パッケージが、null-safety対応しているか確認ができる

  • [✗] 未対応
  • [✓] null安全対応

dart pub upgrade --null-safety で依存パッケージをNull-Safety版の最新にアップデートできるこのコマンドはpubspec.ymlを書き換える

とあったのでそれを参考に

(公式はこちら

パッケージをnull safety版に移行

flutter pub outdated --mode=null-safety
dart pub upgrade --null-safety

1行目のコマンドで

  • [✗] 未対応
  • [✓] null安全対応

パッケージがnull-safety対応していないものが表示されるので、

null安全対応のバージョンに移行したい

2行目のコマンドでそれらのパッケージをnull-safety版の最新にアップデート。

dart migrate

コマンドを打つと

dart migrateエラー
というエラー

1. Set the lower SDK constraint (in pubspec.yaml) to a version before 2.12.より、

dartのバージョンを2.12以前のものにする必要がある

dart —versionしてdartのバージョンを確認してみると2.17.6だった

dartのバージョン変更方法を探した結果

dvmというバージョンマネージャーを見つけたのでそれを導入しようとしたが

Because pub global activate depends on dvm any which requires SDK version >=1.22.0 <2.0.0, version solving failed.

1.22.0~2.0.0までしか対応していないらしい

https://zenn.dev/riscait/articles/flutter-version-management

こちらのサイトよりFlutter SDKのバージョン管理ツールFVMを使って

プロジェクトごとにflutterのバージョンを変えることができるみたいなので

変更してみる。

こちらのflutter versionとdart versionの対応表を参考に

https://docs.flutter.dev/development/tools/sdk/releases

flutter,dart バージョン対応表

左端がflutter versionで、右端がdart version

dart 2.12.0に対応しているのはflutter 2.0.0らしい

プロジェクトルート直下で

fvm use 2.0.0

コマンドを入力し

fvm use

このプロジェクトでflutter2.0.0を使うように変更

dartのバージョンファイルを書き換えてみる

C:\src\flutter\bin\cache\dart-sdk

私の場合ここにversionファイルがあるので

versionファイルをエディタで開いて

2.17.6だったのを2.12.0に変更

すると無事プロジェクトが実行できるようになりました

手順を思い出しながら書いたので抜けがあったり、エラーの画面がスクショできていない箇所があったりしますが参考になれば幸いです。