是否有任何有关如何导入本地文件的建议。就我而言,我有2个选择:
在指南Effective Dart: Style或Google搜索上我都没有找到任何东西。
答案 0 :(得分:2)
根据要问的人,至少有两个不同的建议。 无论哪种方法,我个人都建议使用后者的较短变体。 它足够 ,并且避免了将软件包名称硬编码到每个文件中的问题。如果您想重命名程序包,那将会很麻烦。
有一个问题使某些人推荐前一种格式。
如果您使用非package:
URI导入软件包库,则说在bin/
或test/
目录中有一个文件,例如:
import "../lib/mylib.dart";
然后该库现在使用两个不同的URI导入:
package:mypkg/mylib.dart
和file:///somewhere/mypkg/lib/mylib.dart
由于Dart通过导入URI识别库,因此这两个导入将被视为不同的库,每个库都有自己的全局变量和静态变量,而这些变量恰好具有相同的源代码。这是一个烦人的问题,可能很难调试。如果在各处都使用长package:...
导入,那么至少该问题仅限于导入的 first 库。如果您使用相对导入import "src/helper.dart";
,则该库现在也将存在两个版本:
package:mypkg/src/helper.dart
和file:///somewhere/mypkg/lib/src/helper.dart
这里真正的问题是第一次导入,该导入在路径中包含/lib/
。您绝对不能导入。对所有导入都使用package:
URI可以减少问题,但不能消除。
我建议使用相对路径,并确保任何导入路径中都不要包含/lib/
。 pub软件包的/lib/
目录中的库是 package 库,应使用package:
URI进行引用。如果这样做,则将相对于程序包URI解析相对URI,并再次将其作为程序包URI,一切都很好。