我在项目中定义了很多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!
。
我感到困惑:(
答案 0 :(得分:2)
在要导入的每个文件中添加库指令,所有文件都可以正常工作。
在你的情况下:
<强> 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