在构造函数参数列表中使用const关键字来定义常量,以确保参数值不可变。
示例代码:
@immutable
class MyImmutableClass {
final String name;
final int age;
MyImmutableClass({required this.name, required this.age}) : assert(name != null && age != null);
MyImmutableClass.fromDefault() : name = 'John', age = 18;
MyImmutableClass.fromConst({String? name, int? age})
: name = name ?? 'Tom',
age = age ?? 20,
assert(name != null && age != null);
}
void main() {
// create an instance using default values
var instance1 = MyImmutableClass.fromDefault();
// create an instance using parameters
var instance2 = MyImmutableClass(
name: 'Alice',
age: 25,
);
// create an instance using const parameters
var instance3 = MyImmutableClass.fromConst(
name: const String.fromEnvironment('name'),
age: const int.fromEnvironment('age', defaultValue: 30),
);
print(instance1.name); // John
print(instance2.name); // Alice
print(instance3.name); // Tom
}