【Dart】コンストラクタのティアオフ【v2.1.5】

2023/01/18に公開

ティアオフ(Tear offs)

ティアオフとはその名の通りあるオブジェクトのメソッドを引き剥がしてクロージャ化することである。

https://www.cresc.co.jp/tech/java/Google_Dart2/language/classes/classes.html#__RefHeading__69550_1542959068

簡単にいうと、メソッドへのポインタ、参照を得ることができる。

JavaScriptやPythonでも同じ機能はある。

jsの例
const obj = {
    sayHello: () => console.log("hello!"),
}

const greet = obj.sayHello;
greet(); // hello!

コンストラクタのティアオフ

Dart v2.1.5から .newでコンストラクタをクロージャ化することができる。

class MyClass {}

final closure = MyClass.new;
print(closure()); // Instance of MyClass

Flutterでの例

class FruitWidget extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Column(
        children: ['Apple', 'Orange'].map(Text.new).toList());
  }
}

Discussion