[英]Should Flutter widgets be created in the class or in the build() function?
是否有最佳方法可以在哪里創建小部件的一般經驗法則(假設小部件不依賴傳遞給build()的任何東西)?
如果我們在類內創建一個Widget:
Foo({Key key}) : super(key: key);
Widget _widget = new Container(); // Create here?
創建類后,我們只會創建一次。 但是,如果未始終在build()中使用此窗口小部件,則它可能會占用空間(例如,后台窗口小部件,或者該窗口小部件的可見性由標志確定)。
如果我們在build()中創建小部件:
@override
Widget build(BuildContext context) {
Widget widget = new Container(); // Or create here?
return widget;
}
在每次build()調用時都會重新創建該小部件,這感覺很昂貴,尤其是如果小部件沒有變化。
在Flutter / Dart中,構造短期對象通常非常便宜,並且小部件層負責確保除非重新構建小部件,否則在重建時不會修改渲染樹。 因此,在正常情況下,緩存小部件沒有太大幫助。 我傾向於在您的build()
方法中構造小部件,除非有原因不能解決。
通常無需關心這種優化。 但是,請盡可能使用const
構造函數。
但是請記住,您應該將模型直接用作小部件。 您不應該具有將模型類的實例作為輸入的Widget。 相反,應該是您的模型類具有構建方法。 結果,當以您的狀態存儲數據時,您不必在每次調用Build時都重新創建新的小部件。
一個很好的例子是flutter的代碼實驗室中的ChatMessage列表。 https://codelabs.developers.google.com/codelabs/flutter/index.html#5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.