Dart 。后期初始化最终变量

标签 dart

有没有办法延迟初始化最终变量。问题是许多值初始化为类的入口点,而不是构造函数。因此 它们不能是最终的 马上。但在特定类的范围内,它们不会改变。例如。

  Controller controller;
  double width;

  void setup(final itemWidth) {
    controller =  MyController();
    width = itemWidth;
  }

可能吗?现在我只将解决方案视为注释。你可能认为这是为了视觉效果。但实际上,它有助于避免测试过程中出现不可预测的流量。

最佳答案

现在可以延迟初始化变量。如需更多信息,请参阅 Dart's documentation .以下文字复制自 Dart 的文档 :
后期最终变量
您还可以将 late 与 final 结合使用:

// Using null safety:
class Coffee {
  late final String _temperature;

  void heat() { _temperature = 'hot'; }
  void chill() { _temperature = 'iced'; }

  String serve() => _temperature + ' coffee';
}
与普通的 final 字段不同,您不必在其声明或构造函数初始化列表中初始化该字段。您可以稍后在运行时分配给它。但是你只能分配给它一次 ,并在运行时检查该事实。如果你尝试多次分配给它——比如同时调用 heat()chill()这里——第二个任务 抛出异常 .这是对最终初始化并且之后不可变的状态进行建模的好方法。

关于 Dart 。后期初始化最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229843/

相关文章:

angularjs - 服务器是否需要使用Polymer.dart和/或Angular.Dart运行某些CLIENT端DART应用程序?

flutter - 如何动态增加列表的高度并在达到最大高度后滚动?

git - 如何允许在Mac OS中访问git/config?

flutter - 如何在Flutter应用中打开pdf,pptx,doc,docx文件?

flutter - 根据Appbar的高度更改标题和标题

dart - 以编程方式显示工具提示

flutter - 将 Flutter Row 的子项拉伸(stretch)到最大*自然*高度

debugging - Dart调试器及时调用方法

flutter - 即使使用异步,在 Flutter 中进行繁重的计算操作时 UI 也会滞后

loops - 获取循环中的项目索引以与存储的索引匹配