2

我有以下问题: 在我的应用程序中,我有 web 和 lib 文件夹。Lib 文件夹应该包含实用程序库。例子:

lib/my_lib.dart

library my_lib;
part 'src/person.dart';

lib/my_lib1.dart

library my_lib1;
import 'my_lib.dart';
part 'src/other.dart';

在 my_lib1 中,我想使用 my_lib 中定义的类

课程如下:

lib/src/person.dart

part of my_lib;
class Person {
}

lib/src/other.dart

part of my_lib1;
class Other {
  Person p;
  Other(this.p) {
   print(p);
  }
}

现在,在 web/testpackage.dart

import 'package:TestPackage/my_lib.dart';
import 'package:TestPackage/my_lib1.dart';

void main() {
  Person p = new Person();
  Other o = new Other(p);
}

失败:

Exception: type 'Person' is not a subtype of type 'Person' of 'p'.
Other.Other (package:testpackage/src/other.dart:7:14)

我应该如何构建我的项目以防止这种情况发生?我的库是应用程序本地的,我真的不想为我的玩具项目单独开发它们。

4

1 回答 1

3

问题在于您的库my_lib是一个public库,任何人(当然还有您)都可以在lib目录之外的其他地方使用它。

在这种情况下,它必须始终作为包库导入(因为它是公共库)。

要解决此问题,您必须更改源代码。

由此lib/my_lib1.dart

library my_lib1;
import 'my_lib.dart';
part 'src/other.dart';

对此lib/my_lib1.dart

library my_lib1;
import 'package:TestPackage/my_lib.dart';
part 'src/other.dart';
于 2013-09-04T19:43:55.067 回答