Flutter開發Dart極速入門 (基本類型)

Dart入門系列:
Flutter開發Dart極速入門 (基本類型)
Flutter開發Dart極速入門 (變量)
Flutter開發Dart極速入門 (函數)
Flutter開發Dart極速入門 (操作符與流程控制語句)
Flutter開發Dart極速入門 (異常)
Flutter開發Dart極速入門 (類和對象)
Flutter開發Dart極速入門 (泛型)
Flutter開發Dart極速入門 (Dart異步詳解)
Flutter開發Dart極速入門 (生成器)
Flutter開發Dart極速入門 (庫的使用)
Flutter插件化開發注意事項(Packages與插件化開發)
Flutter在Android原生工程中的集成

基本類型

Number數值

  • int: 整數值

  • double: 64-bit 雙精度浮點數

  • int和double是Number的子類

  • string 轉換成 int

    int i = int.parse('1');
    
  • 當給一個double類型賦一個int值時, 會自動轉成double

String字符串

  • Dart的字符串是utf-16編碼的字符序列, 可以使用 ’ ’ 或 " " 初始化

  • 可以使用三個單引號或雙引號來創建多行字符串對象

  • 可以使用 r 前綴創建"raw"字符串

    // 使用r屏蔽/轉義
      var strType2 = 'test1 \ntest2 ';	// print輸出結果 \n有換行效果
      var strType2r = r'test1 \n test2';	// print輸出: test1 \n test2
    
  • 可以在字符串中使用表達式: ${expression} , 如果表達式是一個標識符, 可以省略 {}, 如果表達式是一個對象, 則dart會自動調用對象的同String()來獲取一個字符串

  • StringBuffer

      StringBuffer sb = StringBuffer();
      sb..write('obj1')..write("...")..write("obj2");
      print('value: $sb'); // value: obj1...obj2
    

bool布爾類型

  • bool 對象未初始化的默認值是null

list列表(數組)類型

  • List 也是對象, Dart可以直接打印 List 包括 List 的元素

  • Java中直接打印 List 的結果是地址值

  • 有增刪改查, 支持倒序, 自帶排序、洗牌, 可使用+將兩個 List 合併

    List mList = List();  // 創建一個不固定長度的List
    mList = [1,3,2,5,4];  // 賦值
    int first = mList.first;
    print(mList.first); // 取出第一個元素
    print(mList.last); // 取出最後一個元素
    print(mList.length); // 獲取長度
    print(mList.isEmpty); // 是否爲空
    print(mList.isNotEmpty); // 是否不爲空
    print(mList.reversed); // 倒序
    print(mList..add(6)); // 增
    print(mList..addAll([7,9,8])); // 增加多個
    print(mList..remove(6)); // 刪
    print(mList..removeAt(1)); // 刪除某位置
    mList[1] = 66;
    print(mList); // 改
    print(mList..fillRange(1, 3, 9)); //設置第一到第二個的值爲9: print [1, 9, 9, 4, 7, 9, 8]
    print(mList.contains(9)); // 查: 是否包含
    print(mList.indexOf(7));  // 查: 取得元素下標
    print(mList..sort()); // 排序
    print(mList..shuffle()); // 洗牌(隨機亂序)
    var mList2 = mList.sublist(0, 3);
    print(mList2);  // 截取
    print(mList+mList2); // 合併
    

Set集合

  • Set – 無重複列表

    var dynamicSet = Set();
    dynamicSet.add('str');
    print('dynamicset: ${dynamicSet}');
    
  • set1.difference(set2) 返回set1中有但set2中沒有的元素

  • set1.intersection(set2) 返回set1與set2的交集

  • set1.union(set2) 返回set1與set2的並集

  • set1.retainAll([‘xxx’, ‘xxxxx’]) 只保留: set1中只保留這些元素(元素要先在set1中存在)

Map集合

  • 與 Java 類似
    // 動態類型
    var dynamicMap = Map();
    dynamicMap['name'] = 'Elvis';
    dynamicMap['age'] = 26;
    dynamicMap[1] = '1';
    print(dynamicMap);
    // 強類型
    var mMap = Map<int, String>();
    mMap[1] = 'android';
    mMap[2] = 'dart';
    mMap[3] = 'flutter';
    // 其他寫法
    var map1 = {1:'android1', 'name':'Elvis1'};
    // 常用屬性
    print(map1..addAll(mMap));  // 合併, 注意相同的key map1中的數據會被mMap中的數據替換
    print(map1.isEmpty);
    print(map1.isNotEmpty);
    print(map1.length);
    print(map1.keys); // key的集合
    print(map1.values); //value 的集合
    

Runes符號字符

Runes runes = new Runes('\u{1f605} \u6211');
var str1 = String.fromCharCodes(runes); //使用String.fromCharCodes顯示字符圖形
print(str1);
String str2 = '\u{1f605} \u6211'; //如果非4個數值,需要把編碼值放到大括號中
print(str2);

Symbols標識符

  • 用於反射, 目前反射模塊已被移除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章