dart - 访问 Dart 中的继承字段

标签 dart

abstract class Painter {

    CanvasElement canvas;

    Painter(this.canvas);

    void draw();
}

class SpritePainter extends Painter{

    SpritePainter(this.canvas);

    void draw(){
        window.console.log("Drawing");
        window.console.log(canvas);
    }

}

使用上面的代码,我的应用程序在尝试调用 new SpritePainter(query('#sprite-canvas')); 时失败,表示 this.canvas 是未知的 field 。我以为子类可以访问抽象父类中的 CanvasElement

更新:

我用以下方法解决了这个问题:

SpritePainter(CanvasElement canvas):super(canvas);

但后来我在 dart 教程上读到抽象类只能有工厂构造函数?

最佳答案

你必须像下面这样将你的参数转发给 super 构造函数:

abstract class Painter {
  CanvasElement canvas;

  Painter(this.canvas);

  void draw();
}

class SpritePainter extends Painter{
  SpritePainter(CanvasElement canvas) : super(canvas);

  void draw(){
    window.console.log("Drawing");
    window.console.log(canvas);
  }
}

关于dart - 访问 Dart 中的继承字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972546/

相关文章:

dart - 我如何才能同时等待嵌套在 map 内的多个 future?

stream - Dart "StreamTransformer<RS, RT> cast<RS, RT>()"是做什么的?

flutter - 如何在Android Studio中不运行模拟器/模拟器的情况下运行Dart程序

html - 在 Polymer.dart 中使用列表

flutter - 如何使 SingleChildScrollView 在需要时用空白填充全屏高度

flutter - 如何为不同的选项卡 flutter 设置ontap

dart - 无法更改 RaisedButton 颜色

flutter - 在 null 上调用了 getter 'userGestureInProgress'

dart - 内部错误: 'http://localhost:63342/epimss_polymer_app/web/index.dart':格式错误的类型:行37 pos 42465:尚未加载 'prefix16.property'类型

Flutter Image Widget 不会在更改状态时更新