What is late?

2023/04/07に公開

Dartのlate とはなんですか?

使用例を教えてくださいChatGPTさん🥺

Dartのlateキーワードは、宣言時に初期化されない変数を宣言するときに使用されます。lateキーワードを使用することで、初期化が後回しにされる変数を宣言することができます。

以下は、lateキーワードを使用して、初期化が後回しにされる変数を宣言する例です。

late String name;

void main() {
  name = "John"; // 後で初期化する
  print("My name is $name");
}

上記の例では、name変数を宣言時に初期化していませんが、lateキーワードを使用することで、後で初期化することができます。実行すると、出力はMy name is Johnとなります。

また、lateキーワードは、null-safetyの導入に伴い、nullで初期化されることがなくなりました。そのため、nullで初期化される可能性がある場合には、代わりにlate finalキーワードを使用する必要があります。

late final String? name = null;

上記の例では、name変数がnullで初期化される可能性があるため、late finalキーワードを使用して宣言しています。

Flutterでの使用例は?

ローカルデータベースのパッケージを読み込むときに、よく使われているようです。
ObjectBoxを使用した例

/// アプリ全体を通してObjectBox Storeにアクセスできるようにします。
late ObjectBox objectbox;

Future<void> main() async {
  // これは、ObjectBox がデータベースを格納するアプリケーション ディレクトリを取得するために必要です。
  // に格納するためです。
  WidgetsFlutterBinding.ensureInitialized();

  objectbox = await ObjectBox.create();

  runApp(
    const ProviderScope(child: MyApp()),
  );
}

こちらは以前ObjectBoxについて紹介している記事です。参考までにどうぞ。
https://zenn.dev/flutteruniv_dev/articles/5d00ef980ac5ce#localdbに入門してみる

まとめ

普段から、おまじないみたいに使っているコードが多かったです。最近はカスケード演算子とか、普段あまり使わない文法を勉強すると、パッケージのコードが読めるようになってきました。
lateやっと理解できた😅

Discussion