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

如何为含可空成员的Dart类添加非空参数构造函数?

解决Dart类添加非空参数构造函数的问题

你之前的写法不被代码分析器认可,核心原因是:required是Dart的关键字,不能用作命名构造函数的名称。

要实现要求传入非空参数的构造函数,有两种实用方案:

方案一:使用合法命名的构造函数

给命名构造函数换一个非关键字的名称,比如Foo.nonNull,同时将参数类型设为非空的int,确保调用时必须传入非空值:

class Foo {
  int? a;
  Foo(this.a);
  // 命名构造函数,强制传入非空int
  Foo.nonNull(int a) : this.a = a;
}

调用示例:

// 必须传入非空int,否则编译报错
var foo = Foo.nonNull(10);

方案二:用required标记必填参数(结合命名参数)

如果想保留"必须传入"的语义,也可以通过命名参数+required修饰的方式实现,同时限制参数为非空类型:

class Foo {
  int? a;
  // 主构造函数要求必须传入非空int
  Foo({required int a}) : this.a = a;
  // 保留原有的可选参数构造函数
  Foo.optional(int? a) : this.a = a;
}

调用示例:

// 必须传入命名参数a,且值不能为null
var foo = Foo(a: 20);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:24:54