Migrating to null safety
このページでは、コードをnullセーフティ に移行する方法とタイミングについて説明します。
所有している各パッケージを移行するための基本的な手順は次のとおりです。
migrate:移住する、移行する、移動する
ここではnull-safetyバージョンに移行する、null-safetyに対応する、という意味。
あなたのパッケージ内で使用しているパッケージがマイグレートされるのを持ちます。
あなたのパッケージのコードをマイグレートします。できれば、インタラクティブ移行ツールを使用しましょう。
あなたのパッケージのコードを静的に分析します。
変更(マイグレート)が機能するかテストします。
もしパッケージがすでにpub.devに公開されている場合は、prereleaseバージョンとしてnull-safeバージョンを公開ましす。
アプリの移行は、技術的にはパッケージの移行と同じです。 アプリを移行する前に、nullの安全性が安定したリリースになり、すべての依存関係の準備が整うまで待つことを検討してください。
マイグレーションツールの使用体験に関する非公式の動画を以下に示します。
VIDEO
1. Wait to migrate
依存関係のグラフの葉を最初にマイグレートして、順番にマイグレートを進めていくことを強くお勧めします。
例えば、
パッケージCの中でパッケージBを使用している(パッケージBに依存している)。
パッケージBの中でパッケージAを使用している(パッケージAに依存している)。
という状況では、まず最初にパッケージAをマイグレートし、次にパッケージBを、その次にパッケージCをマイグレートすべきです。
自分のパッケージが依存しているパッケージがnull-safetyをサポートする前に、自分のパッケージをマイグレートすることも可能です。
しかし、自分のパッケージのマイグレート後に、「依存しているパッケージ」がマイグレートされると、また自分のパッケージのコードを変更しないといけなくなる可能性があります。
自分のパッケージ内の、ある関数の引数をnullable型と予想として実装したあとで、依存しているパッケージが、対応する変数の型をnon-nullable型で実装(マイグレート)していた場合、nullable型の値を渡そうとするとコンパイルエラーになります。
あなたのパッケージに依存しているパッケージ(あなたのパッケージを利用しているパッケージ)をマイグレートする前に、あなたのパッケージをマイグレートするべきです。nullセーフパッケージは、Dart 2.12ベータ以降を使用している限り、まだnullセーフティを使用していないパッケージやアプリで使用できます。 たとえば、DartおよびFlutterコアライブラリはnullセーフであり、nullセーフティに移行していないアプリでも引き続き使用できます。
このセクションでは、null-safetyモードのdart pub outdatedコマンドを使用して、パッケージの依存関係を確認および更新する方法について説明します。 この手順では、変更を簡単に元に戻すことができるように、コードがソースコントロール下にあることを前提としています。
Switch to a …