[dart]late修飾子の使い方

image

lateとは?

ざっくり説明すると、変数の初期化のタイミングを遅らせるための修飾子です。

lateの基本的な使い方は以下の通り。

この例ではString型の_temperature変数の初期化をheat(),chill()メソッドが呼ばれるまで延期しています。

なぜlateを使う必要あるのか?

以下のような書き方ではダメなのか疑問に思う方もいるかもしれません。

実際にコードを書いてみると以下のようなエラーが出てしまいます。

エラーの内容をざっくり説明すると、「String型はNon-Nullable(nullが入ってはいけない)なので、初期化してちゃんと値を入れてください」という内容になってます。

では次のコードではダメなのか?

_temparatureをnull代入可能にしてみました。

問題はないですが、このクラスのメンテナンスをする人が、nullになんか意味があるのでは?と考えてしまう可能性があります。(実際にはnullに意味はありません)

ここで使いたくなるのがlate修飾子になるわけです。

こんな使い方もできる

①初期化と当時に使う

何が嬉しいの?と思う方もいるかもしれませんが、これはすべての初期化終了後にreadTermometer()を使って値を取得できることが嬉しいです。

つまり、クラス内の値を使用して、変数を初期化したい場合に使えるということです。

finalと一緒に使う

finalと一緒に使うことで値の代入が一度しか行えなくなります。

参考にした記事

https://dart.dev/null-safety/understanding-null-safety#late-variables

関連記事

image [Flutter]The instance member ‘ref’ can’t be accessed in an initializer.Try replacing the reference to the instance member with a different expression の解決方法

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!