【GUI】Fletスレ【Python/Flutter】 (48レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

48: 09/01(月)15:53 ID:5rr2TLhQ(1) AAS
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が使えないのだとすると非常に不便なので何か回避法がありそうではあるが……。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.501s*