设置Dart中非常量的默认值

90i*_*ion 6 dart

如何为非常量参数设置默认值?

我想出了这个:

class Todo {
  final DateTime createdAt;
  final DateTime updatedAt;

  Todo({DateTime createdAt, DateTime updatedAt})
      : createdAt = createdAt != null ? null : DateTime.now(),
        updatedAt = updatedAt != null ? null : DateTime.now();
}
Run Code Online (Sandbox Code Playgroud)

我想知道它是否可以缩短,例如我试过这个:

class Todo {
  final DateTime createdAt;
  final DateTime updatedAt;

  Todo({DateTime createdAt, DateTime updatedAt})
      : createdAt ??= DateTime.now(),
        updatedAt ??= DateTime.now();
}
Run Code Online (Sandbox Code Playgroud)

但那没用.

Gün*_*uer 10

这是一个可以使用的较短版本:

class Todo {
  final DateTime createdAt;
  final DateTime updatedAt;

  Todo({DateTime createdAt, DateTime updatedAt})
      : createdAt = createdAt ?? DateTime.now(),
        updatedAt = updatedAt ?? DateTime.now();
}
Run Code Online (Sandbox Code Playgroud)

你的版本没有用,因为在

createdAt = createdAt ?? DateTime.now()
Run Code Online (Sandbox Code Playgroud)

第一个和第二个createdAt是指2个不同的变量.
前者是隐含的this.createdAt,后者是参数值.