我正在尝试实现复制的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

就是说,当isEnabledfoo时,它不会尝试评估null,而只返回null,因为null没有isEnabled setter/getter ,这会导致异常。

关于dart - bool 值作为copyWith的可选参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51297910/

10-12 05:59