2017-09-08 63 views
0

我注意到,我們可以使用StatefulWidget構建UI的任何部分而不用擔心狀態。擁有無狀態widget的原因是什麼?

我所問的是簡單地說,是有什麼在首位StatelessWidget,當我們可以建立任何UI類爲StatefulWidget我們是否要爲它提供一個State與否背後的原因是什麼?

是否使用StatefulWidget附帶/更快/更好的使用StatelessWidget,讓建立無國籍 UI更容易支付額外的費用?

當我閱讀文檔時,我無法準確指出在描述無狀態UI組件時使用StatelessWidgetStatefulWidget的區別。 It is even recommended to

考慮重構無狀態的小部件進入狀態的小部件,以便 ,它可以使用一些在StatefulWidget描述的技術...

回答

0

如果你的插件管理狀態,你應該使用一個StatefulWidget與一個關聯的State對象來存儲狀態。

如果你的部件不管理任何國家,它的建造方法只依賴於它的構造函數參數(或Inherited部件如Theme),最好使用StatelessWidgetStatelessWidget需要定義更少的類並調用更少的方法,因此它應該比不會在其狀態中緩存任何內容的等效StatefulWidget更快且更易於維護。

如果按照Push the state to the leaves性能優化,你會改變一個StatefulWidgetStatelessWidget並分解出狀態的部分爲更簡單的StatefulWidget(這可能需要child參數,並將它緩存)。這種模式增加了更多的類,但有利於減少狀態變化時所需的工作量。

相關問題