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
レスを投稿する
ニュース
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる [尺アジ★]
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★2 [尺アジ★]
- 【サッカー】敗退危機・韓国が命拾い ウルグアイ敗戦で“3位集団”7番手キープ 「スペイン助けて」の願い届く… 上位8位争い大激戦★3 [冬月記者★]
- 「週刊誌ネタ」を追及しても内閣支持率は下がらない、野党と世論のズレは深刻だ 平井文夫氏 (週刊フジ) [少考さん★]
- 【福岡】大量に余った給食パン「10個100円」で販売…福岡市、雨で230校が臨時休校「子どもの安全第一」 [ぐれ★]
- 国民民主に公認取り消された娘が自死、母親も追うように…党内を震撼させた玉木代表 文春砲に「長文釈明」 ★2 [少考さん★]
- とらせん7
- とらせん8
- とらせん6
- こいせん3 全レス転載禁止
- こいせん4 全レス転載禁止
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★218修正【メキシコ/カナダ/アメリカ】
- 【実況】博衣こよりのえちえちファイアーエムブレム風花雪月🧪 Part7
- 彼女「ウエルシア行きたい!!」俺「雨だよ…」彼女「行きたいの!!」俺「暖気してくるね…」 [697453962]
- 麻生太郎「総理に文句言ってる奴、140日休まず働いたことあんの?」 [237216734]
- ●派閥ピンクデブ撲滅🏡🌸
- 「火を操る」「水を操る」「土を操る」「氷を操る」「風を操る」「雷を操る」👈ぶっちゃけ「水💧」一択だよな? [268718286]
- 【悲報】ロシア軍マジで負けそう [339035499]