繁体   English   中英

如何在 Dart 中使用命名参数在构造函数初始化列表中创建最终成员变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM