从其他项目导入dart代码

时间:2014-07-05 12:04:43

标签: dart dart-pub

** 此问题经过编辑和清理 **

我有两个项目,我想使用另一个项目中的代码;我似乎无法将代码放在正确的目录结构中,以使import语句有效。

这两个项目都是专门从Mac上的Dart编辑器创建和管理的,如果这有任何差异的话。

项目目录结构 项目1:一个命令行应用程序,其中包含我要在以下目录结构中共享的代码:

/dart/command_line_app
    /lib
      shared_library.dart
    /bin
      command_line_app.dart

项目2:想要在shared_libary.dart中导入代码的Web应用程序

/dart/web_application
    /packages
    /web
        web_application.dart

在文件shared_libary.dart中,我声明它是一个库,可以创建一个在实例化时提供输出的简单类:

library shared_library;

class ShareMe
{
  ShareMe()
  {
    print("Hello, ShareMe");
  }
}

这会编译,并在command_line项目中运行:command_line_app.dart具有以下内容:

import 'package:command_line_app/shared_library.dart';

void main() {
  ShareMe shareMe = new ShareMe();

  print("Hello, World!");
}

导入代码运行,打印“Hello Share Me”和Hello World。

问题 我想在web_application.dart中实例化ShareMe类。我想我可以通过输入我在command_line代码中输入的相同import语句来做到这一点:

import 'package:command_line_app/shared_library.dart';

但是,当我将相同的导入放入web_appliation时,它会收到错误

Target of URI does not exist 'package:command_line_app/shared_library.dart'

我尝试过的其他事情 我确定当我在Web_application和选定的项目参考上使用cntrl-Clicked属性时,我已经解决了这个问题。

它会弹出一个窗口,允许我选中带有复选框的command_line_app,但是当我这样做时,我收到一个错误:

Could not set the project description for 'web_application' because the project description file (.project) is out of sync with the file system.

无论那意味着什么。

当我按住 - 单击带下划线的错误并尝试快速修复时,它为我提供了“解决依赖关系”,听起来很有希望,但几秒后,它又回来告诉我

Pub get failed, [1] Resolving dependencies... (15.3s)
Could not find package command_line_app at https://pub.dartlang.org.
Depended on by:
- web_application 0.0.0

我希望这是明确的,并且更好地了解我正在尝试做什么和我缺少什么。

1 个答案:

答案 0 :(得分:2)

修改 你需要添加

dependencies:
  command_line_app:
    path: ../command_line_app

web_application/pubspec.yaml中的依赖项。

编辑结束

如果要在不同的包中重复使用代码,则应将该代码放入该包的lib目录中,然后使用import 'package:mypackage/myfile.dart';将其导入。

您可能遇到的另一个问题是,浏览器应用程序无法导入具有dart:io依赖关系的包。如果要在命令行和浏览器应用程序之间重用代码,则应将它们移动到另一个包my_shared_code的lib目录中,其中只放置不依赖于dart:io的代码(例如某些实体类)并从两个应用程序包(浏览器和命令行)导入此代码。