布尔值作为copyWith的可选参数

时间:2018-07-12 05:28:43

标签: dart flutter

我正在尝试实现复制构造方法/方法,但是参数之一是min = min。我环顾四周,曾经提到使用?value来确定是否提供了该值,但该值不能编译:

Boolean

如果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中的那个。如果未提供,则必须保留true或false值。

data引发语法错误:意外的文本'?'。

1 个答案:

答案 0 :(得分:1)

isEnabled = ?isEnabled ?? data.isEnabled

??已经检查了null,不需要?前缀。

这应该做你想要的

isEnabled = isEnabled ?? data.isEnabled

无需区别对待布尔值。

例如,?或更好的?.的作用

foo?.isEnabled

是,当isEnabledfoo时,它不会尝试评估null,而只是返回null,因为null没有isEnabled吸气剂,这将导致异常。