Dart类中的构造函数之间的区别

时间:2018-07-24 07:13:48

标签: dart

class Product {
  Product(this.name);

  final String name;
}

class Product {
  Product({this.name});

  final String name;
}

2 个答案:

答案 0 :(得分:1)

在第一个示例中,该参数是强制性位置(尽管您仍然可以传递null)。
您可以这样称呼它:

new Product('Fred')

在第二个示例中,参数是可选的命名参数。
您可以这样称呼它:

new Product()
new Product(name: 'Fred')

另一个变体是可选的位置参数

class Product {
  Product([this.name]);

  final String name;
}

您可以这样称呼它:

new Product()
new Product('Fred')

始终必须在必需参数之后声明可选参数。
可选名称和可选位置不能组合。

答案 1 :(得分:0)

{ }中的constructor用于使构造函数参数为可选。

class Product {
   Product(this.name);
   final String name;
  }

在上面的代码通知中,构造函数中的参数周围没有{ },因此在使用Product类创建新对象时,必须提供name

class Product {
  Product({this.name});
  final String name;
 }

在上面的代码中,name参数是可选的,因为它周围有{ }。因此,在使用此类创建对象时,可以跳过name参数。