有没有办法延迟初始化最终变量.问题是许多值都是用类的入口点初始化的,而类不是构造函数.所以现在是they cannot be final.但在特定类别的范围内,它们不会改变.前男友.

  Controller controller;
  double width;

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

有可能吗?现在我只看到作为注释的解决方案.你可能认为这是为了视觉效果.但实际上,它有助于避免测试期间不可预测的流.

推荐答案

现在可以延迟初始化变量.更多信息请参见Dart's documentation.以下文字摘自Dart's documentation:

后期最终变量

您还可以将Late和Final结合使用:

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

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

  String serve() => _temperature + ' coffee';
}

与普通的最终字段不同,您不必在其声明或构造函数初始化列表中初始化该字段.您可以稍后在运行时为其赋值.但是您只能使用assign to it once,这一事实会在运行时进行判断.如果您try 不止一次地给它赋值-比如在这里同时调用heat()chill()-第二个赋值throws an exception.这是对最终初始化且之后不可变的状态进行建模的一种很好的方法.

Dart相关问答推荐

异类列表中函数类型不变性的解决方法

播放和暂停 Flutter 动画

创建默认应用时 FirebaseOptions 不能为空

如何将指针事件发送到堆栈中的低级子级

那么在 Flutter 中缓存最简单的方法是什么?

如何在 Flutter 中更改 Html 小部件中的字体样式?

自定义声音推送通知不起作用

在 Windows 10 中使用 Android Studio 时没有Remove Widget选项

如何编辑 Flutter 的 TextFormField 输入和 errorText 之间的间距

Flutter url_launcher 未在发布模式下启动 url

Flutter列表视图底部溢出

如何正确管理 Flutter 应用中的全局 textScaleFactor?

'dart:async' 的函数 `runZoned` 的用途

在 Dart 中修改类内的最终字段

什么时候在 Dart 中使用 num

用 Dart 模式替换静态继承

如何在 Dart 中创建 StreamTransformer?

Dart:并行处理传入的 HTTP 请求

如何在 base64 中编码 Dart 字符串?

如何停止 Dart 的 .forEach()?