flutter学习|flutter+Dart类的创建(六)

1 new的使用 【flutter学习|flutter+Dart类的创建(六)】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);


    推荐阅读