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

Flutter 如何解决「可选参数默认值必须为常量」的报错问题

错误原因

Dart语法规定,可选参数的默认值必须是编译时常量。你直接在参数声明处写this.servingList = []时:

  • 不加const修饰的[]不是编译时常量,因此触发你遇到的编译错误
  • 如果你改成const []作为默认值,虽然能解决编译错误,但const修饰的列表是不可变的,后续你往列表中添加元素时会抛出运行时异常,不符合你的需求

解决方法

将servingList参数声明为可空类型,在类的初始化列表中完成默认值赋值即可,修改后的代码如下:

class Restaurant{
  final String id;
  final String name;
  List<Serving> servingList;

  Restaurant({
    required this.id,
    required this.name,
    List<Serving>? servingList, // 声明为可空参数,不设置默认值
  }) : servingList = servingList ?? []; // 初始化列表中判空,为空时赋值空的可变列表
}

这种写法下,如果实例化时传入了servingList就使用传入的值,没有传入的话会自动初始化一个空的可变列表,完全支持后续往列表中添加元素的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:03