一、数据类型
1.整数型Number
只有两种类型:int,double;
~/:取整
2.字符串String
创建
使用单/双引号创建
使用三个单/双引号创建多行字符串
使用r创建原始raw字符串(忽略转义字符)
操作
*3:copy三次;
${}:差值表达式;
判断相等:==
3.dynamic
二、运算符
1.赋值运算符:
??= 等号前表达式为空则取等号后,否则取等号前;
2.条件表达式:
三目运算符;
a??b:若a为空则取b,否则取a;
三、控制语句
1.for…in
2.switch_case:
continue:跳转标签,跳转到指定的case;
四、方法
1.方法特性:
1.方法也是对象,并且有具体类型Function;
2.返回值类型,参数类型均可省略;
3.箭头语法=> expr是{return expr;}的缩写,只适用于一个表达式;
4.方法都有返回值,若没指定,默认return null;
2.可选参数:
1.{}:可选命名参数;
2.[]:可选位置参数;
3.可选参数必须在具体参数后面; 默认参数值;
3.方法对象:
1.方法可作为对象赋值给其他变量;
2.方法可作为参数传递给其他方法;
4.闭包:
1.闭包是一个方法(对象);
2.闭包定义在其他方法内部;
3.闭包能够访问外部方法内的局部变量,并持有其状态;
五、面向对象
1.类与对象:
New可省略;
属性与方法:
默认生成getter和setter方法;
方法不能被重载;
类及成员可见性:
以library(库)为单位;
默认情况下,每个Dart文件就是一个库;
使用_表示库的私有性;
2.计算属性:
不存储;通过在属性类型及名称中间加get/set来声明;
3.构造方法:
语法糖this.:在构造方法之前对属性赋值;
构造方法不能重载;
多个构造方法:命名构造方法可实现,类名.方法
常量构造方法:
如果类是不可变状态,可以把对象定义为编译期常量;
如果要将对象声明为常量,则需要常量构造方法;
使用const声明构造方法,并且所有变量都为final;
使用const声明对象,可以省略;
工厂构造方法:
在构造方法前加关键字factory声明工厂构造方法;
工厂构造方法中可以返回对象;
4.初始化列表:
在构造方法体执行前执行;
使用逗号分隔初始化表达式;
常用于设置final变量的值;
Person.withMap(Map map):name= map['name'],gender=map['gender’]{}
5.对象操作符:
条件成员访问:?.
类型转换:as
是否指定类型:is,is!
级联操作:..
person ..name = 'luka' ..gender = 'male' ..work();
6.对象call方法:
若类实现了call()方法,则类的对象可作为方法使用;
void call(name,gender){
print('$name work$gender');}
person('luka','female');