在三元操作中检查null

Isr*_*nto 9 dart flutter

如果_contact不为null,我想在文本字段上放置一个默认值.去做这个

new TextField(
    decoration: new InputDecoration(labelText: "Email"), 
    maxLines: 1,
    controller: new TextEditingController(text: (_contact != null) ? _contact.email: ""))
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?例如:Javascript会是这样的:text: _contact ? _contact.email : ""

Rém*_*let 20

Dart自带?.??操作符进行空检查.

您可以执行以下操作:

var result = _contact?.email ?? ""
Run Code Online (Sandbox Code Playgroud)

你也可以

if (t?.creationDate?.millisecond != null) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在JS中等于:

if (t && t.creationDate && t.creationDate.millisecond) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这实际上与原始帖子中的行为不同 - 这个`??`涵盖了`_contact`不为null但`_contact.email`为的情况.在这种情况下,原始示例将评估为"null",因此此代码可能*更好*所要求的内容. (4认同)