【问题标题】:Flutter error: Error: Can't access 'this' in a field initializer to read 'computeMaxScale' [duplicate]颤振错误:错误:无法在字段初始化程序中访问“this”以读取“computeMaxScale”[重复]
【发布时间】:2018-08-23 23:00:13
【问题描述】:

在运行 flutter upgrade 之后,我遇到了一些颤振问题

我有这个类存储minScalemaxScale

在构造函数中,我想断言它们之间的间隔。由于这些值可以是双精度值或枚举实例,因此我必须在比较之前计算它们。

构造函数和断言的代码:

class ScaleBoundaries {
  final dynamic _minScale;
  final dynamic _maxScale;
  Size size;
  ImageInfo imageInfo;

  ScaleBoundaries(this._minScale, this._maxScale, { @required this.size, @required this.imageInfo}) :
        assert(_minScale is double || _minScale is PhotoViewScaleBoundary),
        assert(_maxScale is double || _maxScale is PhotoViewScaleBoundary),
        assert(computeMinScale() <= computeMaxScale());

这给了我以下错误:

compiler message: file:///.../photo_view/lib/photo_view_scale_boundaries.dart:14:37: Error: Can't access 'this' in a field initializer to read 'computeMaxScale'.
compiler message:         assert(computeMinScale() <= computeMaxScale());
compiler message:                                     ^^^^^^^^^^^^^^^
compiler message: file:///.../photo_view/lib/photo_view_scale_boundaries.dart:14:16: Error: Can't access 'this' in a field initializer to read 'computeMinScale'.
compiler message:         assert(computeMinScale() <= computeMaxScale());
compiler message:                ^^^^^^^^^^^^^^^

这是我的颤振医生输出:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v0.7.1-pre.15, on Linux, locale en_US.UTF-8)
[!] Android toolchain - develop for Android devices (Android SDK 28.0.1)
    ✗ Android license status unknown.
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Community Edition (version 2018.1)
[!] VS Code (version 1.25.1)
[✓] Connected devices (1 available)

! Doctor found issues in 2 categories.

我发现的唯一解决方案是删除断言,但这并不好。我该如何解决这个问题?

更多信息,请查看整个文件和项目:photo_view_scale_boundaries.dart

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    您可以在构造函数的主体中执行该断言

    class Foo {
      Foo() {
        assert(computeMinScale() <= computeMaxScale());
      }    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2021-07-08
      • 2022-07-15
      • 2020-05-23
      • 2019-11-20
      • 2022-08-19
      • 2021-05-18
      相关资源
      最近更新 更多