歡迎轉載,請註明出處
本節將介紹Dart語言有別於其他程式語言的特性或比較重要的特性。假定,你已經有一些其他程式語言的基礎,如C,C++,Java,JavaScript等。
在正式開始之前,有必要介紹下Dart的版本資訊,因為Dart的語法規則是跟它的版本有關係的。執行下面的命令:
dart --version
複製程式碼
可以看到我本機安裝的Dart版本是2.5.0,實際上Dart 2.7.1穩定版已於2020年1月23日釋出了。這是因為我們前面介紹過,我們選擇安裝的Flutter SDK版本是1.9,而不是最新的1.12。
本節及後續有關介紹Dart語法和功能,如與你本機執行的不一致的,請檢查下你們的Dart版本號。有興趣的話,點這裡可以看到各個Dart版本之間的更新情況。
變數
我們可以使用以下3種方式宣告一個變數:
var name="groupones";
dynamic sex=true;
int age=18;
複製程式碼
儘管Dart是強型別語言,但是在宣告變數時指定型別是可選的,因為Dart可以進行型別推斷。例如,上例的name變數可以推斷為是String型別。dynamic表示變數型別是動態,類似於JavaScript語言的var關鍵字。我們可以通過一個小實驗進行驗證。
void main() {
var name="groupones";
dynamic sex=true;
int age=18;
print('sex old vallue is $sex');
sex = "男";
print('sex new vallue is $sex');
}
複製程式碼
第7行和第9行print中的$sex表示字串插值,使用sex變數值替換$sex,這類似於ES6的模板字串。
我們可以選中檔案後,右鍵選擇Run,執行該檔案:
在Dart中,未初始化的變數擁有一個預設的初始化值:null。
final和const都可以定義常量。我們在Hello Widget專案裡已經用到過了。
final TextStyle _biggerFont = const TextStyle(fontSize: 18.0);
複製程式碼
一個final變數只可以被賦值一次,如果更改final變數值,就會有以下的編譯錯誤彈框:
一個const變數也是常量,是編譯時常量。例如: 因為new List()是程式執行階段才能確定的一個具體值,所以靜態編譯階段賦值給const常量會出錯,而賦值給final常量則沒有問題。那麼編譯常量有什麼用?它可以用於將建構函式宣告為const 的,這種型別的建構函式建立的物件是不可改變的,也可以用於定義列舉量。我們將會再後續的部分進行示例介紹。