2017-09-08 14 views
0

私は、StatefulWidgetを使用して、状態を気にせずにUIの任意の部分を構築できることに気付きました。StatelessWidgetの背後にある理由は何ですか?

最初にStatelessWidgetを持っている理由は何ですか。を提供するかどうかにかかわらず、すべてのUIクラスをStatefulWidgetとしてビルドすることができますか?

StatefulWidgetを使用してい簡単に/高速化/より良いStatelessWidgetを使用してステートレス UIを作成します追加のコストが付属していますか?

ドキュメントを読むと、ステートレスUIコンポーネントを記述するときにStatelessWidgetStatefulWidgetを使用することの違いを正確に指摘できません。 It is even recommended to

それはStatefulWidgetに記載されている技術の一部を使用することができますので、 ステートフルウィジェットにステートレスウィジェットをリファクタリング考えてみましょう...

答えて

0

ウィジェットは状態を管理する場合は、あなたがStatefulWidgetを使用する必要があります関連付けられている状態を格納するオブジェクト。

ウィジェットは、任意の状態を管理していない、とその構築方法は(例えばThemeとして、あるいはInheritedウィジェット)そのコンストラクタの引数に依存している場合、それはStatelessWidgetを使用することをお勧めします。 StatelessWidgetは、より少ないクラスを定義し、より少ないメソッドを呼び出す必要があるため、その状態に何もキャッシュしない同等のStatefulWidgetよりも速く、保守しやすいはずです。あなたはPush the state to the leavesパフォーマンスの最適化に従っている場合

、あなたはStatelessWidgetStatefulWidgetを変更し、(child引数を取り、それをキャッシュしてよい)StatefulWidget単純にステートフルな部品を因数分解されます。このパターンはクラスを追加しますが、状態が変わったときに必要な作業量を減らすという利点があります。

関連する問題