导出两个库时遇到错误。这些库的类名完全相同。
档案: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有自己的命名空间,所以不应该有错误。
答案 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