flutter+Dart类的创建(六)

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);

你可能感兴趣的:(flutter学习,flutter,android,ios)