我开发了一个Flutter应用,在“模型”包中定义了服务器模型。
然后,例如在“模型”中声明一个类Example。
型号/示例.dart
class Example {
@override
String toString() {
return 'class example';
}
}
Run Code Online (Sandbox Code Playgroud)
test_a.dart
import 'package:example/model/example.dart'
Example testA() {
return Example()
}
Run Code Online (Sandbox Code Playgroud)
测试飞镖
import 'model/example.dart'
import 'test_a.dart'
test() {
Example example = testA();
if (example is Example) {
print('this class is Example');
} else {
print('$example');
}
}
Run Code Online (Sandbox Code Playgroud)
我会得到输出 class example
如果我在test.dart中从更改import 'model/example.dart'为import 'package:example/model/example.dart',那么我将获得输出this class is Example。
所以我很困惑飞镖的完整路径和相对路径之间的区别。
包装进口
'package:...import可以从任何地方导入,以从导入文件lib/*。
相对进口
相对导入始终相对于导入文件。如果lib/model/test.dart进口'example.dart',那就进口lib/model/example.dart。
如果test/model_tests/fixture.dart要从其中的任何文件导入test/*,则只能使用相对导入,因为程序包的导入始终是假定的lib/。
这也适用于其他所有非lib/顶级目录,如drive_test/,example/,tool/,...
lib / main.dart
目前与入口点文件中的已知问题lib/*像lib/main.dart在颤动。https://github.com/dart-lang/sdk/issues/33076
飞镖总是假定入口点文件,可以在其他顶级目录,那么lib/(如bin/,web/,tool/,example/,...)。Flutter打破了这个假设。因此,您当前不得在内部的入口点文件中使用相对导入lib/
也可以看看
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |