Dart学习(一)
const与final
- 两者都用于在dart中定义常量,都只能赋值一次;
- 区别:const是编译时常量,必须在定义时赋值明确的值;final是运行时常量,惰性初始化 ,即在运行时第一次使用前初始化,并且拥有const编译时常量的特性。
Dart中的字符串
多行字符串
在dart中可以用三个单引号或双引号声明一个多行字符串。
// example
String str = '''bar
bar
bar''';
字符串拼接
在dart中可以在字符串中使用$或字符串间加+来拼接两个或多个字符串。
// example
String str1 = 'bar1'
String str2 = 'bar2'
print("$str1 $str2")
print(str1 + ' ' + str2)
Dart中的数值类型
在dart中整型使用int关键字声明,浮点型使用double声明,运算符与js中相同。
Dart中的布尔类型
在dart中布尔类型使用bool关键字声明。
dart中==不会对两边变量进行类型转换,不同类型的值一定不相等。
Dart中的List类型(数组/集合)
为List指定类型
在定义时可以用<>为List指定类型。
// example
String list1 = <String>['a', 'b'];
String list1 = <int>[1, 2];
创建固定长度的集合
在dart中使用[]定义的集合可以使用add方法为集合新增元素;
使用List.filled(length, fill)创建的集合被指定了长度,只能修改,不能新增,也不能修改集合的长度;
// example
var list1 = List.filled(2, "");
List.filled(length, fill)创建的集合也可以指定类型,语法为List<>.filled(length, fill),不写默认根据fill进行类型推导。
// example
var list1 = List<String>.filled(2, "");
List中的常见属性
- length:集合长度;
- isEmpty:集合是否为空;
- isNotEmpty:集合是否不为空;
- reversed:集合倒序,排序后的数据并不是一个集合,可以通过.toList()将倒序后的数据转换为一个新集合;
List中的常用方法
- add():为集合新增元素,与js中的push()类似;
- addAll():为集合拼接一个集合;
- indexOf():查找集合中指定元素的索引,查找不到返回-1;
- remove():删除元素,需要传入一个元素;
- removeAt():根据索引删除元素;
- fillRange(start,end,fill):修改索引start(包括),到end(不包括)的元素为fill;
- insert(index,fill): 在索引index前插入fill元素;
- insertAll(index,list): 在索引index前插入list集合中的所有元素;
- join(str):将集合以str拼接为字符串;
- toList():用于将类数组转换为一个集合;
- 遍历方法与Set,Map通用
Dart中的Set
Set中的元素无序且唯一,不能通过索引获取值;
一般使用Set对List进行去重,使用方法与js中的基本相似;
Dart中的Maps类型(字典)
dart中通过{}或new Map()创建字典类型,类似js,使用或修改字典的属性通过[‘key’]的方式。
// example
var person = {
"name": "aaa",
"age": 36
};
var person2 = new Map();
person2["name"] = "bbb";
print(person["name"]);
print(person2["name"]);
Map中的常见属性
- keys:Map中所有的键名,可以通过.toList()转换为集合;
- values:Map中所有的值,可以通过.toList()转换为集合;
- isEmpty:Map是否为空;
- isNotEmpty:Map是否不为空;
Map中的常用方法
- addAll({…}):为Map增加另一个Map中的全部键值对;
- remove(key):删除Map中的key对应的键值对;
- containsValue(value):查找映射中是否有value值;
- 遍历方法与Set,List通用
Set,Map与List的通用方法
- forEach():遍历方法,与js中的forEach相似;
- map():遍历并生成新的Set,Map或List,与js中的map相似;
- where():遍历生成符合条件的Set,Map或List,与js中的filter相似;
- any():遍历查看当前Set,Map或List是否有任意满足条件的数据,有则返回true,与js中的some相似;
- every():遍历查看当前Set,Map或List是否所有数据都满足条件,是则返回true,与js中的every相似;
Dart中判断数据类型
在dart中可以使用is关键字来判断类型
Dart中的运算符
- 算术运算符:与js基本相似(~/表示取整)。
- 关系运算符:与js基本相似,不会做类型转换。
- 逻辑运算符:与js基本相似。
- 赋值运算符:=与js类似,??=表示变量为空为其赋值=后的值。
Dart中的类型转换
Number与String类型之间的转换
- Number =》 String:toString()方法。
- String =》 Number:int.parse()/double.parse()方法。
其他类型转换为Boolean类型
- isEmpty:判断字符串是否为空。
- == null:判断变量是否赋值。
- isNaN:判断变量值是否为NaN。