从其他项目导入dart代码

从其他项目导入dart代码,dart,dart-pub,Dart,Dart Pub,***此问题已编辑并清理了部分*** 我有两个项目,我想在另一个项目中使用其中一个项目的代码;我似乎很难将代码放在正确的目录结构中,以使导入语句正常工作 这两个项目都是专门从Mac上的Dart编辑器创建和管理的,如果这有任何区别的话 项目目录结构 项目1:一个命令行应用程序,其中包含我希望在以下目录结构中共享的代码: /dart/command\u line\u应用程序 /解放党 共享库.dart /垃圾箱 命令行应用程序 项目2:希望在shared_libary.dart中导入代码的web应

***此问题已编辑并清理了部分***

我有两个项目,我想在另一个项目中使用其中一个项目的代码;我似乎很难将代码放在正确的目录结构中,以使导入语句正常工作

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

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

/dart/command\u line\u应用程序
/解放党
共享库.dart
/垃圾箱
命令行应用程序
项目2:希望在shared_libary.dart中导入代码的web应用程序

/dart/web\u应用程序
/包裹
/网
web_application.dart
在shared_libary.dart文件中,我声明它是一个库,可以创建一个简单的类,在实例化时提供输出:

库共享\u库;
课堂分享
{
ShareMe()
{
打印(“你好,共享我”);
}
}
它编译并在命令行项目中工作:command\u line\u app.dart具有以下功能:

import'package:command_line_app/shared_library.dart';
void main(){
ShareMe ShareMe=新ShareMe();
打印(“你好,世界!”);
}
这将导入运行的代码,同时打印“Hello Share Me”和“Hello World”

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

import'package:command_line_app/shared_library.dart';
但是,当我将相同的导入放到web应用程序中时,它得到了错误

URI的目标不存在'package:command\u line\u app/shared\u library.dart'
我尝试过的其他事情 当我点击Web_应用程序上的属性和选定的项目引用时,我确信我已经解决了这个问题

它会弹出一个窗口,允许我选择带有复选框的命令行应用程序,但当我这样做时,我会得到一个错误:

无法设置“web_应用程序”的项目说明,因为项目说明文件(.project)与文件系统不同步。
不管那意味着什么

当我点击带下划线的错误并尝试快速修复时,它为我提供了“解析依赖项”,这听起来很有希望,但几秒钟后,它返回并通知我

Pub-get失败,[1]解析依赖项。。。(15.3s)
在上找不到程序包命令行应用程序https://pub.dartlang.org.
取决于:
-web_应用程序0.0.0
我希望这是清楚的,能让我更好地了解我正在努力做什么和我遗漏了什么。

EDIT 您需要添加

dependencies:
  command_line_app:
    path: ../command_line_app
web\u应用程序/pubspec.yaml
中的依赖项

编辑结束

当您想使代码在不同的包中可重用时,您应该将代码放入该包的
lib
目录中,并使用
import'package:mypackage/myfile.dart'导入它


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

Gunter,谢谢这是正确的方向,但我仍然感到困惑:我有以下目录:command-line-project/bin/myfile.dart这是dart编辑器创建它的地方。是否必须将文件复制到其他目录(Lib目录?)如果是,我将在哪里创建该文件?我还没有使用dart.io,所以这不是问题所在。您应该将条目文件(包含
main()
)保留在
bin
目录中,并在
yourpackage/lib/yourshared.dart
目录中创建您希望在不同包中使用的类的文件。在
bin
中的输入文件中,您可以像导入包那样导入它:yourpackage/yourshared.dart'
注意导入路径中缺少的
lib
。这是自动添加的,因此您只能从
lib
目录导入文件。相对路径只在同一个包中起作用。好的,越来越近了。我无法使/lib工作。我手工创建了一个/lib目录,并将文件复制到其中。失败。但是,我将它们拖放到/packages目录中,现在在该项目中,我可以导入“package:myfile.dart”;它是有效的。然而:在我的另一个项目中,我似乎仍然找不到它们。我尝试导入:“包:ProjectName/myfile.dart”;但这失败了。我肯定我遗漏了一些令人难以置信的补救措施,但我不知道它是什么……你不应该对packages目录做任何事情。这由
pub
工具维护。如果你手工做某事,这无疑会引起麻烦。你能在你的问题中更好地描述你的包结构吗?这样就更容易提出应该改变什么以及如何改变的建议。github还有许多Dart项目,您可以在其中查看。我在,有一些项目具有类似的依赖结构。这个项目仍然很小。Gunter,我更新了我的帖子以显示我的目录结构,并查看了您的示例(我还重新阅读了Dart关于目录布局的文档)。据我所知,我是遵循规则的——因为它们在一个项目中起作用,我认为这可能是正确的。我想我必须要做些什么才能使它在各个项目中发挥作用,但我不知道该做什么。谢谢你的帮助和耐心。