Dart 部分
如果您学习过 JavaScript 或者 Java/Kotlin ,那么在学习 Dart 上难度并不大,Dart 综合了动态语言和静态语言的特性, 他也有一些自己的特点。
1、Dart 属于是强类型语言 ,但可以用 var 来声明变量,Dart 会自推导出数据类型,var 实际上是编译期的“语法糖”。dynamic 表示动态类型, 被编译后,实际是一个 object 类型,在编译期间不进行任何的类型检查,而是在运行期进行类型检查。
2、Dart 中 if 等语句只支持 bool 类型,switch 支持 String 类型。
3、Dart 中数组和 List 是一样的。
4、Dart 中,Runes 代表符号文字 , 是 UTF-32 编码的字符串, 用于如 Runes input = new Runes(’\u{1f596} \u{1f44d}’);
5、Dart 支持闭包。
6、Dart 中 number 类型分为 int 和 double ,没有 float 类型。
7、Dart 中 级联操作符 可以方便配置逻辑,如下代码:
event
..id = 1
..type = ""
..actor = "";
8、赋值操作符
比较有意思的赋值操作符有:
AA ?? “999” ///表示如果 AA 为空,返回999
AA ??= “999” ///表示如果 AA 为空,给 AA 设置成 999
AA ~/999 ///AA 对于 999 整除
9、可选方法参数
Dart 方法可以设置 参数默认值 和 指定名称
比如:
getDetail(Sting userName, reposName, {
branch = “master”}){
}
方法,这里 branch 不设置的话,默认是 “master” 。参数类型 可以指定或者不指定。调用效果:
getRepositoryDetailDao(“aaa", “bbbb”, branch: “dev”);
10、作用域
Dart 没有关键词 public 、private 等修饰符,_ 下横向直接代表 private ,但是有 @protected 注解 。
11、构造方法
Dart 中的多构造方法,可以通过命名方法实现。
默认构造方法只能有一个,而通过 Model.empty() 方法可以创建一个空参数的类,其实方法名称随你喜欢,而变量初始化值时,只需要通过 this.name 在构造方法中指定即可:
class ModelA {
String name;
String tag;
//默认构造方法,赋值给name和tag
ModelA(this.name, this.tag);
//返回一个空的ModelA
ModelA.empty();
//返回一个设置了name的ModelA
ModelA.forName(this.name);
}
12、getter setter 重写
Dart 中所有的基础类型、类等都继承 Object ,默认值是 NULL, 自带 getter 和 setter ,而如果是 final 或者 const 的话,那么它只有一个 getter 方法,Object 都支持 getter、setter 重写:
@override
Size get preferredSize {

本文介绍了Dart语言的关键特性,包括强类型、动态类型、闭包、数字类型、赋值操作符、可选方法参数、作用域规则、构造方法、gettersetter重写、断言、运算符重载、类与接口、Zone机制、Future和Stream的异步操作。此外,还探讨了Flutter的Widget、Element、RenderObject和Layer树、BuildContext、状态共享、生命周期以及异步构建。

1467

被折叠的 条评论
为什么被折叠?



