dart第一篇:dart基础
dart的变量是空安全的,即默认不能为空,如String a = null,编辑器会报错。如果想让某一个变量可以为空,则在定义的时候要在类型后面加?,即String? a = null,这样编辑器才不会报错。
dart可以通过三对单引号或者双引号来定义多行字符串,就好像Java17中的多行字符串一样,如String str = """a
b
c""";
dart中用int表示正数,double代表小数,num是这两个类的父类。没有其他的数字类。int与double计算,得到double。取余用%表示,整除用~/表示。
List的静态方法:
filled()用于生成一个指定长度和元素的数组,通过第三个参数决定生成的数组是定长还是不定长的,默认是定长的。
genetate()方法用于生成一个指定初始长度的数组,并且可以指定元素生成器以及数组是否定长。默认是不定长的。
List的实例方法:
void fillRange()方法用于把数组指定区间的元素都替换成一个其他元素,会修改原数组。如一个数组是[1, 2, 3, 4],其调用fillRange(0, 2)后会变为[5, 5, 3, 4]。
void replaceRange方法用于把数组指定区间的元素替换成一个新数组,会修改原数组,原数组长度可能会变。如一个数组是[1, 2, 3, 4],其调用replaceRange(0, 2, [5, 6, 7])后会变为[5, 6, 7, 3, 4]。
void removeRange(int start, int end)方法可以从源list中把指定索引区间的元素删掉,会改变原数组。
void removeWhere(bool test(E element))方法可以把满足指定条件的元素从数组中删除都删除,会改变原数组。
bool remove(Object? value)方法可以把指定元素从数组中删除。
E removeAt(int index)方法可以把指定索引处的元素从数组中删除。
E removeLast()方法可以把数组最后一个元素从数组中删除。
T fold()、T reduce()方法用于聚合,返回一个值,可用于求和、求乘积等聚合操作。
Iterable followedBy()方法可用于和另一个List实例拼接,如[1, 2].followedBy([3, 4])返回[1, 2, 3, 4]。
Iterable getRange()方法返回一个子数组。
void insert()方法用于往数组中指定位置处插入一个元素,会修改原数组,数组中指定位置处及之后的元素都会往后移。
void insertAll()方法用于往数组中指定位置处插入一个数组,会修改原数组,数组中指定位置处及之后的元素都会往后移。
String join()方法用于数组拼接,返回一个字符串。
Iterable where()方法用于从一个数组中把满足条件的元素都找出来。
Iterable<T> whereType<T>()方法用于从一个混编的数组中把指定类型的元素都找出来。
Map<int, E> asMap()把list转为一个map,key是索引,value是对应元素。在list.map().toList()的场景中,如果想对某个索引的元素做一些特殊处理,就可以先把list转map,然后获取此map的entries属性,再调用entries的map().toList(),即
var list2 = list.asMap().entries.map((entry) {
if (entry.key == 0) {
// 特殊逻辑
return entry.value;
} else {
return entry.value;
}
}).toList();
如果要把两个list拼合,那么可以用...。如a、b都是一个数组,想定义c等于a+b,则可以var c = [...a, ...b]。
可以通过is关键字来判断变量是否是某种类型,如bool flag = a is String,判断变量a是否是String类型。
可以通过identical()方法查看两个引用是否指向同一个对象。如
String a = '1';
String b = '1';
bool c = identical(a, b);
实体类对象、Map、String之间相互转化
import 'dart:convert';
User user = User();
String str = jsonEncode(user); // 实体类对象转字符串
Map<String, dynamic> map = jsonDecode(str);// 字符串转Map
User user = User.fromJson(map);// Map转实体类
如果变量a的值是【如果b不等于null,则为b,否则为c】,则可以用String a = b ?? c,如果用三目表达式的话,编辑器会提示要我们优化成这样。
!.用于
?.用于
浙公网安备 33010602011771号