kuwabara tech note

Flutterのtear-offとは?使うべき理由

tear-off とは

Flutterで関数のコールバックに匿名関数を用いない方法です。他の言語でいうfunction pointerです。

・tear-offの例

TextButton(
    onPressed:button.toggle
)

・tear-offを使わない例

TextButton(
    onPressed: () {
        button.toggle();
    }
)
TextButton(
    onPressed: () => button.toggle()
)

tear-offのメリット

  1. 匿名関数分のアロケーションが必要なくなります。tear-offでは関数をただ参照しているだけです。これにより、メモリと実行速度が改善されます。

  2. 関数の決定がruntimeでなくcompile時になります。これにより、実行速度が速くなります。*

  3. 可読性があがります。

* compile時になることでメリットもデメリットもあります(Compile time Polymorphism VS Run time Polymorphism) www.geeksforgeeks.org

forEachではtear-offを使おう

forEachはbreak, continue, return, awaitができないため使われず、for-inが使われるのが一般的です。

しかし、下記のようにtear-offを使うときだけは推奨されます。

list.forEach(print);

dart-lang.github.io

以上です!ありがとうございました。

参考

www.youtube.com