dart - 在 Dart 中设置非常量的默认值

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

我想知道它是否可以做得更短,例如我试过这个:
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引用 2 个不同的变量。
前者是隐含的 this.createdAt后者是参数值。

关于dart - 在 Dart 中设置非常量的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51280670/

相关文章:

Flutter - ParentDataWidget 的不正确使用

android - Flutter async/await 在 forEach 中不起作用

firebase - Flutter-用户使用Firebase登录时如何重建页面?

dart - 如何导入 dart :html & dart:io in the same class?

dart - 从字符串枚举

json - 错误: The argument type 'int' can't be assigned to the parameter type 'String'

flutter - 在 ListView 中显示复选框

dart - 在 Dart 编辑器中格式化代码

firebase - Flutter:Firebase 存储在 Release模式下不上传文件

Flutter蓝牙串口通信