web-dev-qa-db-ja.com

誰かが私に、FlutterでBuilderクラスが何をするのか説明してもらえますか?

ドキュメントは非常にわかりにくく曖昧です。状態は次のとおりです。

Builderクラス

クロージャを呼び出して子ウィジェットを取得するプラトニックウィジェット。

私の質問は次のとおりです。

  1. 「プラトニック」とはどういう意味ですか?
  2. 「クロージャ」とはどういう意味ですか?
  3. このクラスの目的は何ですか?
14
Walter M

基本的には、ウィジェットを構築する関数をウィジェットに変換します。

ウィジェットを渡す必要があるが、ウィジェットを返す関数のみが必要な場合は、Builderウィジェットを使用できます。

bool bar;

Widget createFooOrBarWidget() {
  if(bar) {
    return BarWidget();
  } 
  return FooWidget();
}

Widget build(BuildContext context) =>
  Container(child: Builder((context) => createFooOrBarWidget()));

あなたも使うことができます

Widget build(BuildContext context) =>
  Container(child: createFooOrBarWidget());

前者は、buildが実際に呼び出されるまで、FooまたはBarウィジェットの作成を遅らせます。

8