想學Flutter,就請關注這個專欄
Flutter系列(一)——詳細介紹Flutter系列(二)——與React Native進行對比
htmlFlutter系列(三)——環境搭建(Windows)
gitFlutter系列(四)——HelloWorld
github
文檔歸檔:
github.com/yang0range/…
算法
以前,咱們一直在介紹Flutter相信你們對Flutter有一個整體的認識,,那麼如今咱們就要介紹一下Flutter使用的編程語言Dart
編程
Flutter的特性離不開Dart特別是讓不少人都很是喜歡的熱重載功能,很大的緣由就是由於Flutter使用了Dart,那麼就經過這一篇文章瞭解一下,咱們一塊兒瞭解一下什麼是Dart!服務器
Dart 1.0是於2013年11月14日由谷歌發佈的,由Lars Bak和Kasper Lund建立。它旨在幫助開發人員構建現代的web和移動應用程序。它涵蓋了客戶機、服務器和如今的Flutter移動設備。它提供了一系列工具,包括虛擬機、核心庫和包管理存儲庫。框架
Dart 是由谷歌開發的通用的編程語言,它經常使用於構建web、服務器、桌面和移動應用程序。異步
Dart是一種簡潔、清晰、基於類的面向對象的語言,它是基於JavaScript的可是結構要比JavaScript要多。async
Dart是一種面向對象的、類定義的、垃圾回收語言。它支持接口、mixin、類對象,具備化泛型、靜態類型等。
對於面向對象這個概念,相信瞭解Java的同窗對這個概念必定不會陌生。
例如:咱們有個Person Object他有不少特徵和行爲。
這些都是這個Person Object的屬性。
也就是由於有了這些特徵,行爲等等才決定了這我的是誰。
那麼回到Dart當中,全部的都是對象,那麼在就能夠能夠跟進對象的屬性的特徵,方法等等來進行編程。
之因此咱們在這裏又特別強調了一下面向對象的概念,是由於這個概念在Dart語言當中,相當重要!
在Dart語言中,全部的東西都是對象,不管是變量、數字、函數、null等都是對象,全部的對象都是Object類的子類。
Dart語言是強類型編程,一旦肯定了類型,那麼就不能夠改變變量類型,在編譯時會進行語法減產,可是Dart容許弱類型語言式的編程。
Dart代碼在運行前解析,指定數據類型和編譯時常量,能夠提升運行速度。
Dart語言的統一入口是main函數。
Dart的私有特性是在變量或者函數名前面加上下劃線_。
Dart支持async/await異步處理。
1.Dart是AOT(Ahead Of Time)編譯的,可編譯成快速,可預測的本地代碼。
2.Dart能夠JIT(Just In Time)編譯,開發週期快,爲Flutter熱重載提供基礎。
3.Dart能夠輕鬆建立60fps運行的流暢動畫和轉場。
4.Dart的聲明式編程佈局,易於閱讀和可視化,不須要單獨的聲明式佈局語言,如:XML,JSX。
5.Dart很是易於學習,具備靜態和動態語言,編程人員都熟悉的特性。
相信,看過上面的內容的小夥伴,多多少少對於Dart有個簡單的認識了,那麼爲何Flutter爲何採用Dart語言呢?
能夠歸結爲如下的三個方面:
Flutter框架使用函數式流,它重度依賴底層內存分配器對小量的、短生命週期內存分配的有效處理,在缺少這種特性的語言中Flutter沒法有效地工做。
Flutter的一個主要的價值主張就是節省工程資源,開發者經過同一套代碼庫能夠實現iOS和Android兩個平臺的應用開發工做。使用高產的語言提升了開發效率,也使得Flutter更具吸引力,這對於咱們框架團隊和開發者都異常重要。 構建Flutter主體的語言和咱們提供給用戶的是相同的,因此咱們須要在100k行代碼的基礎上保證高效,而且保證不犧牲framework和widgets對讀者的可讀性。
對於Flutter,咱們想要一個可以符合Flutter問題域的語言,即創造視覺用戶體驗,經過面嚮對象語言構建用戶界面框架,業內已經有了幾十年的經驗。固然咱們可使用非面向對象的語言,這將意味着重複發明輪子來解決幾個艱難的問題。此外,大多數的開發者已經擁有面向對象的開發經驗,這使得Flutter開發更加易學。
經過Flutter,咱們想要給開發者賦能,以開發出快速流暢的用戶體驗。爲了達到這一點,咱們須要可以在每一個動畫幀運行大量的代碼。這意味着咱們須要一種可以同時提供高效和穩定性能的語言,不能有周期性的停頓,不然會形成掉幀。
熱重載是Flutter最顯著的特性之一,有了這個特性,咱們能夠快速而且輕鬆的進行實現、構建UI、添加屬性和修復Bug。熱重載的加載過程就是經過源代碼文件注入在運行的Dart虛擬機當中來工做。
包名 | 描述 |
---|---|
dart:asynv | 異步編程,提供Future,Stream類 |
dart:collection | 集合 |
dart:convert | 不一樣類型的字符編碼解碼 |
dart:core | Dart語言核心功能,內置類型 |
dart:html | 網頁開發用到的庫 |
dart:io | 文件讀寫,IO相關 |
dart:math | 數字常量以及函數,隨機算法等 |
dart:svg | 事件和動畫矢量圖支持 |
要想學Flutter,先學Dart!
經過這篇文章,咱們詳細的介紹了一下Dart語言的「前世此生」。接下來,咱們要着重的介紹一些Dart的語法,只有瞭解了相應的語法啊,才能讀懂和寫出代碼,想要學習的小夥伴,請持續關注吧!
Flutter已是Top20的軟件庫,經過接下來的一系列的文章,但願我和你們一塊兒來學習Flutter,一塊兒進步,一塊兒有所收穫,掌握將來技術主流的主動權!
有什麼好的建議,意見,想法歡迎給我留言!