在dart类中的构造函数中使用花括号和不使用花括号有什么区别?以及为什么当你使用花括号时,你不能在构造函数中有不可空和未初始化的字段,但是当你不使用花括号时,你可以。
以下是示例:
class Animal{
String name;
int age;
Animal({this.name, this.age});
}
当我写这样的类时,有一个错误说:“参数'name'不能有'null'的值,因为它的类型,但隐式默认值是'null'。",对于'age'也是一样。
class Animal{
String name;
int age;
Animal(this.name, this.age);
}
但是当我不使用花括号时,就没有错误,它允许在构造函数中有空字段。
3条答案
按热度按时间szqfcxe21#
在Dart中,大括号{}定义命名参数,而省略大括号则定义位置参数。默认情况下,当命名参数与花括号一起使用时,它们是可空的和可选的。若要强制非空性,请在参数名称前使用required关键字。对于位置参数,它们在默认情况下是必需的,但如果没有显式初始化,它们仍然可以为空。
jogvjijk2#
带背带的
因此不能将不可空值Map为null,因为类Null不是String或int或任何其他安全为null的类的子类型
luaexgnf3#
使用大括号时,需要定义命名参数。例如:
你应该像这样示例化:
如果你定义的构造函数没有大括号,你定义的是位置参数。
然后你应该像这样示例化:
如果添加
required
关键字,则该参数为强制参数。如果在类型后声明一个属性为nullable,则对于ewample
您的name参数不再是必需的。