Flutter - Dart 基础(数据类型)

191 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

数据类型

Dart 中的一切皆是对象,包括数字、布尔值、函数等,每个对象都是一个实例,它们都继承于 Object,所以它们的默认值也就是 null

在 Dart 主要有:

  • 字符串类型(String)
  • 数字类型(int、double)
  • 布尔类型(bool)
  • 集合类型(List,Set,Map)
  • Runes 类和 Symbols 类型(后两个用的并不太多)

字符串类型(String)

  • 使用 ''"" 创建,使用带有单引号或双引号的三重引号可以创建多行字符串

    // 双引号字符串
    var str1 = "单行字符串";
    
    // 单引号字符串
    var str2 = '单行字符串';
    
    
    var str3 = '''
    多行字符串
    多行字符串
    多行字符串
    ''';
    
  • 字符串和其他变量或表达式拼接: 使用 ${expression},如果表达式是一个标识符,那么 {} 可以省略

    var name = 'dart';
    var version = '2.1.7';
    
    print('language is ${name}, version is $version'); 
    //language is dart, version is 2.1.7
    
  • 字符串拼接,使用 +

    var str4 = "Hello";
    var str5 = "world";
    var str6 = str4 + ' ' + str5 + ' ';
    print(str6); //Hello world
    

数字类型(int、double)

  • Number 类型有量两种分别是 intdouble
    var height = 180;
    print(height.runtimeType);  //int
    
    
    var weight = 70.0;
    print(weight.runtimeType);  //double
    
  • 字符串和数字的转化
    • 字符串转数字

      // String -> int
      var height = int.parse("180");
      print(height.runtimeType);  //int
      
      // String -> double
      var weight = double.parse("70.0");
      print(weight.runtimeType);  //double
      
    • 数字转字符串

      // int -> String
      var height = 180.toString();
      print(height.runtimeType);  //String
      
      // double -> String
      var weight = 70.0.toString();
      print(weight.runtimeType);  //String
      
    • 保留小数

      var value = 1.234567;
      print(value.toStringAsFixed(2));  //1.23
      

布尔类型(bool)

bool 类型是编译时常量,分别是:

  • true
  • false

集合类型(List,Set,Map)

List

  • List 的创建

    • 根据类型推导的 List

      var list = [1, 2, 3, 4];
      
    • 明确类型的 List

      List<int> arr = [1, 2, 3, 4];
      
  • List 常用属性

    var list = ["A", "B", "C", "D"];
    //获取list长度
    print(list.length);  //4
    //list是否为空
    print(list.isEmpty);  //false
    //list是否有元素
    print(list.isNotEmpty); //true
    //翻转 
    print(list.reversed); //(D, C, B, A)
    //查看List中是否存在指定元素
    print(list.contains("A")); //true
    
  • List 常用方法

    • 添加新元素到list

      var list = ["A", "B", "C", "D"];
      list.add("E");
      print(list); //[A, B, C, D, E]
      
    • 将另外一个list拼接到当前的list后面

      var list = ["A", "B", "C", "D"];
      var arr = ["X", "Y", "Z"];
      list.addAll(arr);
      print(list); //[A, B, C, D, E, X, Y, Z]
      

      简写(使用扩展操作符(...))

      var arr = ["X", "Y", "Z"];
      var list = ["A", "B", "C", "D", ...arr];
      print(list); //[A, B, C, D, E, X, Y, Z]
      
    • 删除指定元素

      var list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
      
      list.removeAt(5);
      print(list);  //[1, 2, 3, 4, 6, 7, 8, 9]
      
    • 清除所有元素

      list.clear();
      print(list);  //[]
      
    • 使用setRange方法
      //将list中的第一个参数到第二个参数之前的元素替换为mList中的元素
      var list = ["A", "B", "C", "D", "E", "F", "G"];
      var mList = ["x", "y", "z"];
      list.setRange(2, 4, mList);
      print(list); //[A, B, x, y, E, F, G]
      
  • var list = ["A", "BB", "C", "DD", "E", "FF", "G"];
    //获取第一个元素
    print(list.first); //A
    //获取最后一个元素
    print(list.last); //G
    
    //查看List中是否存在指定元素
    print(list.contains("C")); //true
    
  • 遍历

    var list = ["A", "B", "C", "D"];
      
      for (var i = 0; i < list.length; i++) {
        print(list[i]);
      }
    
      list.forEach((element) {
        print(element);
      });
    
      for (var item in list) {
        print(item);
      }
    

Set

  • 使用 {} 创建 Set,是一个元素唯一的无序的集合类型
  • 各个属性、方法同 List

Map

  • 使用 {} 创建 Map

    // 可变Map
    Map map = {"key": "value"};
    var map = {"key": "value"};
    
    // 不可变Map
    var map = const {"key": "value"};
    
    // 设置键值类型
    Map<String, Object> mMap = {};
    mMap["str"] = 123;
    mMap["num"] = "123";
    
  • 常用属性方法

    var map = {};
    map["name"] = "小明";
    map["age"] = 12;
    print(map); //{name: 小明, age: 12}
    
    // 键值对个数
    print(map.length); //2
    // 是否为空
    print(map.isEmpty); //false
    // 所有key
    print(map.keys); //(name, age)
    // 所有value
    print(map.values); //(小明, 12)
    // 是否包含address
    print(map.containsKey("address")); //false
    
    // 删除键值对
    map.remove("age");
    print(map); //{name: 小明}
    
    // 修改键值对
    map["age"] = 18;
    print(map); //{name: 小明, age: 18}