1 new的使用
Dart像C++和JAVA一样,支持new关键字的使用,但当前已经可以不使用该关键字来创建新的对象。
final box = new SizedBox(width: 5);
当前dart支持去掉new关键字来创建对象,这样代码读起来更整洁。
final box = SizedBox(width: 5);
2 成员变量赋值
传统的赋值方式,在构造函数中定义变量,并在构造中依次给成员变量赋值:
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
dart支持如下的构造方式:
class Point {
int x;
int y;
Point(this.x, this.y);
}
3 带参数类的构造
传统的方式:
final pt = Point(10,20);
传统的方式虽然看起来代码量更少,但匹配的参数项容易出错。
dart支持的方式,参数的对应看起来更加直观。
?
最大的优点:不用像C++一样,定义参数的时候,可以缺省的参数一定要放在必须的参数项之后。
?参考如下的构造函数(参数key为选填):
const TitleWidget({
Key? key,
@required this.title,
@required this.desc,
}) : super(key: key);
final pt = Point(x:10,y:20);
4 可选和必须参数项
默认情况下?? Point(this.x, this.y) 类型的构造函数(参数中指定参数名称),参数是非必须的。所以可以使用如下的方式来构造:
final pt = Point();
如要强制输入参数,则需要加上?@required关键字。
Point(@required this.x, @required this.y)
注意: 在使用强制要求输入参数后,仍然可以赋值为null,所以如果需要的话,最好在构造中增加null判断。
final pt = Point(x:null,y:null);
带默认值的构造函数示例:
class Point {
int x;
int y;
Point( @required this.x, this.y=0);
}
有默认值情形下的调用示例:?
final pt = Point(x:10);
|