6-Dart语言
- Dart 当中的 「..」表示什么意思?
Dart 当中的 「..」意思是 「级联操作符」,为了方便配置而使用。「..」和「.」不同的是调用「..」后返回的相当于是 this,而「.」返回的则是该方法返回的值。 - Dart 的作用域
Dart 没有 「public」「private」等关键字,默认就是公开的,私有变量使用下划线 _开头。
说一下 mixin 机制?
mixin 是 Dart 2.1 加入的特性,以前版本通常使用 abstract class 代替。简单来说,mixin 是为了解决继承方面的问题而引入的机制,Dart 为了支持多重继承,引入了 mixin 关键字,它最大的特殊处在于: mixin 定义的类不能有构造方法,这样可以避免继承多个类而产生的父类构造方法冲突。
mixins 的对象是类,mixins 绝不是继承,也不是接口,而是一种全新的特性,可以 mixins 多个类,mixins 的使用需要满足一定条件。
基础
抽象类(接口)
抽象类通常用来定义接口,以及部分实现。
在 Dart 中没有 interface 这个关键字,只有 abstract,所以可以使用 abstract 来生成接口:
1 | |
如果想 extents 多个类的话需要使用 with 关键字,可以多继承
1 | |
变量的默认值
不要被之前的Java所禁锢,比如之前的Boolean值默认会是false,但是在Dart中的bool值默认也是null,记着,一切皆对象,对象的默认值为null
num类型
int和double是num的子类
1 | |
dynamic ,var、object
dynamic
所有 dart 对象的基础类型,在大多数情况下,不直接使用它通过它定义的变量会关闭类型检查,这意味着 dynamix x= ‘hal’;
x.foo (); 这段静态类型检查不会报错,但是运行时会 crash,因为 x 并没有 foo() 方法,所以建议大家在编程时不要直接使用 dynamic;
var
是一个关键字,意思是”我不关心这里的类型是什么”,系统会自动判断类型 runtimeType;
object
是 Dart 对象的基类,当你定义: object o =xxx ;时这个时候系统会认为 o 是个对象,你可以调用 o 的 toString () 和 hashCode () 方法因为 Object 提供了这些方法,但是如果你尝试调用o.foo () 时,静态类型检查会运行报错。综上不难看出 dynamic 与 object 的最大的区别是在静态类型检查上。
构造函数
位置可选参数,只需要将可选参数放入中括号即可,例子如下;
func_text (a, [b = 4]) { }
匿名函数
var a = (b, c){ return b + c; };
//一般构造方法的书写格式
Person (this. name, this. age);
多构造函数
1 | |
. then ()的用法
1 | |
可以使用三个单引号创建多行字符串对象
1 | |
定义函数时可省略类型(不建议)
1 | |
Dart中函数是Function类型的对象。所有的函数都返回一个值。如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。
支持缩写语法 => (Kotlin是用=来实现)
1 | |
函数别名
用typedef给函数起一个别名,使用比较方便。例如定义一个方法的回调,直接使用别名定义。没返回值,则只要参数匹配就行了,如果定义了返回值,则返回值不一样会报错。
1 | |
调用
1 | |
级联:..
这个其实就是链式调用
1 | |


Setter和Getter
在Java中get和set方法可以直接生成,在Dart中无需自己定义。每个实例变量都隐含的具有一个 getter, 如果变量不是 final 的则还有一个 setter。