这可能听起来像一个愚蠢的问题,但老实说我没有任何线索,我知道你可以使用library
,import
甚至#import
,但这是正确的?
我有两个文件,MainClass.dart
而且Library.Dart
,我想添加一个对Library.dart
in 的引用MainClass.dart
.我怎样才能做到这一点?
Mat*_*t B 81
首先让我先说一下,请不要在导入或库之前使用哈希符号或其他任何东西.这是一种旧的语法,正在折旧.所以我们不再想使用#import('...')
正确的语法是:
import 'some_file.dart';
Run Code Online (Sandbox Code Playgroud)
也就是说,我们可以通过访问当前文件中的不同dart源文件来做两件事.第一个是import
文件.我们使用这种方式,例如在您想要将不同的库带入当前文件(或更准确地说是当前库)时.
通常,如果您的文件位于同一目录或当前目录的子目录中,我们将按如下方式导入它们:
import 'lib/library.dart';
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用的是pub包布局,您还可以使用一些特殊的快捷方式引用来导入文件(特别是从您导入的其他包中).我强烈建议您阅读酒吧网站上的文档,因为大多数应用程序和库都是为此而设计的.它还提供了有关最佳命名约定的建议,例如全部小写的文件名,以及空格和目录布局的下划线.
关于将dart文件放入另一个文件的另一个重要事项是我们可以使用part
和part of
指令.这曾经被调用#source
但被更改(删除了哈希标志)以帮助解决一些问题.part
当我们想要编写跨越多个文件的单个库时,使用该指令.比如说你有一个很棒的库,它开始为一个文件增加一点点.我们将创建库的主文件(不要与main方法混淆).该文件通常与库本身具有相同的名称.
// awesome_library.dart
library awesome_library;
import 'dart:math';
import '...';
// this injects all the content of secret_file.dart
// into this file right here almost as if it was
// here in the first place.
part 'src/secret_file.dart';
// The rest of our file here
// ...
Run Code Online (Sandbox Code Playgroud)
part指令基本上从我们的src/secret_file.dart中获取所有内容并将其插入到文件的该部分中.这允许我们将我们巨大的Awesome Library拆分为多个更容易维护的小文件.虽然没有特别要求,但part of
在secret_file.dart中使用该指令有助于编辑知道它是库的"一部分".
// secret_file.dart
part of awesome_library;
// ... Rest of our secret_file code below.
Run Code Online (Sandbox Code Playgroud)
请注意,在使用这样的零件文件时,零件(即不是库主文件的所有零件)无法自行导入或使用库声明.它们导入导入到主文件中的任何内容,但它们无法添加任何其他导入.
Ger*_*ero 13
导入您自己创建的库:您将导入库filename.dart
而不是库的名称.因此,如果您的库的名称是:myLib
并且它保存在文件中:someDartFile.dart
您将不得不这样做
import 'someDartFile.dart';
Run Code Online (Sandbox Code Playgroud)
如果您在Windows上有一个库:K:\ SomeDir\someFile.dart,您需要编写:
import '/K:/SomeDir/someFile.dart';
Run Code Online (Sandbox Code Playgroud)
例:
import 'LibraryFile.dart'; //importing myLib
void main(){
//a class from myLib in the LibraryFile.dart file
var some = new SomeClassFromMyLibrary();
}
Run Code Online (Sandbox Code Playgroud)
LibraryFile.dart中的myLib:
library myLibrary;
import 'dart:math';
class SomeClassFromMyLibrary{
String _str = "this is some private String only to myLibrary";
String pubStr = "created instances of this class can access";
}
Run Code Online (Sandbox Code Playgroud)
这是一个完整的例子.
//TestLib.dart
import 'LibFile.dart'; //SomeLibrary
void main() {
print("Hello, World!");
LibFile l = new LibFile();
print(l.publicString);//public
print(l.getPrivateString);//private
print(l.getMagicNumber); //42
}
//LibFile.dart
library SomeLibrary;
part 'LibFile2.dart';
class LibFile {
String _privateString = "private";
String publicString = "public";
String get getPrivateString => _privateString;
int get getMagicNumber => new LibFile2().number;
}
//LibFile2.dart
part of SomeLibrary;
class LibFile2 {
int number = 42;
}
Run Code Online (Sandbox Code Playgroud)
vas*_*hth 12
虽然我回答得很晚,但答案可能对新开发人员有所帮助。
始终在 dart 包(应用程序/库)中使用 pubspec.yaml 文件。
运行 pub get 命令后,它会将您的本地库添加到 .packages 文件的依赖项列表中。
考虑我有以下项目结构。
要在我的 main.dart 文件中引用 greeting.dart 的内容,我应该添加如下库
import 'package:my_project_name/greeting.dart'
Run Code Online (Sandbox Code Playgroud)
导入后,我们可以在 main.dart 文件中使用 greeting.dart 文件的内容。注意:我们没有使用实际路径,因为您可以看到缺少“lib”目录。
归档时间: |
|
查看次数: |
29882 次 |
最近记录: |