我开发了一个 flutter 应用程序,在“model”包中定义了多个模型。
然后我声明一个类Example例如,在“模型”中。
模型/示例.dart
class Example {
@override
String toString() {
return 'class example';
}
}
测试_a.dart
import 'package:example/model/example.dart'
Example testA() {
return Example()
}
测试.dart
import 'model/example.dart'
import 'test_a.dart'
test() {
Example example = testA();
if (example is Example) {
print('this class is Example');
} else {
print('$example');
}
}
我会得到输出class example
????
如果我从import 'model/example.dart'
to import 'package:example/model/example.dart'
在 test.dart 中,然后我将得到输出this class is Example
.
所以我很困惑 dart 中的完整路径和相对路径有什么不同。
包进口
'package:...
从任何地方导入工作以从中导入文件lib/*
.
相对进口
相对导入始终与导入文件相关。
如果lib/model/test.dart
进口'example.dart'
,它导入lib/model/example.dart
.
如果你想导入test/model_tests/fixture.dart
从任何文件内test/*
,您只能使用相对导入,因为包导入始终假设lib/
.
这也适用于所有其他非lib/
顶级目录如drive_test/
, example/
, tool/
, ...
库/main.dart
目前,入口点文件存在一个已知问题lib/*
like lib/main.dart
在颤振中。https://github.com/dart-lang/sdk/issues/33076 https://github.com/dart-lang/sdk/issues/33076
Dart 总是假设入口点文件位于其他顶级目录中lib/
(like bin/
, web/
, tool/
, example/
,...)。
Flutter打破了这个假设。
因此,您当前不得在入口点文件中使用相对导入lib/
也可以看看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)