运算符
算术运算符+,-,*,/,~/,%;
递增递减++var,var++,--var,var--;
关系运算符==,!=,>,<,>=,<=;
逻辑运算符!,&&,||;
赋值运算符:=,??=
还有复合运算符;条件表达式:三目运算符:condition?expr1:expr2,??运算符:expr1??expr2
控制语句
if语句;
switch..case语句(比较类型num,String,编译期常量,对象,枚举;continue跳转标签);
for循环,for...in循环;
while循环,do...while循环;
终止循环break,跳出当前循环continue;
方法
定义:返回类型 name(参数){return 返回值},
方法也是对象,并且有具体的类型Function,返回值,参数都可省略,
=>只适用一个表达式,没指定返回值,则默认返回null;
可选命名参数{p1,p2},调用必须写键,可选位置参数[p1,p2],可选参数声明必须在具体参数后面;
使用=在可选参数指定默认值,默认值只能是编译时常量;
方法可作为对象赋值给其他变量,方法可作为参数传递给其他方法;
匿名方法(参数){retuen 返回值},可作为上述对象的特性;
闭包是一个方法(对象),定义在其它方法内部,能够访问外部方法内的局部变量,并持有状态;
枚举
是一种有穷序列集的数据类型,使用enum定义一个枚举,常用于代替常量,控制语句等,index从0开始,依次累加,不能指定原始值,不能添加方法;
dart中类型是可选的,使用泛型限定类型(常用在抽象类),能够有效的减少代码重复;
可用在类,方法上(方法名后面)
面向对象
类与对象,class声明一个类,new创建一个对象,new可省略,
所有对象继承于Object类,属性默认会生成getter和settter方法,使用final声明的属性只有getter方法,通过.访问,方法不能被重载.
dart中的可见性以library(库)为单位,默认情况下每一个dart文件就是一个库,使用_表示库的私有性,使用import导入库;
计算属性的值是通过计算而来的,本身不存储值,计算属性赋值是通过计算转换到其它实例变量(set,get);
如果没有自定义构造方法,则会有默认的构造方法,若存在则无效,构造方法也不能重载,可以使用命名构造方法,可实现多个构造方法,使用类名.方法的形式实现;
常量构造方法:如果类是不可变状态,可以把对象定义为编译时常量,使用const声明构造方法,并且所有变量都为final,使用const声明对象,可以省略;
工厂构造方法:类似于设计模式中的工厂模式,在构造方法前添加关键字factory实现一个工厂构造方法,并可返回一个对象;
初始化列表:在构造方法执行之前执行,使用逗号分隔初始化表达式,常用于设置final变量的值;
静态成员:使用static来实现类级别的变量和函数,静态成员不能访问非静态成员,非静态成员可以访问静态成员,类中的常量需要使用static const声明;
对象操作符:条件成员的访问使用?.可避免空指针,类型转换as,是否指定类型is,is!,级联操作..;
如果类实现了call()方法,则该类的对象可以作为方法使用;