上次我記錄了Flutter的環境搭建,這次來簡單記錄一下Drat語言,Flutter是 Google推出并開源的移動應用開發框架,開發語言是Dart,那么Dart語言和其他的語言在語法上有上面區別呢,就我目前了解到的一部分,其實有很多java或者kotlin的影子。

一 、變量聲明

1.var

類似于kotlin中的var,它可以接收任何類型的變量,和kotlin一樣第一次賦值和就不能再次改變變量的類型了。

var t;
t = "hi world";
// 下面代碼在dart中會報錯,因為變量t的類型已經確定為String,
// 類型一旦確定后則不能再更改其類型。
t = 1000;
2.dynamic和Object

和java中的object一樣,所有對象都是object子類,萬物皆對象。
dynamic和var類型聲明的變量都可以賦值任意對象。和var區別就在于聲明的變量在后期還是可以改變變量類型的。

 dynamic t;
 Object x;
 t = "hi world";
 x = 'Hello Object';
 //下面代碼沒有問題
 t = 1000;
 x = 1000;
3. final和const

和java一樣final是用來修飾常量,只能被賦值一次。同樣const也和kotlin中的用法很類似,也是用來表示常量,只是在dart上被final或者const修飾的變量,變量類型可以省略。

//可以省略String這個類型聲明final str = "hi world";
//final String str = "hi world"; 
const str1 = "hi world";
//const String str1 = "hi world";

二、函數

1.和java一樣dart也是一種面向對象的語言,函數實際上也是一個對象。
bool isNoble(int index) {
  return _list[index] != null;
}
2.和java中不同的是,bool這個函數返回類型可以不用寫,默認返回dynamic類型。
isNoble(int index) => return _list[index] != null;

如果只包含一個表達式的函數可以簡寫位一行,是不是有寫java的影子,哈哈。

3.Dart中函數可以作為變量存在:
var say = (str){
  print(str);
};
say("hello world");
4.和kotlin 類似Dart中也可以將函數當作參數傳遞:
void execute(var callback) {
    callback();
}
execute(() => print("hello world""))
5.在Dart中定義函數的時候,可以使用{param1, param2, …},放在參數的后面,可以用于指定名稱參數。例如:
//設置[name]和[age]標志
void setUser({String name, int age}) {
    // ... 
}
enableFlags( age: 12,bold: “xiaoming”);

調用函數的時候可以指定函數的名稱,優先賦值給后面的參數,這和kotlin里面還是挺像的。只是這里需要添加額外的大掛號。
今天就先記錄到這里,以后有用到其他在來補充。