💭
Null Safety な Dart/Flutter パッケージを pub.dev に公開する
公開しました。
Dart/Flutter のパッケージの Null Safety 化が進んでおり、ささやかな機能ながら自分が公開しているパッケージも対応しておこうと思い実施した作業の記録です。
- Flutter を channel beta に切り返る
-
pubspec.yaml
に記載の SDK のバージョンを">=2.12.0-0 <3.0.0"
にする - 依存パッケージがあれば nullsafety バージョンを
pubspec.yaml
で指定する -
fluter analyze
でエラーが出ないことを確認する - バージョンを
x.x.x-nullsafety.x
にしてflutter pub publish
する
なお詳細な手順および情報は下記に詳しいです。
Flutter version の切り替え
Null Safe が利用できるのは beta チャンネルのバージョンです。下記のコマンドで切り替え。
flutter channel beta
flutter upgrade
pubspec.yaml に記載している sdk のバージョンを修正します。
environment:
sdk: ">=2.12.0-0 <3.0.0"
依存パッケージのバージョン修正
何らかのパッケージに依存している場合、 pubspec.yaml
のバージョン指定を nullsafety 版にします。
今回は meta
を利用していたので、修正。
dependencies:
meta: ^1.3.0-nullsafety.6
コードの修正
既存コードが Null Safe に違反していないかどうかは flutter analyze
を利用すれば検知できるので、あれば対応します。
違反してないだろう、と思っていたらしてました。
class IsoCalendar {
IsoCalendar._({
// 初期値を明示するように怒られる
this.year,
this.weekNumber,
this.dateTime,
});
// ...
}
@required
を required
にすることでエラーに対応できます。今回は外部に出ないところだったので named parameters をやめて positional parameters に変更して対処してしまいました。
class IsoCalendar {
IsoCalendar._(
this.year,
this.weekNumber,
this.dateTime,
);
// ...
}
プレリリースバージョンとして公開する
パッケージのバージョンをプレリリースバージョンとして公開します。バージョニングは x.x.x-nullsafety.x
の規則性で行うのがよいようです。
version: 1.0.0-nullsafety.0
移行期のために nullsafety じゃない版もメンテできるようにしておきます。僕の場合は ひとまず nullsafety
ブランチに切り分けておきました。
ここまでできたら publish
できます。
flutter pub publish
成功すると Null Safety バッジ(?)が貰えます。
以上。
Discussion