我在项目中定义了很多dart文件,他们通过import
导入了另一个文件:
Controller .dart
import 'models.dart';
// dart code
app.dart
import 'models.dart';
import 'controller.dart';
// dart code
server.dart
import "app.dart";
main() {
//
}
更多 dart 文件
但是当我运行server.dart
时,它报告错误:
a library which is imported is missing a library directive: models.dart
这是什么意思?我必须将它们全部声明为库吗?
来自language specification ,它说:
It is a compile-time error if the compilation unit found at the
specified URI is not a library declaration.
看来我们只能导入库,不能导入普通文件。
但是如果我定义 2 个简单文件,
a.dart
import "b.dart";
main() {
hello();
}
b.dart
hello() { print("hello!"); }
然后运行a.dart:
dart a.dart
它可以打印hello!
。
我很困惑:(
最佳答案
在要导入的每个文件中添加库指令,一切都会正常工作。
就您而言:
models.dart
library foo.models;
// dart code
Controller .dart
library foo.controller;
import 'models.dart';
// dart code
app.dart
library foo.app;
import 'models.dart';
import 'controller.dart';
// dart code
server.dart
// If not planned to be imported then the name may be omitted
library foo.bin.server;
import "app.dart";
main() {
//
}
请记住,将由另一个库导入的每个库都需要唯一的名称。
通过在前面添加包名称来命名库的最佳方式。
例如。
包名称是“worker”
。
lib/worker.dart
library worker.worker
lib/work.dart
library worker.work
关于import - 我通过 `import ' models.dart' ;`, it can' 导入另一个文件进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621221/