最終的な値はどこに保存しますか?最終フィールドをウィジェットまたは状態に保持しますか?
StatefulWidget
(もちろん私のサブクラス)のインスタンスにおいて及びwidget.thatFinalField
、又はState
自体に
介しState
(サブクラス)からアクセス。私はすでに両方のアプローチを見てきました。それぞれの長所と短所はありますか?
最終的な値はどこに保存しますか?最終フィールドをウィジェットまたは状態に保持しますか?
StatefulWidget
(もちろん私のサブクラス)のインスタンスにおいて及びwidget.thatFinalField
、又はState
自体に
介しState
(サブクラス)からアクセス。私はすでに両方のアプローチを見てきました。それぞれの長所と短所はありますか?
StatefulWidget
にfinal
メンバーフィールド(コンストラクタ引数を介して渡される)を格納してパブリックにする必要があります。
StatefulWidget
に関連付けられているState
は、デフォルトのコンストラクタ(引数なし)のみを使用し、メンバーフィールドはプライベート(_
で始まり)で変更可能である必要があります。高価な作業や非同期作業が必要な場合は、インラインまたはinitState
に初期化してください。
このパターンはStatefulWidget
が前のState
を再利用し、それはその可変メンバフィールドに格納された値を維持させながらその両親が、setState
を呼び出すときに、新しいコンストラクタ引数で再構築/再作成することができます。
最終ストリームの定期購読はどうですか?サービスまたはインジェクタクラスから取得されます。 – DogeLion
StatefulWidgetとそれに関連付けられた状態を構築することは、副作用があってはなりません。ウィジェットを初期化するための副作用がある作業を行っている場合は、initState()でそれを行い、変更可能なメンバー変数に保存する必要があります。 dispose()であなた自身の後をきれいにしてください。 –