Class 省道颤振:为类构造函数设置默认值时,可选参数的默认值必须为常量

Class 省道颤振:为类构造函数设置默认值时,可选参数的默认值必须为常量,class,flutter,dart,default-value,Class,Flutter,Dart,Default Value,我创建了一个类JobBloc,它包含许多属性,其中一个是另一个类对象JobModel,我想为这些属性中的每一个指定一个默认值,除了JobModel属性外,它工作正常: class JobBloc with JobModelFormValidator { final JobModel jobModel; final bool isValid; final bool showErrorMessage; final String name; final double ratePer

我创建了一个类
JobBloc
,它包含许多属性,其中一个是另一个类对象
JobModel
,我想为这些属性中的每一个指定一个默认值,除了
JobModel
属性外,它工作正常:

class JobBloc with JobModelFormValidator {
  final JobModel jobModel;
  final bool isValid;
  final bool showErrorMessage;
  final String name;
  final double ratePerHour;
  final bool enableForm;
  final bool showIcon;

  JobBloc({
    // The default value of an optional parameter must be constant.
    this.jobModel = JobModel(name: 'EMPTY', ratePerHour: 0.01), // <= the error stems from this line
    this.isValid = false,
    this.showErrorMessage = false,
    this.name = 'EMPTY',
    this.enableForm = true,
    this.ratePerHour = 0.01,
    this.showIcon = false,
    });
}
使用JobModelFormValidator类JobBloc{
最终职位模型职位模型;
最终bool有效;
最终bool消息;
最后的字符串名;
每小时最终双倍费率;
最终bool使能形式;
最终的布尔showIcon;
就业集团({
//可选参数的默认值必须为常量。
this.jobModel=jobModel(名称:'EMPTY',ratephour:0.01),//试试这可能是什么

class JobBloc with JobModelFormValidator {
  final JobModel jobModel;
  final bool isValid;
  final bool showErrorMessage;
  final String name;
  final double ratePerHour;
  final bool enableForm;
  final bool showIcon;

  JobBloc({
    this.jobModel = const JobModel(name: 'EMPTY', ratePerHour: 0.01),
    this.isValid = false,
    this.showErrorMessage = false,
    this.name = 'EMPTY',
    this.enableForm = true,
    this.ratePerHour = 0.01,
    this.showIcon = false,
    });
}

不能在类模型中初始化对象

尝试:

或者更新jobModel类

class JobModel {
  final String name;
  final double ratePerHour;

  JobModel({
    this.name = 'EMPTY',
    this.ratePerHour = 0.01,
  });
}

谢谢你,我很困惑,因为有太多的方法来编写相同的东西。第一个解决方案奏效了,你能解释一下第一个语法吗?冒号的含义和用途是什么?
:在这里?构造函数后的冒号在颤振中被称为初始值设定项列表。它允许你初始化类的字段,进行断言和调用超级构造函数。如果您想了解更多信息:
class JobModel {
  final String name;
  final double ratePerHour;

  JobModel({
    this.name = 'EMPTY',
    this.ratePerHour = 0.01,
  });
}