最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter組件開發(fā)過程完整講解

 更新時間:2022年11月23日 14:02:37   作者:艾特貓  
這篇文章主要介紹了Flutter組件開發(fā)過程,F(xiàn)lutter是Google開源的構(gòu)建用戶界面(UI)工具包,幫助開發(fā)者通過一套代碼庫高效構(gòu)建多平臺精美應(yīng)用,支持移動、Web、桌面和嵌入式平臺。Flutter 開源、免費,擁有寬松的開源協(xié)議,適合商業(yè)項目

首先統(tǒng)一一個概念,不管是component(組件),widget(控件),module(android的模塊)在我的理解能力范圍內(nèi),都是為了抽離某個特定的功能,對外接受參數(shù),對內(nèi)實現(xiàn)功能的某一個代碼塊。

它是一個顆?;膶嶓w,是相對于建筑物的鋼筋,水泥,磚頭。他們個有特點,相互獨立,各有特性,同時又提供了某種可以內(nèi)聚融合的對外接口。component(組件),widget(控件)下面都統(tǒng)稱組件,對component,widget有不同理解的朋友,希望能在評論區(qū)收到你們的見解和建議。

在前端開發(fā)中,不管vue,react,jquery,原生(html,js,css組合)都提供了或可封裝組件的功能。那其它們都是存在共性的,只有深入淺出之后,抽象出這種通用的概念,我們才可以輕松的在不同的框架,語言之中,快速實現(xiàn)我們所想要的功能。

那為什么今天會記錄一下flutter的組件開發(fā)呢?因為我需要用flutter的方式去實現(xiàn)一個component。flutter是我不熟悉的一個ui框架。那些已經(jīng)抽象出來的組件概念,需要使用flutter框架以及dart語言特性去把它實現(xiàn)出來。

熟悉vue,react的童鞋們,對組件可以會有一下的一些概念:

1,組件要接受prop

2,組件要有默認(rèn)的prop

3,組件內(nèi)部有自己維護的變量

4,組件的prop可選

5,組件的prop有特定的值,如果不匹配到的屬性值無效(枚舉)

6,組件同一個prop屬性的不同值會有不同的樣式(例如antd button的type)

7,組件的多個prop會組成不同的樣式 例如antd button的type和status(warn,danger,loading)

8,組件有必傳的prop

9,組件有可選的且無默認(rèn)值的prop

那接下來我們用flutter一步步的實現(xiàn)上面的功能

【3,組件內(nèi)部有自己維護的變量】

所以這個組件是個有自己狀態(tài)的組件,所以要繼承StatefulWidget

【1,組件要接受prop】

【2,組件要有默認(rèn)的prop;】

代碼如下:

class Button extends StatefulWidget {
  double height = 48;//默認(rèn)prop
State<Button> createState() => _ButtonState();
}
class _ButtonState extends State<Button>{}

【8,組件有必傳的prop】,text參數(shù)必傳

class Button extends StatefulWidget {
final String text;
Button(
      {
super.key,
      required this.text
});
State<Button> createState() => _ButtonState();
}
class _ButtonState extends State<Button>{}

【9,組件有可選的且無默認(rèn)值的prop】,okTxt可選

【4,組件的prop可選】

class Button extends StatefulWidget {
final String? okTxt;
Button(
      {
super.key,
       this.okTxt
});
State<Button> createState() => _ButtonState();
}
class _ButtonState extends State<Button>{}

Oktext使用實話判斷是否為null即可

【6,組件同一個prop屬性的不同值會有不同的樣式(例如antd button的type)】

【7,組件的多個prop會組成不同的樣式 例如antd button的type和status(warn,danger,loading)】

這兩個更多是內(nèi)部邏輯,根據(jù)特定的prop來重新賦值內(nèi)部狀態(tài)的其他變量的值,這兩個變量一般是用枚舉的方式讓外面?zhèn)魅?/p>

//按鈕類型:默認(rèn),邊框,危險,文字
enum Type { primary, dashed, warn, text }
//按鈕狀態(tài):默認(rèn),加載中,禁用,點擊中
enum Status { primary, loading, disabled }
class Button extends StatefulWidget {
Type type = Type.primary;
  Status status = Status.primary;
Color color =Colors.red;
Button(
      {super.key,
      this.type = Type.primary,
      this.status = Status.primary,
       required this.text}
);
}
class _ButtonState extends State<Button>{
  @override
  void initState() {
    super.initState();
//根據(jù)type來維護另外一個變量的值
     switch (widget.type) {
      case Type.primary:
        widget.color = Color.blue;
        break;
default:
        break;
    }
}
}

最后一個疑問?_ButtonState是干嘛的,它內(nèi)部如何訪問Button內(nèi)聲明的變量呢?

_ButtonState是一個提供可訪問該組件的生命周期和實現(xiàn)組件具體頁面渲染內(nèi)容的類,而不只是state管理。只是名字看起來讓人感覺像是vue的vuex或者react的state,也有可能頁面渲染dom在StatefulWidget內(nèi)也算是個狀態(tài)吧。

通過widget[變量名](例如widget.type)的方式可以訪問到Button class的內(nèi)部申明的變量(prop)

到此為止,如果能夠理解上面的概念,就可以使用flutter寫出一個滿足日常工作需要的基礎(chǔ)組件。

附加一個內(nèi)容,如果組件需要用到動畫,那需用用到混入,用過vue的童鞋可以很容易理解。flutter通過width的語句來混入其他功能,代碼:

class _ButtonState extends State<Button> with SingleTickerProviderStateMixin {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->

到此這篇關(guān)于Flutter組件開發(fā)過程完整講解的文章就介紹到這了,更多相關(guān)Flutter組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android開發(fā)入門之Appwidget用法分析

    Android開發(fā)入門之Appwidget用法分析

    這篇文章主要介紹了Android開發(fā)入門之Appwidget用法,較為詳細(xì)的分析了App Widget的概念、功能、創(chuàng)建、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-07-07
  • Intent傳遞對象之Serializable和Parcelable的區(qū)別

    Intent傳遞對象之Serializable和Parcelable的區(qū)別

    Intent在不同的組件中傳遞對象數(shù)據(jù)的應(yīng)用非常普遍,大家都知道在intent傳遞對象的方法有兩種:1、實現(xiàn)Serializable接口、2、實現(xiàn)Parcelable接口,接下來通過本文給大家介紹Intent傳遞對象之Serializable和Parcelable的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Android編程實現(xiàn)圖片的瀏覽、縮放、拖動和自動居中效果

    Android編程實現(xiàn)圖片的瀏覽、縮放、拖動和自動居中效果

    這篇文章主要介紹了Android編程實現(xiàn)圖片的瀏覽、縮放、拖動和自動居中效果,以具體實例形式分析了Android針對圖片各種常見顯示效果的布局及功能實現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • Android實現(xiàn)自動輪播圖效果

    Android實現(xiàn)自動輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)自動輪播圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 實例解析如何在Android應(yīng)用中實現(xiàn)彈幕動畫效果

    實例解析如何在Android應(yīng)用中實現(xiàn)彈幕動畫效果

    這篇文章主要介紹了如何在Android應(yīng)用中實現(xiàn)彈幕動畫效果的實例,文中是利用RelativeLayout布局然后控制ViewGroup中view的顯示,細(xì)節(jié)展示得比較詳細(xì),需要的朋友可以參考下
    2016-04-04
  • Android應(yīng)用讀取Excel文件的方法

    Android應(yīng)用讀取Excel文件的方法

    這篇文章主要介紹了Android應(yīng)用讀取Excel文件的方法,涉及Android針對Excel文件的讀寫保存等相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • 親自動手實現(xiàn)Android App插件化

    親自動手實現(xiàn)Android App插件化

    這篇文章主要教大家親自動手實現(xiàn)Android App插件化,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android5.0中Material Design的新特性

    Android5.0中Material Design的新特性

    這篇文章主要介紹了Android5.0中Material Design的新特性的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • Android安裝應(yīng)用 INSTALL_FAILED_DEXOPT 問題及解決辦法

    Android安裝應(yīng)用 INSTALL_FAILED_DEXOPT 問題及解決辦法

    這篇文章主要介紹了Android安裝應(yīng)用 INSTALL_FAILED_DEXOPT 解決辦法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 利用MVC編寫廣告條輪播效果

    利用MVC編寫廣告條輪播效果

    這篇文章主要為大家詳細(xì)介紹了利用MVC編寫廣告條輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評論

阳原县| 安宁市| 上饶市| 从江县| 东乡| 凯里市| 保山市| 石首市| 平塘县| 康保县| 绥芬河市| 青阳县| 玉山县| 隆安县| 厦门市| 安龙县| 太仓市| 尚志市| 上蔡县| 天柱县| 潍坊市| 广西| 巨野县| 错那县| 磐安县| 浮梁县| 赤城县| 滕州市| 太谷县| 博野县| 双城市| 新龙县| 安义县| 卢湾区| 浪卡子县| 改则县| 商城县| 卓尼县| 楚雄市| 安丘市| 旺苍县|