【Flutter】割り算した結果を整数で取得する方法

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

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

    はじめに

    FlutterDartと呼ばれているプログラミング言語を使うのですが、

    このDartで割り算するとdouble型になるのですが受け手がint型だとすると、コンパイルエラーになります。

    int num = 1000 / 9;
    
    // コンパイルエラー
    A value of type 'double' can't be assigned to a variable of type 'int'.
    Try changing the type of the variable, or casting the right-hand type to 'int'.d
    

    このエラーを解消するための方法について共有したいと思います。

    DartだとC言語の感覚でキャストがうまく書けないので、少し工夫が必要でした。

    ダメだったパターン

    as int

    VSCodeのQuickFixだとこれでやってきます(まじで罠)

    こちらはコンパイルエラーにならないですが、実行時エラーとなります。

    int num = (1000 / 9) as int;
    
    The following TypeErrorImpl was thrown building Builder:
    Expected a value of type 'int', but got one of type 'double'
    

    C言語の感覚でいくと地獄をみるぜ。

    成功したパターン

    toInt()

    ()で囲んで .toInt() というint型に変換するメソッドを使うとキャストができます。

    int num = (1000 / 9).toInt();
    

    ~/ だともっと短いコード書ける

    ~/ は割り算した結果をint型にするというものです。 toInt()よりコードが短くなります。

    int num = 1000 ~/ 9;
    ````
    
    ~(チルダ)はあまり使わない文字ですよね。~はいつもどこを押したら表示できるのか分からんくなる笑
    
    AppleJISキーボードだと↓で打てます。
    
    [f:id:m2game:20220728094633p:plain]