Skip to content

常用数据类型

String

var 定义字符串

dart
void main() {
  var str1 = 'my name is ronhai';
  var str2 = "my name is rh";
  print(str1);
  print(str2);
}

String 定义字符串

dart
void main() {
  String str1 = 'my name is ronhai';
  String str2 = "my name is rh";
  print(str1);
  print(str2);
}

写多行的字符串‘’‘,“”“

dart
void main() {
  String str = '''my name is ronhai,
  我的中文名为隆海
  ''';
  print(str);
}

字符串拼接

dart
void main() {
  String str1 = '''my name is ronhai, ''';
  String str2 = '中文名:隆海';
  print("${str1}${str2}");
  print(str1 + str2);
}

image-20240711112246050

Number

INT 整型

只能是整型

dart
void main() {
  int a = 123;
  print(a);
}

DOUBLE 浮点型

double 既可以整型也可以是浮点型

dart
void main() {
  double b = 23.13;
  b = 23;
  print(b);
}

Boolean

只有两个值:true 和 false,跟 swift 类似

bash
void main() {
  bool flag = true;
  print(flag);
  flag = false;
  print(flag);
}

image-20240711112902650

List(数组)

数组、集合

常用属性

  • length 长度
  • reversed 翻转
  • isEmpty 是否为空
  • isNotEmpty 是否不为空

常用方法:

  • add(value) 增加
  • addAll([value]) 拼接数组
  • indexOf(value) 查找 传入具体值 找到返回索引,没有返回-1
  • remove(value) 删除 传入具体值
  • removeAt(number) 删除 传入索引值
  • fillRange(start,end,value) 修改
  • insert(index,value) 指定位置插入
  • insertAll(index,list) 指定位置插入 List
  • toList() 其他类型转换成 List
  • join() List 转换成字符串
  • split() 字符串转化成 List
  • forEach 循环
  • map
  • where 把满足条件的返回一个新的集合
  • any 集合有一个满足条件的就返回 true
  • every 每一个满足条件返回 true,否则 flase

定义集合

dart
void main() {
  var lst1 = [1, 2, 3];
  print(lst1);
  var lst2 = [true, 'rh', 123];
  print(lst2);
}

image-20240711113253601

指定集合的类型

dart
void main() {
  var l2 = <String>['rh', 'ronhai', '隆海'];
  print(l2);
}

增加数据

dart
void main() {
  var l4 = [];
  print(l4);
  print(l4.length);
  l4.add(33);
  print(l4);
  var l5 = [3, 'rh', true];
  l4.addAll(l5);
  print(l4);
}

image-20240711113807656

创建指定长度的集合

dart
void main() {
  var l6 = List.filled(3, ""); //创建固定长度的集合1是长度,2是参数
  print(l6);
}

不能修改集合长度

dart
# 不可以修改长度
void main() {
  var l6 = List.filled(3, ""); //创建固定长度的集合1是长度,2是参数
  print(l6);
    l6.length=0;
}
# 可以修改长度
void main() {
  var l1 = [11, 22, 33, 44];
  l1.length = 2;
  print(l1);
}

Maps(字典)

常用属性:

  • length 长度
  • reversed 翻转
  • isEmpty 是否为空
  • isNotEmpty 是否不为空

常用方法:

  • remove(key) 删除指定 key 的数据

  • addAll({...}) 合并映射 给映射内增加属性

  • containsValue 查看映射内的值 返回 true/false

  • forEach()

  • map() 用于修改集合的数据

    dart
    void main(List<String> args) {
      Map p = {"name": "ronhai", "age": 23, "sex": '男'};
      var ls1 = [1, 2, 3, 'true', 'rh'];
      var b = ls1.map((k) {
        return k;
      });
      print(b.toList());
    }
  • where() 把满足条件的返回一个新的集合

  • any() 集合有一个满足条件的就返回 true

  • every() 每一个满足条件返回 true,否则 flase

键名必需双引号。取值是["键名"]

第一种定义方式:

dart
void main() {
  var person = {
    "name": 'rh',
    "age": 23,
  };
  print(person);
  print(person['name']);
}

第二种定义方式:

dart
void main() {
  var p = new Map();
  p['name'] = '李四';
  p['age'] = 23;
  p['hobby'] = ['跑步', '音乐', '电影'];
  print(p);
}
dart
void main(List<String> args) {
  Map p = {"name": "ronhai", "age": 23, "sex": '男'};
  print(p.keys.toList());  #[name, age, sex]
  print(p.values.toList()); # [ronhai, 23, 男]
}

Set

dart
void main() {
  var a = Set();
  print(a);
  a.add('111');
  print(a);
  a.add('rh');
  print(a);
}
# {}
# {111}
# {111, rh}

空安全

Null safety 翻译成中文的意思是空安全。

null safety 可以帮助开发者避免一些日常开发中很难被发现的错误,并且额外的好处是可以改善性能。Flutter2.2.0 (2021 年 5 月 19 日发布)之后的版本都要求使用 null safety。

  • ? 可空类型
  • !类型断言
dart
void main() {
  int a = 123;
  a = null; //A value of type 'Null' can't be assigned to a variable of type 'int'.

  String username = '隆海';
  username =
      null; //A value of type 'Null' can't be assigned to a variable of type 'String'.
}

可空类型

dart
void main() {
  int? a = 123;
  a = null;
  String? username = '隆海';
  username = null;
  List<String>? list = ['rh', 'ronhai', 'ronhai.com'];
  list = null;
}

类型断言

dart
void main() {
  String? str = 'this is str';
  // str = null;
  print(str!.length);
}
//如果不为空输出长度,为空会抛出异常

late

关键字主要用于延迟初始化

dart
class Person {
  late String name;
  late int age;

  void setName(String name, int age) {
    this.name = name;
    this.age = age;
  }

  String getName() {
    return '${this.name}----${this.age}';
  }
}

void main() {
  var p = new Person();
  p.setName('rh', 23);
  print(p);
}

required

required 关键词,加了就是必传参数:

  • 老版本@required 是注解

  • 现在它已经作为内置修饰符。

    主要用于允许根据需要标记任何命名参数(函数或类),使得它们不为空。因为可选参数中必须有个 require