旧サイトから記事の移行中です

超初心者でもできる! Flutter2にアップグレードする方法

遅ればせながら、私のMacもFlutter2にアップグレードしてみました。

そのアップデート手順をまとめておこうと思います。

アップグレードの実行は、OSのターミナルからでも、Android StudioのTerminalからでも実行することができます。

Android StudioのTerminalから実行するときは、何かプロジェクトを開いて(あるいは新規プロジェクトを作成して)、Terminal画面から実行します。

目次

Flutterのchannelを確認

Flutterの安定性を表すビルドには4つの種類があります。
その4種類を簡単に説明すると、以下のような感じ。

  • master:最新。機能するはずだけど、もしかしたらバグがあるかもしれない。
  • dev:テストされている最新のビルド。
  • beta:毎月第一月曜日にマスターから切り離されてリリースされる、安定版の一歩手前。
  • stable:四半期に一回リリースされる安定版。

「master」から「stale」に行くにつれ、安定性が高くなっているということになります。

今回Flutter2へのアップグレードは、どのchannelでも実行することができます。

まずはアップグレードの前に、今のFlutterがどのchannelになっているのかを確認しておきます。

$ flutter channel
Flutter channels:
  master
  dev
  beta
* stable

stableの先頭に*マークがついているので、今のFlutterはstableであることが確認できます。

下記のように、バージョン番号の確認コマンドでもビルド情報を見ることができます。

$ flutter --version

安定版のstableを使うのが一般的なので、もしchannelがstableでない場合は、下記のコマンドでstableにしておくのがいいかなと思います。

$ flutter channel stable

channelって何?:詳しくはこちら↓ 

 GitHub  Flutter build release channels

アップグレードの実行

channelを確認したら、Flutterをアップグレードします。

$ flutter upgrade

この1行で、SDKがダウンロードされアップグレードが実行されます。
数分から、回線状況によってはそれ以上時間がかかります。

アップグレードが終わったところで次のように表示され、Flutterが2.0.6、Dartが2.12.3になったことがわかります。

Flutter 2.0.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 1d9032c7e1 (6 days ago) • 2021-04-29 17:37:58 -0700
Engine • revision 05e680e202
Tools • Dart 2.12.3

アップグレード後、自動的にflutter doctorも実行されるのでしばし待ちます。

最後に 「No issues found!」と表示され、「Welcome to Flutter!」の囲み表示が出たら無事成功です。

ダウングレードしたいとき

アップグレードしたけど、やっぱりダウングレードしたい! というときはdowngradeコマンドを使うと、バージョンを戻すことができます。

$ flutter downgrade
Downgrade flutter to version 1.22.6
? [y|n]: y

Success

実行すると、戻すバージョンを聞かれるので[y]で実行します。
Successと出たらダウングレード完了です。

Flutterのアップグレード後にやること

Flutterのシステム自体のアップグレードは、flutter upgradeコマンドの実行で完了です。

でもFlutter2へのアップグレード方法の記事をググると、既存プロジェクトのFlutter2へのnull-safety対応の作業コマンドも続けて実行していたりして、初心者はちょっと混乱してしまいます。

そこで、Flutterのアップグレードって色々やることあるの? というモヤモヤした疑問を解決したいと思います。

ここでは実際に細かな作業はしていませんし、解説も途中までですが、「Flutter2に対応させる、ってそういうことなのね」ってことが理解できるかなと思います。

既存プロジェクトのFlutter2 null-safety対応の手順概略

flutter upgradeコマンドでFlutter2にアップグレードしたら、その後にやることが色々あるのかといえば、実は必ずしもそういうことではありません。

これから新規プロジェクトを作るときは、Flutter2の環境で作って行くわけですから、Flutter2の仕様に則って作成すれば良いだけです。

ちまたで「Flutter2対応の作業がスッゲー大変」と言うコトバが聞かれるのは、「既存のプロジェクトをFlutter2(のnull-safetyなど)に対応させる作業が大変だ」ということです。

具体的な作業は、

  • 使っているパッケージが、Flutterのどのバージョンに対応しているのかを調べる。
  • pubspec.yamlに書いてあるパッケージのバージョンを、null-safetyに対応しているバージョン番号に書き換え。
  • Dartコードをnull-safetyの強制適用に対応するよう修正する。


というような流れです。

null-safetyについては、こちらでちょっと解説しています。

このFlutter2対応作業の中で一番大変なのは、上記手順の3番「Dartコードの修正」です。

具体的には、エディタを開いて、エラーを示す赤いニョロニョロ下線のコードを修正して行くわけです。

でも、その作業を全て手作業でやるんかい!? と言ったら、そういうことではありません。(もちろん手作業もいっぱいあるけど…)

1番の「パッケージの対応バージョンを調べる」と、2番の「パッケージで使っているバージョン番号を書き換える」という作業は、実行コマンドが用意されているし、Dartのコード修正もこのコマンドの実行でちょっとやってくれます。

使うコマンドは、Android Studioでpubspec.yamlファイルを開いたときに、画面の上部にも表示されている「Pub outdated」と「Pub upgrade」です。

じゃ具体的に「Pub outdated」と「Pub upgrade」コマンドは、どんな風に動くのか、やってみます。

まずpub outdatedで、使っているパッケージのバージョン番号を調べます。

pubspec.yamlファイルの右上の青文字「Pub outdated」をポチるか、またはターミナルで実行するなら、次のコマンドです。

$ dart pub outdated

もしくは、これ↓

$ flutter pub outdated

でも、上のpub outdatedコマンドだけでは、パッケージのnull-safety対応状況がわからないので、下のようなオプションをつけてターミナルから実行してみます。

$ dart pub outdated --mode=null-safety

もしくは、これ↓

$ flutter pub outdated --mode=null-safety

このオプションは、パッケージ単体での対応状況でなはくて、パッケージ間の依存関係も含めたnull-safety対応状況を調べられる、という優れものです。

このコマンドでは対応状況を調べるだけなので、pubspec.yamlもDartファイルも書き変わることはありません。

実行結果には、下のような一覧が表示されます。

実際にはこの他にも、システムからのメッセージが何行か表示されます。

Flutter2へのアップグレードでnull-safety対応を調べた結果画面

画面左の「Package Name」の列の右に、「Current」「Upgradable」「Resolvable」「Latest」と並んでいます。

ここで大切なのは、右から2番目の「Resolvable」の列です。
ここに「」がついているバージョンなら、null-safetyの対応OK。

「✗」なら未対応なので、そのパッケージが対応してくれるまで待つ他はありません。

このコマンドで、そのプロジェクトのパッケージがnull-safety対応できるバージョンの準備ができていることがわかったら、次のコマンドで実際にパッケージのアップグレード作業に入っていきます。

次のコマンドを実行すると、pubspec.yamlに書いてあるパッケージのバージョン番号などが自動で書き換わります。

ただこのコマンドでは、ある特定のパッケージのみをアップグレードするというこができません。
使っているパッケージ全てがアップグレードされるので注意が必要です。

$ dart pub upgrade --null-safety

もしくは、これ↓

$ flutter pub upgrade --null-safety

pub upgradeコマンドは、pubspec.yamlファイルの右肩の青文字「Pub upgrade」から実行するのと、ターミナルから実行するのとでは、動きが違うようです。

pubspec.yaml右肩の「Pub upgrade」から実行するのは、バグがあるという噂も聞いたので、ターミナルから実行する方が安全のようです。

このあとも、null-safety対応の作業はまだ続きますが、とりあえずこんな感じで作業が進みます。

アップグレードの実行前には、バックアップを取っておくことを強くお勧めします。
いまさら、ワタシなんかが、ここでいうことじゃありませんが…。念のため。

詳しくは、Dart公式サイトの解説を見てみてください。

null-safetyへの移行作業:

 Dart  Migrating to null safety

よかったらシェアしてね!
  • URLをコピーしました!
目次