2

我正在编写一个简单的应用程序来学习一些基本的 Dart 编程,但我无法弄清楚结构和包含 - 我得到了一个 Duplicate class Point

首先,我有一个名为MouseTrack的主类。它初始化列表并将有一个循环。

#import('dart:html');
#import('Eye.dart');

class MouseTrace {
List<Eye> eyes;
...
}

其次,我有一个名为Eye的类,它应该将眼睛的信息保存为一个圆圈。这很简单:

#library('app:eye');

#import('dart:html'); // without this one, I get no error but I want to have it to use CanvasRenderingContext2D

#import('Point.dart');

class Eye {
  Point position;
  num radius;

  Eye() :
      position = new Point() {
  }

  void draw(CanvasRenderingContext2D context) {
    // draws a circle
  }
}

最后

#library('app:point');

class Point {
    num x, y;

    Point(this.x, this.y);
}

我想要实现的是 3 个独立的类 - mainEyePoint,因此我可以在main中有Eye的实例(为了简单和漂亮的模型)和Point in Eye的实例(用于存储位置)。至少我习惯这样做。

PS我知道我可以跳过类型,但我想要它,我猜这是包含问题而不是语言的问题(并且想要修复它,所以我知道如何正确地做到这一点)。PSS 我已经剪掉了一些代码,这样你就不必阅读所有内容,但如果你愿意,我会全部发布。

4

1 回答 1

5

问题出在app:eye库中(在Eye.dart文件中)。您导入dart:htmlapp:point库,但它们都定义了一个Point类。这种情况是无效的。您可以通过根本不导入来解决它dart:html,如果您不需要它,或者为这些导入之一添加前缀:

#import('dart:html', prefix: 'html');
#import('Point.dart');

在这种情况下,您必须dart:html使用html.前缀来引用名称。在您的情况下,如果您想使用CanvasRenderingContext2D该类,则必须改为编写html.CanvasRenderingContext2D

于 2012-04-21T21:59:35.490 回答