You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart空安全下构造函数可选命名参数初始化复杂对象方案咨询

Dart空安全下构造函数可选命名参数初始化复杂对象的最优方案

你可以将可选命名参数声明为可空类型,再在初始化列表中通过空合并运算符设置 fallback 默认值,既不需要将类成员设为可空,也支持外部自定义传参,示例代码如下:

class MyClass {
  String aString;
  DateTime aDate;

  MyClass({
    this.aString = '',
    DateTime? aDate,
  }) : aDate = aDate ?? DateTime.now();
}

该实现的核心优势:

  • 类的成员aDate始终为非空类型,符合你不想设置可空的要求
  • 支持两种实例化方式,完全覆盖使用场景:
    • 使用默认时间:var c = MyClass(aString: 'bla bla');
    • 传入自定义时间:var c = MyClass(aString: 'bla bla', aDate: DateTime(2021, 9, 20));
  • 无需在实例化后额外赋值,对于大量从远程服务获取的复杂类场景,只需要给每个需要默认值的非const类型参数套用这个模式即可,大幅减少冗余赋值代码。

内容的提问来源于stack exchange,提问作者ThommyB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:09:01