错误: Setting VM flags failed: Unrecognized flags: checked

关闭项目编译中的 Checked mode 即可

Dart 中单例模式

class Manager {
// 工厂模式
factory Manager() =>_getInstance();
static Manager get instance => _getInstance();
static Manager _instance;
Manager._internal() {
// 初始化
}
static Manager _getInstance() {
if (_instance == null) {
_instance = new Manager._internal();
}
return _instance;
}
}


// 无论如何初始化,取到的都是同一个对象
Manager manager = new Manager();
Manager manager2 = Manager.instance;

Dart 2.3 新特性 展开运算符 ...

和JS中的展开符一样,可以展开Map 和 List

List 集合可使用 For in 迭代 和 if 判断

需要注意的是该特性被当作表达式(所以三元表达式也可以),不用加花括号和分号

不能 return 和 使用多行语句(const 集合不支持)

箭头函数只做完表达式,不支持多行写法(花括号无用)

多行语句只能使用匿名函数

和JS一样 数学运算有精度问题

没有接口 统一定义为 抽象类

使用 implement 则作为接口,使用 extand 则作为抽象类

不能多继承,但可以使用 with 混入进行代替

with 的限制: 被混入的类必须式直接继承至 Object 不能有其他继承

私有变量为变量名前加_ 且必须在单独一个Dart文件中才会生效

方法中 [] 为可选参数 { tyep var} 为可选命名参数 var a=1000 为参数默认值

命名参数传入参数必须带参数名 var : value

字符串 ``` 可作为多行文本

Final 和 const 都可表示常量,但Final可延迟初始化

常量类型不能使用动态类型

没有初始化的变量都会被赋予默认值 null

.. 级联操作符 相当于链式调用

?. ??= 判断null 非空就赋值 执行