Dart 中的重复类

Pij*_*usn 2 import class dart

我正在编写一个简单的应用程序来学习一些基本的 Dart 编程,但我无法计算出结构和包含的内容 - 我得到了一个重复的类 Point

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

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

class MouseTrace {
List<Eye> eyes;
...
}
Run Code Online (Sandbox Code Playgroud)

其次,我有一个名为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
  }
}
Run Code Online (Sandbox Code Playgroud)

最后

#library('app:point');

class Point {
    num x, y;

    Point(this.x, this.y);
}
Run Code Online (Sandbox Code Playgroud)

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

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

Lad*_*cek 5

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

#import('dart:html', prefix: 'html');
#import('Point.dart');
Run Code Online (Sandbox Code Playgroud)

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