假设我在同一个文件夹中有3个dart脚本。
// a.dart
import 'b.dart';
void main(){
print(foo);
}
// b.dart
import 'c.dart';
// c.dart
var foo = 1;
我在Cannot resolve 'foo'
a.dart
答案 0 :(得分:3)
导入不会自动重新导出。 您可以使用以下变体之一:
// b.dart
import 'c.dart';
export 'c.dart';
// foo is available in b.dart and a.dart
或
// b.dart
export 'c.dart';
// foo is not available in b.dart but in a.dart
这与我对How can I import all files in a folder?的回答相同; - )
答案 1 :(得分:1)
一些备选方案。
仅使用import语句并引用您需要的实际文件。例如:
// a.dart
import 'b.dart';
import 'c.dart';
void main(){
print(foo);
print(bar);
}
// b.dart
import 'c.dart';
var bar = foo + 1;
// c.dart
var foo = 1;
这不允许继承导入,但如果您在整个应用中遵循此模式,您的依赖项很容易看到(它们不会被隐藏在另一个文件中)。
不要使用导入,而只是让所有内容都成为同一个库的一部分。
// a.dart
library myLib;
part 'b.dart';
part 'c.dart';
void main(){
print(foo);
print(bar);
}
// b.dart
part of myLib;
var bar = foo + 1;
// c.dart
part of myLib;
var foo = 1;
如果您的应用程序不是太大而且所有类和全局变量都具有唯一名称(也就是说您没有命名空间),则此选项很有效。您还可以将此模式实现为应用程序的一小部分,而不是整个部分。