flutter控件繼承,flutter父組件調用子組件方法

Flutter/Dart - 類的繼承

Dart中的繼承:

創新互聯專注于沙縣企業網站建設,響應式網站建設,商城網站建設。沙縣網站建設公司,為沙縣等地區提供建站服務。全流程按需定制,專業設計,全程項目跟蹤,創新互聯專業和態度為您提供的服務

1.子類使用extends關鍵詞來繼承父類

2.子類會繼承父類里面可見的屬性和方法,但是不會繼承構造函數

3.子類能復寫父類的方法 getter和setter

子類使用extends關鍵詞來繼承父類

子類里面可以擴展自己屬性和方法

Flutter_定義控件StatefulWidgets和StatelessWidget

Stateful(有狀態) 和 stateless(無狀態) widgets

stateless widget 沒有內部狀態. Icon、 IconButton, 和Text 都是無狀態widget, 他們都是 StatelessWidget的子類。

stateful widget 是動態的. 用戶可以和其交互 (例如輸入一個表單、 或者移動一個slider滑塊),或者可以隨時間改變 (也許是數據改變導致的UI更新). Checkbox, Radio, Slider, InkWell, Form, and TextField 都是 stateful widgets, 他們都是 StatefulWidget的子類。

StatefulWidget類

具有可變狀態的小部件。

狀態是(1)在構建窗口小部件時可以同步讀取的信息,以及(2)在窗口小部件的生命周期內可能會更改的信息。這是小工具實施者的責任,以確保國家的及時通知當這種狀態的改變,使用State.setState。

有狀態窗口小部件是一個窗口小部件,它通過構建一個更具體地描述用戶界面的其他窗口小部件來描述用戶界面的一部分。構建過程以遞歸方式繼續,直到用戶界面的描述完全具體(例如,完全由RenderObjectWidget組成,其描述具體的RenderObject)。

當您描述的用戶界面部分可以動態更改時(例如由于具有內部時鐘驅動狀態或依賴于某些系統狀態),狀態窗口小部件非常有用。對于僅依賴于對象本身中的配置信息以及窗口小部件膨脹的 BuildContext的組合,請考慮使用 StatelessWidget。

StatefulWidget實例本身是不可變的,并且將它們的可變狀態存儲在由createState方法創建的單獨State對象中 ,或者存儲在State訂閱的對象中,例如Stream或ChangeNotifier對象,其引用存儲在StatefulWidget的最終字段中本身。

框架在膨脹StatefulWidget時 調用createState,這意味著如果該窗口小部件已插入到多個位置的樹中,則多個State對象可能與同一StatefulWidget關聯。同樣,如果StatefulWidget從樹中移除,后來在樹再次插入時,框架將調用createState再創建一個新的國家目標,簡化的生命周期狀態的對象。

如果StatefulWidget的創建者使用GlobalKey作為其 鍵,則StatefulWidget在從樹中的一個位置移動到另一個位置時保持相同的State對象。由于具有GlobalKey的窗口小部件可以在樹中的至多一個位置使用,因此使用GlobalKey的窗口小部件最多只有一個關聯元素。當通過將與該窗口小部件關聯的(唯一)子樹從舊位置移植到新位置(而不是在該位置重新創建子樹)時,框架利用此屬性將全局鍵從樹中的一個位置移動到另一個位置時利用此屬性。新的位置)。與StatefulWidget關聯的State對象與子樹的其余部分一起被移植,這意味著State對象在新位置被重用(而不是被重新創建)。但是,為了有資格進行嫁接,必須將窗口小部件插入到從舊位置移除它的同一動畫幀中的新位置。

StatefulWidget有兩個主要類別。

首先是其中一個分配資源State.initState并在他們的處置State.dispose,但不依賴于InheritedWidget S或致電State.setState。這些小部件通常在應用程序或頁面的根目錄中使用,并通過ChangeNotifier, Stream或其他此類對象與子小部件進行通信。遵循這種模式的有狀態小部件相對便宜(就CPU和GPU周期而言),因為它們構建一次然后永不更新。因此,它們可能有一些復雜和深刻的構建方法。

第二類是使用State.setState或依賴于 InheritedWidget的小部件。這些通常會在應用程序的生命周期內重建多次,因此最小化重建此類窗口小部件的影響非常重要。(他們也可以使用State.initState或 State.didChangeDependencies并分配資源,但重要的是他們重建。)

可以使用幾種技術來最小化重建有狀態窗口小部件的影響:

StatelessWidget類

一個不需要可變狀態的小部件。

無狀態窗口小部件是一個窗口小部件,它通過構建一個更具體地描述用戶界面的其他窗口小部件來描述用戶界面的一部分。構建過程以遞歸方式繼續,直到用戶界面的描述完全具體(例如,完全由RenderObjectWidget組成,其描述具體的RenderObject)。

當您描述的用戶界面部分不依賴于對象本身的配置信息以及窗口小部件膨脹的BuildContext時,無狀態窗口小部件非常有用。對于可以動態更改的組合,例如由于具有內部時鐘驅動狀態或依賴于某些系統狀態,請考慮使用StatefulWidget。

無狀態窗口小部件的構建方法通常僅在以下三種情況下調用:第一次將窗口小部件插入樹中,窗口小部件的父窗口更改其配置時,以及何時依賴于更改的InheritedWidget。

如果窗口小部件的父級將定期更改窗口小部件的配置,或者它依賴于經常更改的繼承窗口小部件,則優化構建方法的性能以保持流暢的呈現性能非常重要。

可以使用幾種技術來最小化重建無狀態窗口小部件的影響:

Flutter Bloc實現原理

1、繼承SingleChildStatelessWidget,就是一個widget,通過create 傳入一個Bloc對象

1、Bloc繼承自BlocBase,BlocBase中創建了StreamController對象,為多訂閱對象

其中onCounterEvent((event, emit)為初始化創建_eventController監聽

2、Bloc中創建_eventController,為事件通知

3、BlocBase創建_stateController,為狀態刷新通知

4、add方法是執行廣播通知

5、處理完數據之后執行emit()方法,其中emit方法是stateController廣播

1、 BlocBuilder繼承自BlocBuilderBase,_BlocBuilderBaseState中build方法返回的是BlocListener

2、BlocListener繼承BlocListenerBase,_BlocListenerBaseState中_subscribe()添加監聽stateController廣播通知

網站題目:flutter控件繼承,flutter父組件調用子組件方法
URL標題:http://m.kartarina.com/article42/dseeohc.html

成都網站建設公司_創新互聯,為您提供網站收錄自適應網站微信小程序網站維護手機網站建設定制網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
主站蜘蛛池模板: 亚洲成A∨人片在线观看无码| 亚洲熟妇无码AV不卡在线播放| 亚洲AV无码专区在线电影成人| 日韩激情无码免费毛片| 无码一区二区三区| 亚洲精品无码99在线观看| 久久无码人妻一区二区三区| 夜夜添无码一区二区三区| 无码中文字幕人妻在线一区二区三区| 亚洲av无码专区青青草原| 国产成人无码一区二区三区在线| 久久精品中文字幕无码| 午夜成人无码福利免费视频| 亚洲AV无码男人的天堂| 国产午夜无码精品免费看动漫| 亚洲熟妇少妇任你躁在线观看无码 | 免费无码又爽又刺激高潮视频| 国产精品无码久久综合网| 无码国产精品一区二区免费式芒果| 日韩精品无码免费专区网站| 国产精品无码亚洲一区二区三区| 亚洲AV无码欧洲AV无码网站| 亚洲AV无码一区二区乱子伦| 亚洲av无码成人精品区| 孕妇特级毛片WW无码内射 | 日韩乱码人妻无码中文视频| 亚洲性无码av在线| 精品无码无人网站免费视频| 中文有码vs无码人妻| 国产亚洲精品无码拍拍拍色欲| 精品久久久无码人妻中文字幕豆芽| 毛片一区二区三区无码| 久久av无码专区亚洲av桃花岛 | 国产精品无码无片在线观看3D| 无码播放一区二区三区| 好了av第四综合无码久久 | 秋霞无码一区二区| 亚洲av永久无码精品秋霞电影影院| 亚洲精品无码久久毛片| 极品粉嫩嫩模大尺度无码视频| 久久精品中文字幕无码|