第1章 简介 1
1.1动机 1
1.2设计准则 2
1.2.1万物皆对象 2
1.2.2面向接口编程,而非面向实现 2
1.2.3类型是为开发者服务的 3
1.3限制 4
1.4概述 4
1.5本书结构 10
1.6相关语言及其对Dart的影响 11
第2章 对象、接口、类与mixin 12
2.1 accessor 13
2.2实例变量 16
2.3类变量 16
2.4 final变量 18
2.5相同与相等 18
2.6类与父类 20
2.7抽象方法与抽象类 22
2.8接口 23
2.9对象的创建 24
2.9.1重定向构造函数 28
2.9.2工厂构造函数 29
2.10 noSuchMethod() 30
2.11常量对象与字段 31
2.12类方法 31
2.13实例及其类与元类 33
2.14 Object与其方法 34
2.15 mixin 35
2.16相关语言 46
2.17总结 46
第3章库 47
3.1顶层 47
3.2脚本 48
3.3隐私 49
3.4导入 49
3.5将库拆分成part 54
3.6导出 55
3.7钻石导入 56
3.8延迟加载 58
3.9相关语言 59
3.10总结 60
第4章 函数 61
4.1参数 61
4.1.1位置参数 61
4.1.2命名参数 62
4.2函数体 63
4.3函数声明 64
4.4闭包 65
4.5调用方法与函数 66
4.5.1级联 66
4.5.2赋值 68
4.5.3使用运算符 68
4.6 Function类 68
4.7函数作为对象 70
4.8生成器函数 72
4.8.1迭代器与可迭代对象 72
4.8.2同步生成器 73
4.9相关语言 74
4.10总结 75
第5章 类型 76
5.1可选类型 76
5.2类型之旅 78
5.3接口类型 81
5.4类型实践:添加类型的表达式问题 83
5.5泛型 87
5.6函数类型 93
5.6.1可选位置参数 94
5.6.2命名参数 95
5.6.3重温Call() 96
5.7类型具体化 97
5.7.1类型检测 97
5.7.2强制类型转换 98
5.7.3检查模式 99
5.7.4具体化泛型 100
5.7.5具体化和可选类型 100
5.7.6类型和代理 101
5.8 malformed类型 104
5.9非严格 106
5.10相关语言 108
5.11总结 109
第6章 表达式和语句 110
6.1表达式 110
6.1.1字面量 110
6.1.2标识符 117
6.1.3 this 121
6.1.4常量 121
6.1.5创建对象 122
6.1.6赋值 123
6.1.7抽取属性 124
6.1.8方法调用 124
6.1.9使用运算符 125
6.1.10 Throw 126
6.1.11条件运算符 127
6.2语句 127
6.2.1 block 127
6.2.2 if 127
6.2.3循环 128
6.2.4 try-catch 130
6.2.5 rethrow 131
6.2.6 switch 131
6.2.7 assert 133
6.2.8 return 135
6.2.9 yield和yield-each 137
6.2.10 label 138
6.2.11 break和continue 139
6.3总结 140
第7章 反射 141
7.1自省 141
7.1.1速度与大小的影响 144
7.1.2例子:代理 146
7.1.3例子:序列化 147
7.1.4例子:解析器组合器 158
7.2为什么使用mirror 168
7.3元数据 169
7.4通过代码生成执行反射 169
7.5自省之外 172
7.6相关语言 173
7.7总结 173
第8章 异步和isolate 174
8.1异步 174
8.2 future 175
8.2.1使用future 175
8.2.2生成future 176
8.2.3调度 177
8.3 stream 178
8.4 isolate 178
8.4.1 Port 179
8.4.2 spawning 179
8.4.3安全 180
8.5例子:客户端-服务器通信 180
8.5.1 promise:更好的future 180
8.5.2将isolate作为分布式对象 182
8.6异步函数 187
8.6.1 await 187
8.6.2异步Generator 188
8.6.3 await-for循环 189
8.7相关语言 189
8.8总结 189
第9章 结论 190
9.1可选类型 190
9.2面向对象 191
9.3反射 192
9.4工具 192
9.5总结 193
相关文献 194