• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
    電話圖標(biāo) 余先生:13699882642

    網(wǎng)站百科

    為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

    Flutter初體驗(yàn) - dart

    發(fā)表日期:2018-11 文章編輯:小燈 瀏覽次數(shù):1853

    什么是 dart

    剛開始接觸我經(jīng)常打成 drat或者datr,這玩意到底是什么?

    這個(gè)是 Google 七年前(2011年)發(fā)布發(fā)布新網(wǎng)頁(yè)編程語(yǔ)言Dart,是一種基于類編程語(yǔ)言(class-based programming language),在所有瀏覽器都能夠有高性能的運(yùn)行效率,2011年10月10日Google宣布推出Dart的預(yù)覽版。其官網(wǎng)地址是:www.dartlang.org,目前已經(jīng)是Dart2版本了

    Google在dartlang.org公布Dart開發(fā)工具及源代碼示例等內(nèi)容,同時(shí)也提供相關(guān)虛擬機(jī)平臺(tái)。
    目前Dart有兩種方式運(yùn)行:一是在本地的虛擬機(jī)上,二是將Dart代碼轉(zhuǎn)成Javascript,直接在Javascript引擎上運(yùn)行

    ECMA已經(jīng)成立技術(shù)委員會(huì)TC52展開標(biāo)準(zhǔn)化Dart的工作,同時(shí)由于Dart能夠被編譯成標(biāo)準(zhǔn)的JavaScript,它能夠有效地在所有現(xiàn)代瀏覽器上運(yùn)行。2014年7月,ECMA的第107次全體大會(huì)通過(guò)了第一版Dart語(yǔ)言規(guī)范。

    總結(jié)下來(lái)就是 dart 是計(jì)算機(jī)編程語(yǔ)言,是由谷歌公司開發(fā)的網(wǎng)絡(luò)編程語(yǔ)言。就類似常見的 Java、C、Swift一樣。并且Dart是面向?qū)ο蟮?、類定義的、單繼承的語(yǔ)言。它的語(yǔ)法類似C語(yǔ)言,可以轉(zhuǎn)譯為JavaScript,支持接口(interfaces)、混入(mixins)、抽象類(abstract classes)、具體化泛型(reified generics)、可選類型(optional typing)和sound type system。

    看到這個(gè)答案的時(shí)候我就是這個(gè)表情


    本來(lái)你只想簡(jiǎn)單的做個(gè) Android 開發(fā)者的,但是你不進(jìn)步就被社會(huì)淘汰,比如現(xiàn)在 Kotlin,weex,react native 加上 Android 本身的生態(tài)混亂,各種適配已經(jīng)讓你在風(fēng)中凌亂,現(xiàn)在又來(lái)一個(gè) dart,能給調(diào)活路嗎?

    但是生活不還是得繼續(xù)嗎,學(xué)會(huì)了dart 到時(shí)候又可以拿出去跟小伙伴們吹牛逼了,所以繼續(xù)學(xué)下去。

    Dart語(yǔ)言的特性

    Flutter 是 Google 推出的移動(dòng) UI 框架,野心路人皆知,但是為什么會(huì)選擇 Dart 呢?
    可以參考一下 這篇文章

    Why Flutter Uses Dart ?
    為什么 Flutter 會(huì)選擇 Dart ?

    里面也提到了一部分特性

    • Dart 是 AOT(Ahead Of Time)編譯的,編譯成快速、可預(yù)測(cè)的本地代碼,使 Flutter 幾乎都可以使用 Dart 編寫。這不僅使 Flutter 變得更快,而且?guī)缀跛械臇|西(包括所有的小部件)都可以定制。
    • Dart 也可以 JIT(Just In Time)編譯,開發(fā)周期異???,工作流顛覆常規(guī)(包括 Flutter 流行的亞秒級(jí)有狀態(tài)熱重載)。
    • Dart 可以更輕松地創(chuàng)建以 60fps 運(yùn)行的流暢動(dòng)畫和轉(zhuǎn)場(chǎng)。Dart 可以在沒有鎖的情況下進(jìn)行對(duì)象分配和垃圾回收。就像 JavaScript 一樣,Dart 避免了搶占式調(diào)度和共享內(nèi)存(因而也不需要鎖)。由于 Flutter 應(yīng)用程序被編譯為本地代碼,因此它們不需要在領(lǐng)域之間建立緩慢的橋梁(例如,JavaScript 到本地代碼)。它的啟動(dòng)速度也快得多。
    • Dart 使 Flutter 不需要單獨(dú)的聲明式布局語(yǔ)言,如 JSX 或 XML,或單獨(dú)的可視化界面構(gòu)建器,因?yàn)?Dart 的聲明式編程布局易于閱讀和可視化。所有的布局使用一種語(yǔ)言,聚集在一處,F(xiàn)lutter 很容易提供高級(jí)工具,使布局更簡(jiǎn)單。
    • 開發(fā)人員發(fā)現(xiàn) Dart 特別容易學(xué)習(xí),因?yàn)樗哂徐o態(tài)和動(dòng)態(tài)語(yǔ)言用戶都熟悉的特性。

    其實(shí)說(shuō)白了就是,可以快速學(xué)習(xí)(但我不信)、有靈活的 UI、能達(dá)到原生的性能、還可以熱重載。

    聽起來(lái)很厲害的樣子,那不管怎么樣還是要學(xué)一下的。畢竟Google 早就看 Java 不爽了,說(shuō)不定 Android 15.0就不打算支持了咋整。雖然你可能不會(huì)做 Android 做到那個(gè)時(shí)候。

    Dart 語(yǔ)法

    由于你可能是做 Android 的所以應(yīng)該是對(duì) Java 比較熟悉(即使不是做 Android 的應(yīng)該對(duì) Java 也比較熟悉的我相信你),只需要注意下面強(qiáng)調(diào)的一些語(yǔ)法特性就行,其他的都比較類似,不需要全部都關(guān)注,到時(shí)候?qū)懙臅r(shí)候可以現(xiàn)學(xué)現(xiàn)用。

    • 方法
    printHello({String name}) {print("hello, my name is $name"); } 

    按著 Java 的這種調(diào)用方式會(huì)直接運(yùn)行不起


    改成這樣就行。

     printHello(name:"簡(jiǎn)簡(jiǎn)單單敲代碼"); printHello({String name}) {print("hello, my name is $name"); } 

    當(dāng)然還有不一樣的地方,現(xiàn)在方法定義成兩個(gè)參數(shù),之前那樣調(diào)用還是可以的。

     printHello({String name, String age}) {print("hello, my name is $name ,my age is $age"); }printHello(name:"簡(jiǎn)簡(jiǎn)單單敲代碼"); 

    最后再寫個(gè)例子你就懂了

     printHello(name:"簡(jiǎn)簡(jiǎn)單單敲代碼"); printHello(age:18); printHello(age:18,name:"簡(jiǎn)簡(jiǎn)單單敲代碼");printHello({String name, String age}) { print("hello, my name is $name ,my age is $age");} 

    看看輸出很有意思,跟 Java區(qū)別還是挺大的。

    • 首先入?yún)⑿枰付▍?shù)名
    • 傳參可以少
    • 順序可以不一致
    • 所有函數(shù)都返回一個(gè)值,如果沒有指定返回值,則 默認(rèn)把語(yǔ)句 return null; 作為函數(shù)的最后一個(gè)語(yǔ)句執(zhí)行。
    • 可以把方法當(dāng)做參數(shù)調(diào)用另一個(gè)方法(羨慕 swift 很久了,也被 iOS 同學(xué)鄙視很久了)。
    • 方法也可以賦值給一個(gè)變量
    • 比Java爽

    是不是就可以不需要方法重載了?

    • 在Dart的構(gòu)造中可以沒有方法體
    • 關(guān)鍵字
    • public、private、protected 沒有了
    • 如果一個(gè)標(biāo)識(shí)符以 (_) 開頭,則該標(biāo)識(shí)符 在庫(kù)內(nèi)是私有的,
    • 可以不使用new關(guān)鍵字創(chuàng)建對(duì)象
    • Dart中變量初始值為null,即使是int類型也是null。
    • 基本類型
    • 沒有float
    • int和double是num的子類
    • String也可以使用單引號(hào)
    • Dart需要一個(gè)布爾值的時(shí)候,只有true對(duì)象才被認(rèn)為true,其他都是false。
    • 操作符
      這個(gè)比較多隨便舉幾個(gè)例子
    • isis!當(dāng)對(duì)象是相應(yīng)類型時(shí)返回 true/false
    • ??=操作符,如果前操作數(shù)是null類型,則將后操作數(shù)賦值給前操作數(shù);如果前操作數(shù)不等于```null``,則保持前操作數(shù)的值發(fā)生變化。
    • 使用?? 表達(dá)式。
      expr1 ?? expr2
      如果expr1的值為non-null,則返回結(jié)果為expr1;反之則返回expr2。
    • ..級(jí)聯(lián)操作符(額。。。)可以連續(xù)的操作同一對(duì)象,達(dá)到減少中間變量,減少代碼的目的。
      好像很厲害的樣子。

    當(dāng)然還有很多自己看文檔吧。


    本頁(yè)內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過(guò)網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁(yè)中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.juherenli.com/17698.html
    相關(guān)APP開發(fā)
     八年  行業(yè)經(jīng)驗(yàn)

    多一份參考,總有益處

    聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費(fèi)獲得網(wǎng)站建設(shè)方案及報(bào)價(jià)

    咨詢相關(guān)問(wèn)題或預(yù)約面談,可以通過(guò)以下方式與我們聯(lián)系

    業(yè)務(wù)熱線:余經(jīng)理:13699882642

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

    亚洲精品国产福利一二区| 久久国产精品久久久久久 | 久久国产精品免费| 2021精品国产综合久久| 久久精品国产99国产电影网| 步兵精品手机在线观看| 97久久国产亚洲精品超碰热| 国产在线精品一区二区在线观看| 国产精品免费视频播放器| 精品久久久久久成人AV| 精品乱人伦一区二区三区| heyzo亚洲精品日韩| 精品一区二区ww| 精品少妇ay一区二区三区| 久久精品国产2020观看福利| 国产在线精品国自产拍影院| 拍国产乱人伦偷精品视频| 国产伦精品一区二区三区不卡 | 久久天堂AV女色优精品| 中文字幕精品视频| 国产AV午夜精品一区二区入口 | 亚洲中文字幕久久精品无码APP| 国产亚洲精品成人久久网站| 亚洲av无码成人精品区一本二本| 99久久国产综合精品1尤物| 亚洲精品色午夜无码专区日韩| 国产精品视频全国免费观看| 国产日韩精品一区二区在线观看播放| 国产精品自在拍在线拍| 亚洲欧洲精品久久| 91精品国产入口| 99久久免费看国产精品| 久久人人爽天天玩人人妻精品| 精品久久久久久国产91| 99精品国产99久久久久久97| aaaaaa精品视频在线观看| 国产精品一区二区三区99| 精品乱子伦一区二区三区高清免费播放 | 国产乱码精品一区二区三区香蕉 | 国模和精品嫩模私拍视频| 久久国产精品免费一区二区三区|