一区二区三区欧美日韩-一区二区三区欧美-一区二区三区免费在线视频-一区二区三区免费在线观看-久久精品店-久久精品第一页

歡迎您光臨深圳塔燈網絡科技有限公司!
電話圖標 余先生:13699882642

網站百科

為您解碼網站建設的點點滴滴

Flutter 組件化編程

發表日期:2018-12 文章編輯:小燈 瀏覽次數:2220

組件化編程就像是搭積木一樣的開發。把整個應用拆分成許多部分,每部分各自管理自己的組件以及數據狀態,這樣達到一個更好的可維護性,可擴展性。

對于組件來說,大致會分為幾個類型的組件:

  • 展示組件:展示型組件并不維護數據狀態,它更多的作用是用來展示效果與數據。
  • 容器組件:容器組件并不涉及 UI 方面,而是負責處理數據與狀態。
  • 布局組件:特定的布局方式,建議是把它們封裝成一個布局組件。
  • 頁面組件:頁面組件負責當前頁面的組件結構。因為一個頁面是由很多組件組成的,它們的數據關系如何?布局如何?都是在頁面組件上處理。

狀態(State)

前面說了 Flutter 借鑒 React,定義出了一套 Widget。因此在 Widget 里也有 State 的概念。

在 React 里的 State 的作用同樣也適用與 Flutter。

class StateWrap extends StatefulWidget { @override createState() => new MyComponent(); }class MyComponent extends State<StateWrap> { String text = 'Hello, world!';@override Widget build(BuildContext context) { return new Center( child: new Text(this.text), ); } } 

有一點需要注意的,首先需要一個編寫一個包裝類,它繼承至 StatefulWidget,實現 createState 方法。

在 Dart 里,帶下劃線開頭的變量是私有變量,一般會把 State 設置為私有變量。其外在類的屬性是可以不使用 this 的。對于 State 的更新,Flutter 也是使用 setState。不同的是,setState 接受的不是對象,而是一個回調函數,在這個回調函數里對 State 的更改會直接響應式的影響 UI。

class StateWrap extends StatefulWidget { @override createState() => new MyComponent(); }class MyComponent extends State<StateWrap> { String _text = 'Hello, world!';void update() { // 更新 State this.setState(() { _text = 'Hello'; }); }@override Widget build(BuildContext context) { return new Center( child: new Text(_text), ); } }

屬性(Props)

在 React 里有 Props 的概念,同樣的在 Flutter 也有 Props 的概念。State 與 Props 是可以共存的,因為 State 需要使用一個 StatefulWidget 包裝,因此會比較麻煩。

Props 的定義在 StatefulWidget 里定義,并且在 createState 里傳遞。在 State 里通過 widget.xxx 獲取值。

class StateWrap extends StatefulWidget { final String title; final Function onPress; StateWrap({this.title, this.onPress});@override createState() => new MyComponent(title: title, onPress: onPress); }class MyComponent extends State<StateWrap> { // props 從 widget.xxx 獲取 @override Widget build(BuildContext context) => new Center( child: new Column( children: <Widget>[ new Text(widget.title), new FlatButton(child: const Text('Press'), onPressed: widget.onPress), ], ), ); } 

使用的時候,也非常的簡單。

new MyComponent(title: 'abc', onPress: () { // ... }) 

在 React 里,遍歷數組的時候,通常會有一些上下文信息傳遞給事件,同樣在 Flutter 也是如此類似。

onPressed: () => this.onPress(this.title) 

本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.junxiaosheng.cn/17590.html
相關APP開發
 八年  行業經驗

多一份參考,總有益處

聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:余經理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

主站蜘蛛池模板: 99久久亚洲| 美女内射少妇一区二区四区| 9277高清在线观看视频| 婷婷开心激情综合五月天| 久久伊人电影| 国产三级级在线电影| 陈红下面又紧又小好爽| 中文字幕蜜臀AV熟女人妻| 亚洲 成人网| 日产2021免费一二三四区在线| 麻豆精品传媒一二三区| 狠狠色狠狠色综合日日32| 大香网伊人久久综合网2020| 最懂男人心论坛| 亚洲欧美日韩精品自拍| 亚洲AV人无码综合在线观看蜜桃| 任你躁精品一区二区三区| 嫩小性性性xxxxbbbb| 久久亚洲国产精品亚洲| 灰原哀被啪漫画禁漫| 国产人妻精品无码AV在线五十路| 国产CHINESE HD精品| 草莓视频在线观看完整高清免费| 《乳色吐息》无删减版在线观看 | 中国明星16xxxxhd| 亚洲免费无码中文在线亚洲在| 无码任你躁久久久久久久| 日韩 无码 手机 在线| 欧美精品一区二区蜜臀亚洲| 凌馨baby| 米奇影视999| 免费a毛片| 免费韩伦影院在线观看| 麻豆精品2021最新| 老司机亚洲精品影院| 泷泽萝拉首部av| 免费观看桶机十分钟| 暖暖 免费 高清 日本 在线| 牛牛在线1视频| 青青草原亚洲| 色欲人妻AAAAAAA无码|