一个 lib 文件夹中的 Dart 2 库导致类型 'X' 不是类型 'X' 的子类型

标签 dart

我有以下问题: 在我的应用程序中,我有 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/

相关文章:

dart - 当应用进入前台或后台时,AppLifcycleState.didChangeLifecycleState( ) 函数不会被调用

json - 如何在没有 flutter 的情况下解析 JSON

Flutter 我的谷歌地图在发布版本上不工作或不显示

dart - 如何在Polymer中使用自定义Dart库?

firebase - 如何在 Flutter 中基于 Future 结果构建 Stream?

flutter - 将图像 FlutterWebImagePicker 输出转换为文件

flutter - 如何删除Dart中的可选实例变量?

dart - Flutter 如何设置标题以显示模态底页?

dart - Flutter 将图像文件和字符串字段作为 json 字符串发布到 nodejs API

eclipse - 在 Dart 插件中启用 Chromium/Dartium