2017-08-29 51 views
-1

我正在學習飛鏢/撲翼,並試圖瞭解Widgets系統如何工作。但我無法理解無狀態和有狀態小部件之間的區別?例如,我有按鈕。它有什麼類型?無狀態和有狀態小部件有什麼區別?

讓我們來想象兩種情況。 我發送文本到按鈕,它顯示它。 我發送文本到按鈕,它的顏色改變。

如果我將創建不正確的Widget類型會怎麼樣?

+0

你的意思是'無國籍'和'有狀'嗎? – EJP

回答

0

退房Flutter Interactivity Tutorial

如果您的小部件的build方法完全依賴於其不可變的構造函數參數,則應該使用StatelessWidget,因爲它們更簡單。如果您想要存儲一些您希望隨時間變化的持久性私人數據,請使用StatefulWidget並將數據存儲在State上。

1

有3種小部件,而不是僅僅2

  • 有狀態插件
  • 無國籍部件
  • 繼承的插件

無狀態的小部件就像是一個常數。它是不可變的。如果您想更改無狀態小部件顯示的內容,則必須創建一個新窗口。

有狀態小部件是相反的。他們還活着,可以與用戶互動。有狀態的小部件可以訪問一個名爲setState的方法,該方法基本上對框架說:「你好,我想顯示其他東西,請你重畫我嗎?」。

最後,繼承的widget是兩個世界的混合體。它是不變的,無狀態的。但是另一個小部件(不管它是什麼)可以訂閱該繼承的小部件。 這意味着當您將繼承的小部件替換爲新的小部件時,已訂閱舊部件的所有小部件都將重新繪製。

最後,一個有狀態的小部件通常會像控制器一樣使用。 無狀態小部件將像View一樣使用。 而繼承的小部件將是您的配置文件或您的模型。

相關問題