这一篇是记录一下我在学习Flutter的过程中,学习到的一些关于Dart语言的内容,太过基础的东西就不记录了,只记录一些我觉得有用的东西。

If null operator ??

Dart里有个特别的运算符,我也不知道该怎么翻译,记录这个运算符的原因是我觉得这个运算符非常的方便,通常我们在赋值的时候,为了避免空值都会先做判断,比如在javascript中会这样做

1
2
3
4
5
6
// 若newList不为空,赋值给list,否则赋值空数组给list
if (newList != null) {
list = newList;
} else {
newList = [];
}

或者使用条件运算符

1
2
// 若newList不为空,赋值给list,否则赋值空数组给list
list = newList != null ? newList : [];

但是在dart里,就可以用这个if null来很方便的来达成目的

1
2
// 若newList不为空,赋值给list,否则赋值空数组给list
List list = newList ?? [];

这个运算符还有其他的用法

1
2
// 若list为null,赋值newList给list
List list ??= newList;

虽然这个运算符都可以用其他的方式代替,但是有了这个运算符的确在编程的时候方便了很多,代码也更简洁清晰,希望typescript也能用上。
(Update) 写完这个不久就看到了ES2020将会更新这个功能,简直赞,还有其他很有用的新特性,比如Optional chaining.参考链接

级联操作符(..)

用于赋值

1
2
3
obj.attrOne = '';
obj.attrTwo = '';
obj.attrThree = '';

等于

1
2
3
4
obj
..attrOne = ''
..attrTwo = ''
..attrThree = '';

用于调用方法

1
2
var func1 = func2();
func1.func3();

等于

1
2
var func1 = func2()
..func3();