class - 如何不将空参数从子类传递给 Dart 中的超类?
问题描述
假设您有以下类及其子类。
class ParentClass {
final int a;
final int b;
ParentClass({this.a = 1, this.b = 2});
}
class ChildClass extends ParentClass {
ChildClass({
int? a,
int? b,
}) : super(a: a, b: b);
}
我想做的是,当a
或b
不给ChildClass
' 的构造函数时,在 ' 中定义a
并b
定义它们的默认值ParentClass
,分别为 1 和 2:
void main() {
final child = ChildClass();
print(child.a); // expect to see '1'
print(child.b); // expect to see '2'
}
但是,我从上面的代码中实际得到的是两者的“null”。显然,ChildClass
将“null”传递给了ParentClass
,在这种情况下它会忽略其可选参数的默认值。
有没有一种方法可以避免将未指定的可选参数从 传递ChildClass
到 ,或者即使传递了“null”也ParentClass
可以保持默认值,而无需在 中手动指定相同的默认值?ParentClass
ChildClass
解决方案
不确定这是否能解决您的问题,但这是我正确的做法:
class ParentClass {
final int a;
final int b;
ParentClass({int? a, int? b})
: this.a = a ?? 1,
this.b = b ?? 2;
}
class ChildClass extends ParentClass {
ChildClass({
int? a,
int? b,
}) : super(a: a, b: b);
}
推荐阅读
- python - 如何创建任意深度 D 的嵌套列表,其中每个条目包含 D-1 个列表
- dialogflow-es - 谷歌动作模拟器无法访问我的网络服务器
- r - 一个因素的意大利面条图
- python - 如何找到两个数组之间的第一个交点?
- flutter - 如何实现长按弹出菜单和拖动同时在网格上重新排序?
- python - 为什么 python 多处理对单核进程的结果略有不同?
- google-chrome-extension - 无需单击即可自动执行 chrome 扩展
- html - 如何使用引导程序在一行中的列之间垂直间隔
- config - 如何在工作台模式下创建可视化图形配置
- python - 如何在 python opencv 上启用自动曝光