[英]Dart: How does Dart match the named parameters in a Constructor of a Class?
[英]How to create a final member variable in the constructor initialization list using named parameters in Dart?
我有一个我想使用命名参数初始化的类,并使用这些参数在初始化列表中创建final
变量。
但是无论我怎么尝试,它似乎都不起作用。 我将范围缩小到以下示例:
class Test {
const Test({
Color color,
BoxBorder border,
}) : decoration = const BoxDecoration(color: const color, border: const border);
final BoxDecoration decoration;
}
但是在创建BoxDecoration
我收到以下错误:
The constructor returns type 'dynamic' that isn't of expected type 'Color'.
边界也存在同样的错误。
然而,当我删除const
时,我得到了这个:
Invalid constant value.
我在这里缺少什么?
我会像下面那样做:
class Test {
const Test({
Color color,
BoxBorder border,
}): assert(color != null),
assert(border != null),
_color = color,
_border = border;
final Color _color;
final BoxBorder _border;
BoxDecoration get decoration => BoxDecoration(color : _color, border: _border);
}
然后你可以像这样使用它:
Container(decoration: Test(color: yourColor, border: yourBorder).decoration)
请注意,在您的情况下, _color 和 _border 已在内部声明,并且无法在 Test 类之外访问。 唯一可访问的领域是装饰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.