我有以下问题: 在我的应用程序中,我有 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 中定义的类
类(class)如下:
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)
我应该如何构建我的项目来防止这种情况发生? 我的库位于应用程序本地,我真的不想为我的玩具项目单独开发它们。
最佳答案
问题在于您的库 my_lib
是一个公共(public)
库,任何人(当然还有您)都可以在 lib
之外的其他地方使用它> 目录。
在这种情况下,它必须始终作为包库导入(因为它是公共(public)库)。
要解决这个问题,您必须更改源代码。
从此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';
关于一个 lib 文件夹中的 Dart 2 库导致类型 'X' 不是类型 'X' 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18615878/