Flutter介紹和dart語法解讀

Flutter是谷歌的移動UI框架沼沈,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面盖奈。 Flutter可以與現(xiàn)有的代碼一起工作拆又。在全世界养晋,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用偏窝,并且Flutter是完全免費收恢、開源的武学。

Flutter特性:

1.快速開發(fā)

Flutter的熱重載可幫助您快速地進行測試、構(gòu)建UI伦意、添加功能并更快地修復(fù)錯誤火窒。通過將更新的源代碼文件注入正在運行的Dart VM(虛擬機)中工作。這不僅包括添加新類驮肉,還包括向現(xiàn)有類添加方法和字段熏矿,以及更改現(xiàn)有函數(shù)。在iOS和Android模擬器或真機上可以在亞秒內(nèi)重載离钝,并且不會丟失狀態(tài)票编。

2.富有表現(xiàn)力,漂亮的用戶界面

使用Flutter內(nèi)置美麗的Material Design和Cupertino(iOS風(fēng)格)widget卵渴、豐富的motion API慧域、平滑而自然的滑動效果和平臺感知,為您的用戶帶來全新體驗浪读。

3.訪問本地功能和SDK

通過平臺相關(guān)的API昔榴、第三方SDK和原生代碼讓您的應(yīng)用變得強大易用。 Flutter允許您復(fù)用現(xiàn)有的Java瑟啃、Swift或ObjC代碼论泛,訪問iOS和Android上的原生系統(tǒng)功能和系統(tǒng)SDK∮加欤可以使用Flutter作為視圖(View)層屁奏, 并可以使用已經(jīng)用Java / ObjC / Swift完成的部分(Flutter支持混合開發(fā))。

Flutter為什么能跨平臺且高效

首先错负,F(xiàn)lutter 自建了一個繪制引擎坟瓢,底層是由 C++ 編寫的引擎,負責渲染犹撒,文本處理折联,Dart VM 等;上層的 Dart Framework 直接調(diào)用引擎识颊。避免了以往 JS 解決方案的 JS Bridge诚镰、線程跳躍等問題。第二祥款,引擎基于 Skia 繪制清笨,操作 OpenGL、GPU刃跛,不需要依賴原生的組件渲染框架抠艾。第三,Dart 的引入桨昙,是 Flutter 團隊做了很多思考后的決定检号,Dart 有 AOT 和 JIT 兩種模式腌歉,線上使用時以 AOT 的方式編譯成機器代碼,保證了線上運行時的效率齐苛;而在開發(fā)期翘盖,Dart 代碼以 JIT 的方式運行,支持代碼的即時生效(HotReload)脸狸,提高開發(fā)效率最仑。第四,F(xiàn)lutter 的頁面和布局是基于 Widget 樹的方式炊甲,看似不習(xí)慣,但這種樹狀結(jié)構(gòu)解析簡單欲芹,布局卿啡、繪制都可以單次遍歷完成計算,而原生布局往往要往復(fù)多次計算菱父,“simple is fast”的設(shè)計效果颈娜。

Mac環(huán)境配置

1.使用鏡像

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

2.下載Flutter SDK,添加flutter相關(guān)工具到path中:

export PATH=pwd/flutter/bin:$PATH

3.在Android studio中安裝Flutter和dart插件浙宜。

什么是Dart

Dart是Google于2011年發(fā)布的一門開源編程語言官辽,旨在幫助開發(fā)者克服JavaScript的缺點,當然現(xiàn)在Dart已經(jīng)是一門全平臺的語音粟瞬,不僅可以開發(fā)服務(wù)端同仆,現(xiàn)在借助于flutter也可以開發(fā)原生Android應(yīng)用。

語言特性
  • Dart所有的東西都是對象裙品, 即使是數(shù)字numbers俗批、函數(shù)function、null也都是對象市怎,所有的對象都繼承自O(shè)bject類岁忘。
  • Dart動態(tài)類型語言, 盡量給變量定義一個類型,會更安全区匠,沒有顯示定義類型的變量在 debug 模式下會類型會是 dynamic(動態(tài)的)干像。
  • Dart 在 running 之前解析你的所有代碼,指定數(shù)據(jù)類型和編譯時的常量驰弄,可以提高運行速度麻汰。
  • Dart中的類和接口是統(tǒng)一的,類即接口揩懒,你可以繼承一個類什乙,也可以實現(xiàn)一個類(接口),自然也包含了良好的面向?qū)ο蠛筒l(fā)編程的支持已球。
  • Dart 提供了頂級函數(shù)(如:main())臣镣。
  • Dart 沒有 public辅愿、private、protected 這些關(guān)鍵字忆某,變量名以"_"開頭意味著對它的 lib 是私有的点待。
  • 沒有初始化的變量都會被賦予默認值 null。
dart語法關(guān)鍵字
變量
  • 使用var來定義變量弃舒,變量的類型可以通過變量值推斷出來
    var name = "LiBo";
    var age = 28;
    var height = 1.78;
  • 當然了癞埠,也可以使用特定類型來定義變量
    String name = "LiBo";
    int age = 28;
    double height = 1.78;
  • 如果變量不限于單個類型,則可以使用dynamic或Object來定義變量
    dynamic value = 20;
    value = "hello";

    Object value2 = 20;
    value2 = "hello";
  • 變量的默認值:因為變量中的內(nèi)容都是對象聋呢,如果變量聲明出初始值苗踪,那么該變量值就為null
    int value1;
    bool value2;
    var value3;
    dynamic value4;
常量

一個final變量只能被設(shè)置一次,而const變量是編譯時常量削锰,定義時必須賦值通铲。

class User {
    final name;
    static const sign = "我就是我,不一樣的煙火";

    User(this.name);
}
內(nèi)置類型
  • num
    dart中的num類型包括int類型和double類型器贩,沒有float類型颅夺。

  • lists
    Dart中使用的集合是數(shù)組或有序的對象組。Dart中數(shù)組是List對象蛹稍。

List array = ["user1", "user2", "user"];
運算符
  • ?. : 判斷對象是否為null吧黄,如果為null,則返回null唆姐,如果不為null拗慨,則返回該屬性。
class Person {
  var name;
  Person(this.name);
}

  void test() {
    Person p;
    var name = p?.name;
    print("name = $name");
  }
  • as:用來做類型轉(zhuǎn)化

  • is:判斷對象是否為某個類型

class Banana {
  var weight;
  Banana(this.weight);
}

class Apple {
  var color;
  Apple(this.color);
}

getFruit() => Banana(20);

調(diào)用:

    var b = getFruit();
    if(b is Apple) { //判斷對象是否為Apple類
      print("The fruit is an apple");
    } else if(b is Banana) { //判斷水果是否為Banana類
      print("The fruit is a banana");
    }
  • ??
    String name;
    String nickName = name ?? "Nick"; //如果name不為null厦酬,則nickName值為name的值胆描,否則值為Nick
  • ..
    級聯(lián)操作允許對同一個對象進行一系列操作。
class Student {
  var height;
  var weight;
  Student(this.height, this.weight);

  void getHeight() {
    print("height = $height");
  }

  void getWeight() {
    print("weight = $weight");
  }
}

    //同時調(diào)用該對象的多個函數(shù)
    Student(175, 65)
      ..getHeight()
      ..getWeight();
函數(shù)

Dart是一種真正的面向?qū)ο笳Z言仗阅,因此即使是函數(shù)也是對象并且具有類型Function昌讲。這意味著函數(shù)可以分配給變量或作為參數(shù)傳遞給其他函數(shù)。

main函數(shù)
void main() {
  runApp(MyApp());
}

Dart中每個應(yīng)用程序都必須有一個頂級main()函數(shù)减噪,該函數(shù)作為應(yīng)用程序的入口點短绸。

函數(shù)作為參數(shù)
  void loadData1() {

  }

  void loadData2(Function function) {
    function();
  }

  void loadData3() {
    loadData2(loadData1());
  }
推薦文章:
Flutter中文官方網(wǎng)站
一文了解dart語法
Dart語法學(xué)習(xí)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筹裕,隨后出現(xiàn)的幾起案子醋闭,更是在濱河造成了極大的恐慌,老刑警劉巖朝卒,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件证逻,死亡現(xiàn)場離奇詭異,居然都是意外死亡抗斤,警方通過查閱死者的電腦和手機囚企,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門丈咐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人龙宏,你說我怎么就攤上這事棵逊。” “怎么了银酗?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵辆影,是天一觀的道長。 經(jīng)常有香客問我黍特,道長蛙讥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任衅澈,我火速辦了婚禮键菱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘今布。我一直安慰自己,他們只是感情好拭抬,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布部默。 她就那樣靜靜地躺著,像睡著了一般造虎。 火紅的嫁衣襯著肌膚如雪傅蹂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天算凿,我揣著相機與錄音份蝴,去河邊找鬼。 笑死氓轰,一個胖子當著我的面吹牛婚夫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播署鸡,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼案糙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了靴庆?” 一聲冷哼從身側(cè)響起时捌,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炉抒,沒想到半個月后奢讨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡焰薄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年拿诸,在試婚紗的時候發(fā)現(xiàn)自己被綠了扒袖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡佳镜,死狀恐怖僚稿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蟀伸,我是刑警寧澤蚀同,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站啊掏,受9級特大地震影響蠢络,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迟蜜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一刹孔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娜睛,春花似錦髓霞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至障斋,卻和暖如春纵潦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垃环。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工邀层, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遂庄。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓寥院,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涧团。 傳聞我的和親對象是個殘疾皇子只磷,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361