我有一个类,我想使用命名参数初始化它,并使用这些参数在初始化列表中创建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类之外无法访问。唯一可以进入的领域是装饰