我正在尝试实现复制的constructir /方法,但是其中一个参数是Boolean
。我环顾四周,已经提到使用?value来确定是否提供了该值,但是它不能编译:
class Model {
final String id;
final bool isEnabled;
Model.copyFrom(Model data,
{String id,
bool isEnabled})
: id = id ?? data.id,
isEnabled = ?isEnabled ?? data.isEnabled);
}
如果
isEnabled
没有提供copyFrom
,我如何告诉它使用data
中的那个。如果未提供,则必须保留值true或false。?isEnabled
引发语法错误:意外的文本'?'。 最佳答案
在
isEnabled = ?isEnabled ?? data.isEnabled
??
已经检查了null
,不需要?
前缀。这应该做你想要的
isEnabled = isEnabled ?? data.isEnabled
无需区别对待 bool(boolean) 值。
?
或更好的?.
例如在foo?.isEnabled
就是说,当
isEnabled
为foo
时,它不会尝试评估null
,而只返回null
,因为null
没有isEnabled
setter/getter ,这会导致异常。关于dart - bool 值作为copyWith的可选参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51297910/