3

我在我的项目中定义了许多 dart 文件,它们通过以下方式导入了另一个文件import

控制器.dart

import 'models.dart';

// dart code

应用程序.dart

import 'models.dart';
import 'controller.dart';

// dart code

服务器.dart

import "app.dart";

main() {
  // 
}

更多飞镖文件

但是当我运行时server.dart,它会报告错误:

a library which is imported is missing a library directive: models.dart

这意味着什么?我必须将它们全部声明为库吗?

语言规范中,它说:

It is a compile-time error if the compilation unit found at the 
specified URI is not a library declaration.

看来我们只能导入一个库,而不是普通文件。

但是如果我定义 2 个简单的文件,

飞镖

import "b.dart";

main() {
   hello();
}

飞镖

hello() { print("hello!"); }

然后运行 ​​a.dart:

dart a.dart

它可以打印hello!

我有点迷惑不解了 :(

4

1 回答 1

2

在您要导入的每个文件中添加库指令,一切都会正常工作。

在你的情况下:

模型.dart

library foo.models;    
// dart code

控制器.dart

library foo.controller;    
import 'models.dart';    
// dart code

应用程序.dart

library foo.app;
import 'models.dart';
import 'controller.dart';

// dart code

服务器.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
于 2013-07-12T19:25:09.307 回答