如何使用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类之外无法访问。唯一可以进入的领域是装饰

最新更新