首页 > 解决方案 > dart 类中构造函数之间的区别

问题描述

class Product {
  Product(this.name);

  final String name;
}

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

  final String name;
}

标签: dart

解决方案


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

new Product('Fred')

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

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

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

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

  final String name;
}

你可以这样称呼它:

new Product()
new Product('Fred')

可选参数总是需要在强制参数之后声明。
可选命名和可选位置不能组合。


推荐阅读