【Flutter】アンラップの書き方 (NullSafety)

この記事の情報は次のバージョンで動作確認しています。

  • MacOS Monterey (12.1)
  • Flutter (v2.10.4)
  • VSCode (v1.67.2)
  • Flutter

    はじめに

    Nullableな変数をNon-Nullに変換する方法ついてまとめました。

    1. Nullチェックしてアンラップ

    TestClass? test = GetClass(); 
    // test.Func(); Optionalなのでエラーになる
    
    if (test != null) {
      // アンラップされたのでエラーにならない
      test.Func(); 
    }
    

    != nullにすると、それ以降の行で変数がアンラップされた状態になります。

    2. !でアンラップ

    TestClass? test = GetClass(); 
    // test.Func(); Optionalなのでエラーになる
    test!.Func();
    

    Swiftだと強制アンラップという言い方しますね。

    無理やりアンラップしただけなので、もし変数がNullなら例外吐きます。

    // コンソールに出力されるエラー
    Unexpected null value.

    余談

    Swiftでも今回紹介したアンラップ方法ができます。 Swiftだとさらにguard節を使いよりスマートに書くことができたりもします。

    Dartにもguardが実装されることを願います🙄