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

在Flutter类的构造函数中是否需要添加'required'关键字?

为什么Dart构造函数的可选参数需要添加required?

你定义了如下Quote类:

class Quote {
  String text;
  String author;

  Quote({ this.text, this.author });
}

在VSCode中,这段代码会报错,编译器强制要求在构造函数的this.text和this.author前添加required,修改后的代码如下:

class Quote {
  String text;
  String author;

  Quote({ required this.text, required this.author });
}

下面解释必须添加required的原因:

  • Dart的空安全特性要求,非空类型的变量必须被初始化。你的text和author都是String类型(非可空),意味着它们的值不能为null。
  • 原来的构造函数使用了命名可选参数(用大括号{}包裹的参数),这类参数默认允许调用时不传,不传的话对应变量会被赋值为null,这和String非空的类型要求直接冲突,因此编译器报错。
  • 添加required关键字后,会将这些命名参数标记为必须传入的参数,确保实例化Quote类时一定会给text和author赋值,满足非空类型的初始化要求。
  • 如果你希望这些参数是可选的(允许调用时不传),可以把变量类型改为可空的String?,此时就不需要添加required,但后续代码中需要处理变量可能为null的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:32:36