ControlBuilderの仕様って、こんな感じ?
・ 画面にはControlBuilderの第2引数builderの呼び出しによって生成されたコントロールが表示されるが、コントロールツリーにはControlBuilderオブジェクトそのものが格納される。
・ ControlBuilderの第2引数builderの呼び出しによって生成されたコントロールは、いったん画面に表示された後は(?)、ControlBuilderオブジェクトの属性contentに保持されている(そうなる前のcontent属性の値はNone)。生成されたコントロールの属性にアクセスしたいときは、このcontent属性経由でアクセスすることが考えられる。
・ ControlBuilderの第1引数state(その実引数式)は、ControlBuilderの呼び出し時にただ1度だけ評価され、ControlBuilderは以下その値を参照し続ける。したがって、コントロールの仕様がstate.attrに依存する場合は、第1引数としてはstateを渡し、第2引数builderの式の中でstate.attrを参照する形にするのが基本。第1引数にstate.attrを直接渡す形にしてしまうと(それ自身が値の変更を行うメソッドを持っていたり、そもそも値の変更を行う必要がないような場合はともかく)どこかでstate.attr = new_val としてもControlBuilder から状態変更として認識されない。
・ 描画更新・再描画は、第1引数stateの内容変更(おそらくそのハッシュ値の変更?)があったときに、第2引数builderに第1引数stateを引数として与えて呼び出したその戻り値のコントロールを新しいコントロールとする形で行われる。builderは描画更新・再描画のたびに呼び出されるが、ControlBuilderやその第1引数stateは描画更新・再描画のたびに評価されるわけではない。
・ 第1引数stateの内容変更は描画更新・再描画のトリガーになるので、stateオブジェクトはできるだけコンパクトにするのが良い。
・ ControlBuilderで生成されるコントロールにref属性を設定するのは、第2引数builderに渡される状態引数(=第1引数stateの値)が p → q → p …… というように同じ値になる場合(CheckBoxやRadioGroupでよくある)、同じ値による2回目以降の呼び出しでは効かなくなるという問題があるっぽい(キャッシュが働くため、refを設定するコードがスキップされてしまうのだと思われる)。事実上、Refが使えないのだとすると非常に不便なので何か回避法がありそうではあるが……。
【GUI】Fletスレ【Python/Flutter】
2025/09/01(月) 15:53:48.33ID:5rr2TLhQ
レスを投稿する
ニュース
- 鈴木農相、地元JAから借入金 おこめ券巡り利害誘導との批判も [ちょこ★]
- 渡邊渚さん脅迫か 写真集に包丁置く写真投稿 30代女性書類送検 渡邊さん「外に出るのも怖く身の危険を感じる」 [ひかり★]
- 「おこめ券」でJAを救済したいだけ…税金4000億円で"史上最高値のコメ"を買わせる農水大臣とJAの癒着ぶり [バイト歴50年★]
- 【千葉】会社で58歳女性刺される 殺人未遂容疑で同僚の中国籍の男(39)逮捕 女性死亡 いすみ市 [ぐれ★]
- 【生成ポルノで初】AI生成の児童ポルノ画像の所持疑いで元教諭を初摘発… [BFU★]
- 58歳ミュージシャン俳優、高市首相のアーティスト支援表明に「自分で潰しておいてどの口が…」 [muffin★]
- 🌨👊😅👊🌨三🥶🥶🥶🏡
- ゆるキャン△視てて一番チンチンがイライラするキャラ
- 【悲報】AIに10万ドルを渡し半年運用させた結果wwwwwwwwwwwwwwwwwwww [802034645]
- 国連日本代表『高市答弁は従来通りなのに、中国が難癖つけてくる』として事務総長に書簡 [834922174]
- 「物価上昇で豊かに、そんな事はない」日銀元総裁 白川方明 [929852992]
- スロットで2時間で4万5千円飲まれた
