gpt4 book ai didi

dart - dart中的完整路径和相对路径有什么区别

转载 作者:IT老高 更新时间:2023-10-28 12:43:54 26 4
gpt4 key购买 nike

我开发了一个 Flutter 应用,在 'model' 包中定义了多个模型。

然后我在'model'中声明一个类Example

model/example.dart

class Example {
@override
String toString() {
return 'class example';
}
}

test_a.dart

import 'package:example/model/example.dart'

Example testA() {
return Example()
}

test.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🌚

如果我在 test.dart 中从 import 'model/example.dart' 更改为 import 'package:example/model/example.dart',那么我会得到输出This class is Example.

所以我很困惑 dart 中的完整路径和相对路径有什么不同。

最佳答案

包导入

'package:... 从任何地方导入工作以从 lib/* 导入文件。

相对导入

相对导入总是相对于导入文件。如果 lib/model/test.dart 导入 'example.dart',它会导入 lib/model/example.dart

如果你想从 test/* 中的任何文件导入 test/model_tests/fixture.dart,你只能使用相对导入,因为包导入总是假设 lib/

这也适用于所有其他非 lib/ 顶级目录,例如 drive_test/example/tool/, ...

lib/main.dart

lib/* 中的入口点文件目前存在一个已知问题,例如 Flutter 中的 lib/main.darthttps://github.com/dart-lang/sdk/issues/33076

Dart 总是假定入口点文件位于其他顶级目录中,然后是 lib/(如 bin/web/工具/example/、...)。Flutter 打破了这个假设。因此,您目前不得在 lib/

内的入口点文件中使用相对导入

另见

关于dart - dart中的完整路径和相对路径有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50732897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com