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

我想出了这个:

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();
}

我想知道是否可以做得更短一些,例如,我try 了这个:

class Todo {
  final DateTime createdAt;
  final DateTime updatedAt;

  Todo({DateTime createdAt, DateTime updatedAt})
      : createdAt ??= DateTime.now(),
        updatedAt ??= DateTime.now();
}

但这并没有奏效.

推荐答案

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

class Todo {
  final DateTime createdAt;
  final DateTime updatedAt;

  Todo({DateTime createdAt, DateTime updatedAt})
      : createdAt = createdAt ?? DateTime.now(),
        updatedAt = updatedAt ?? DateTime.now();
}

您的版本不起作用,因为在

createdAt = createdAt ?? DateTime.now()

第一个和第二个createdAt指的是两个不同的变量

Dart相关问答推荐

聆听Firestore计数()

当 ng-repeat 嵌套在 AngularDart 中时访问外部 $index

如何在 Flutter 中将 textEditiing 控制器与 Provider 一起使用

如何在 Dart 中创建画布元素?

如何在 Flutter 中忽略整个文件的 lint 规则?

每次我按下导航项时,底部的导航栏都会重新加载所有小部件

如何在flatter中使用SQFlite更新数据库表

Flutter 中 ChangeNotifier 的构建器小部件

错误:无法调用需要 const 表达式的非const构造函数

如何使用flatter删除Firestore文档中的字段

Flutter 示例中的流布局

使用 Stream.periodic 时如何取消 Stream?

如何在 Dart 中调用超类的构造函数和其他语句?

什么是健全的编程语言?

我如何知道 websockets 的连接是否有效?

在 Dart 中是否允许在 for 循环中等待?

Dart 中的 List.shuffle()?

如何在 Dart 中创建私有变量?

了解工厂构造函数代码示例

List firstWhere Bad state: No element