导出两个具有相同类名的库

时间:2014-03-19 01:38:30

标签: dart

导出两个库时遇到错误。这些库的类名完全相同。

档案:A.dart

library chrome.A;
class MyClass {
...
}

档案:B.dart

library chrome.B;
class MyClass {
..
}

档案:C.dart

library chrome_app;
export 'A.dart';
export 'B.dart';  // HERE!! error message is the element 'MyClass' is defined in the libraries 'A.dart' and 'B.dart'

这是预期的结果吗?

我认为A.dart和B.dart有自己的命名空间,所以不应该有错误。

1 个答案:

答案 0 :(得分:18)

库名不是命名空间。 Dart没有命名空间 您在Dart中可以做的是为导入指定前缀。

如果要在同一个库中使用它们而不是仅使用import 'C.dart;'

的一个导入,则必须单独导入这些库
import 'A.dart' as a;
import 'B.dart' as b;

var m = new a.MyClass();
var n = new b.MyClass();

如果您只是想避免冲突,并且不需要导出这两个类,您可以。

library chrome_app;

export 'A.dart';
export 'B.dart' hide MyClass;
// or
export 'B.dart' show MyOtherClass, AnotherOne; // define explicitly which classes to export and omit MyClass