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

Sun*_*Lim 14 dart

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

档案:A.dart

library chrome.A;
class MyClass {
...
}
Run Code Online (Sandbox Code Playgroud)

档案:B.dart

library chrome.B;
class MyClass {
..
}
Run Code Online (Sandbox Code Playgroud)

文件: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'
Run Code Online (Sandbox Code Playgroud)

这是预期的结果?

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

Gün*_*uer 25

库名称不是名称空间.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();
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,还可在import语句上使用hide / show。不解决OP的问题,而是解决了我的相关问题。 (3认同)