Flutter基礎語法歸納

語言: CN / TW / HK

1、var、final、const

1.1、var

  • 變數,不賦值為null

1.2、final

  • 最終變數,只能被賦值一次,賦值後不可改變

1.3、const

  • 常量,初始時賦值,不可改變

2、num

2.1、num

  • ~/:計算時的取整操作
  • .toString():轉成字串

2.2、int

  • int型別不能直接賦值成double
  • .isOdd:判斷是否為奇數
  • .isEven:判斷是否為偶數
  • .toDouble():轉換成double型別

2.3、double

  • double型別可以直接賦值int型別
  • .toInt():轉換成Int型別

3、String

  • var str = '字串',再str = 10會出錯:帶賦值的初始化會固定其型別,要寫成var str; str = '字串'
  • str[n]:取字串str的第n個字元
  • + :拼接字串,str1 + str2
  • * :n個相同的字串拼接,str * n
  • $ :取值,str3 = str1 + str2,\$str3\${str1 + str2},{}中放表示式
  • r :字串中不需要轉譯字元,讓\n等這些能出現在字串中,r'貓\n狗’
  • .lengtg :取字串長度(轉譯字串佔1個長度,'\n':1個長度,r'\n':2個長度

3、1、雙引號""

  • 建立多行字串,直接寫,直接拼到一起顯示 image.png

3、2、三引號''' '''

  • 建立多行字串,並保留所有空格、換行等格式 image.png

4、list & Map

4.1、list(陣列)

  • .asMap():角標做key,轉成鍵值對
  • .forEach((element) { }:遍歷內容
4.1.1、 可變list
  • var list1 = [1,2,'字串'];
  • .add(value): 新增,list.add('cat');
  • .remove(value): 刪除,list.add('字串');
  • .insert(index, element): 插入,list.insert(1,'dog');
  • .clear(): 清空
  • .sort():排序
  • .sublist(int start ,[int? end]):擷取字串,start:從第幾位開始擷取, end:擷取多少位,可選的,不填為截到最後
4.1.2、不可變list
  • var list2 = const [1,2,'字串'];

4.2、Map(鍵值對、字典)

  • .length:長度
  • .keys:所有key
  • .values:所有值
  • .forEach((key, value) { }):遍歷所有內容
4.2.1、可變Map
  • var json = {1 : 10, 2.5 : 'dog', '3' : 'cat'};
4.2.2、不可變Map
  • var json = const {1 : 10, 2.5 : 'dog', '3' : 'cat'};

5、運算子

  • ??=:賦值運算,如果a為空,則賦值10,a ??= 10;
  • ??:條件表示式,如果a有值返回a,如果沒值返回b,c = a ?? b

6、方法、箭頭函式

  • 方法也是一個物件
  • 返回值和引數型別可以省略
  • 當方法的執行語句只有一句時可以使用箭頭函式=> 表示式
  • 可選引數:傳遞引數的時候必須帶上形參名字
    • {}表示可選的,引數不用按順序[]表示可選的,引數要按順序填 image.png

7、方法、函式

7.1、Dart方法作為引數傳遞

image.png

7.2、匿名方法

  • 沒有方法名稱的方法 ``` //匿名方法 (引數,可為空) { 執行程式碼; } //比如 (int i) { print('i'); };

//常規用func接收一下 var func = (引數) { 執行程式碼; } func(); ```

7.3、立即執行程式碼

((引數) { 執行程式碼; };

8、閉包(closure)

  • 定義在函式裡邊的函式,閉包也是一個物件
  • 可以訪問外部函式的區域性變數
  • 閉包函式被釋放前內部使用的變數不會被釋放會被閉包函式持續持有 image.png