如何在Dart中引用其他文件?

如何在Dart中引用其他文件?,dart,Dart,我知道你可以使用库,导入,甚至#导入,但哪个是正确的 我有两个文件,MainClass.dart和Library.dart,我想在MainClass.dart中添加对Library.dart的引用。如何才能做到这一点?导入您自己创建的库: 您将导入文件名.dart,而不是库的名称。 因此,如果库的名称为:myLib,并保存在文件中:someDartFile.dart,则必须 导入'someDartFile.dart'; 如果您在Windows上有一个库:K:\SomeDir\someFile.

我知道你可以使用
导入
,甚至
#导入
,但哪个是正确的


我有两个文件,
MainClass.dart
Library.dart
,我想在
MainClass.dart
中添加对
Library.dart
的引用。如何才能做到这一点?

导入您自己创建的库: 您将导入
文件名.dart,而不是库的名称。
因此,如果库的名称为:
myLib
,并保存在文件中:
someDartFile.dart
,则必须

导入'someDartFile.dart';
如果您在Windows上有一个库:K:\SomeDir\someFile.dart,则需要编写:

import'/K:/SomeDir/someFile.dart';
例如:

导入'LibraryFile.dart'//导入myLib
void main(){
//LibraryFile.dart文件中myLib中的类
var some=new SomeClassFromMyLibrary();
}
LibraryFile.dart中的myLib:

图书馆我的图书馆;
导入“dart:math”;
从我的库中初始化某个类{
String _str=“这是一些仅对myLibrary专用的字符串”;
String pubStr=“创建的此类实例可以访问”;
}
这里有一个完整的例子

//TestLib.dart
导入'LibFile.dart'//某个图书馆
void main(){
打印(“你好,世界!”);
LibFile l=新的LibFile();
打印(l.publicString);//公共
打印(l.getPrivateString);//私有
打印(l.getMagicNumber);//42
}
//LibFile.dart
图书馆;图书馆;
“LibFile2.dart”部分;
类LibFile{
字符串_privateString=“private”;
String publicString=“public”;
String get getPrivateString=>\u privateString;
int get getMagicNumber=>new LibFile2().number;
}
//LibFile2.dart
图书馆的一部分;
类LibFile2{
整数=42;
}

首先让我先说一句,在导入或库或其他任何东西之前,请不要使用哈希符号。这是一种被弃用的旧语法。因此,我们不想再使用
#import(“…”)
正确的语法是:

导入'some_file.dart';
也就是说,我们可以做两件不同的事情来访问当前文件中的不同dart源文件。首先是导入文件。我们在您希望将不同的库引入当前文件(或者更准确地说是当前库)时使用这种方法

通常,如果您的文件位于同一目录或当前文件的子目录中,我们将按如下方式导入它们:

导入'lib/library.dart';
但是,如果您使用的是pub包布局,那么还可以使用一些特殊的快捷引用来导入文件(特别是从您导入的其他包)。我强烈建议阅读,因为大多数应用程序和库的设计都考虑到了这一点。它还提供了关于最佳命名约定的建议,例如文件名全部小写,空格和目录布局使用下划线

关于将dart文件引入另一个文件,需要知道的另一件重要事情是,我们可以使用
部分
部分
指令。这过去被称为
#source
,但后来被更改(删除了散列符号)以减少混淆。
part
指令用于编写跨越多个文件的单个库。例如,假设您有一个很棒的库,对于单个文件来说,它开始变得有点大。我们将创建库的主文件(不要与main方法混淆)。此文件通常与库本身具有相同的名称

//awesome\u library.dart
图书馆;;
导入“dart:math”;
输入“…”;
//这将注入secret_file.dart的所有内容
//就在这里,就像是
//首先在这里。
“src/secret_file.dart”部分;
//我们剩下的文件在这里
// ...
part指令基本上从src/secret_file.dart中获取所有内容,并将其插入文件的该部分。这使我们能够将我们巨大的令人敬畏的库拆分为多个更易于维护的较小文件。虽然没有特别要求,但在我们的secret_file.dart中使用
part of
指令有助于编辑知道它是库的“一部分”

//secret\u file.dart
图书馆的一部分;
// ... 下面是我们的机密文件代码。
请注意,当使用这样的零件文件时,零件(即不是库主文件的所有内容)本身不能导入或使用库声明。它们将导入到主文件中的任何内容导入,但不能添加任何其他导入


虽然我回答得很晚,但这个答案可能对新开发人员有所帮助

在dart包(应用程序/库)中始终使用pubspec.yaml文件

运行pub-get命令后,它将在.packages文件的依赖项列表中添加本地库

考虑到我有以下项目结构

要在main.dart文件中引用greeting.dart的内容,我应该添加如下库

import 'package:my_project_name/greeting.dart'
导入后,我们可以在main.dart文件中使用greeting.dart文件的内容。
注意:我们没有使用实际路径,因为您可以看到缺少“lib”目录

首先确保这是您在
pubspec.yaml
中提到的名称,并且要导入的文件共享完全相同的名称

例如:

pubspec.yaml
名称:Flatter_wordpress_应用程序
描述:FlatterWordPress应用程序
...
....
//dirOne/dirTwo/greeting.dart
FavArticleBloc类{
//你的密码在这里
}

导入“包:flatter\u wordpress\u app/dirOne/dirTwo/greeting.dart”
void main(){
var some=新的FavArticleBloc();
}
但是 在
main.dart
中,不需要指定
import'软件包:flatter\u wordpress\u应用程序
就像下面一样