Flutter 导入随机停止工作,原因不明
Flutter imports randomly stop working, for no apparent reason
随着我们正在进行的项目越来越大,一位同事开始面临很多涉及pubspec.yaml
的问题。他曾经通过手动删除 Dart 缓存的依赖项来摆脱它们,但这次他遇到了一个看起来无法解决的问题。
在我们自己的包的 lib
目录中导入库时,import 'package:...'
不起作用,只有相对路径。例如,考虑以下结构:
my_package
└─ lib
├─ utils.dart
└─ api.dart
如果他试图在 api.dart
中导入 utils.dart
,他只能使用相对路径:
import 'utils.dart'; // Works!
import 'package:my_package/utils.dart'; // Error: Target of URI doesn't exist: package:my_package/utils.dart.
这样的行为是不一致的,因为该项目在相同的上下文中有许多其他模块不需要使用相对路径来导入。此外,团队中没有其他人遇到这个问题,但突然间团队中的另一个人开始遇到同样的问题。它正在蔓延!我们尝试重新安装 Dart、Flutter、IntelliJ,但错误仍然存在。
如果我们删除项目并从 git 再次克隆它,问题就会消失。然而,令人惊讶的是,当我们重新启动并使 IntelliJ 的缓存失效时,错误 returns。
奇怪的是,这些错误并没有影响项目的执行,它仍然能够 运行。但是由于导入被破坏,IDE 不能 link 到文件并且不会进行常规语法分析。
关于解决这个问题有什么想法,甚至如何开始寻找解决方案?
这已在 Flutter v1.9.1+hotfix.2 中解决。
如果您使用的是 android 工作室,只需使用无效缓存 + 重新启动选项
https://prnt.sc/1q2h8j7(查看截图)
随着我们正在进行的项目越来越大,一位同事开始面临很多涉及pubspec.yaml
的问题。他曾经通过手动删除 Dart 缓存的依赖项来摆脱它们,但这次他遇到了一个看起来无法解决的问题。
在我们自己的包的 lib
目录中导入库时,import 'package:...'
不起作用,只有相对路径。例如,考虑以下结构:
my_package
└─ lib
├─ utils.dart
└─ api.dart
如果他试图在 api.dart
中导入 utils.dart
,他只能使用相对路径:
import 'utils.dart'; // Works!
import 'package:my_package/utils.dart'; // Error: Target of URI doesn't exist: package:my_package/utils.dart.
这样的行为是不一致的,因为该项目在相同的上下文中有许多其他模块不需要使用相对路径来导入。此外,团队中没有其他人遇到这个问题,但突然间团队中的另一个人开始遇到同样的问题。它正在蔓延!我们尝试重新安装 Dart、Flutter、IntelliJ,但错误仍然存在。
如果我们删除项目并从 git 再次克隆它,问题就会消失。然而,令人惊讶的是,当我们重新启动并使 IntelliJ 的缓存失效时,错误 returns。
奇怪的是,这些错误并没有影响项目的执行,它仍然能够 运行。但是由于导入被破坏,IDE 不能 link 到文件并且不会进行常规语法分析。
关于解决这个问题有什么想法,甚至如何开始寻找解决方案?
这已在 Flutter v1.9.1+hotfix.2 中解决。
如果您使用的是 android 工作室,只需使用无效缓存 + 重新启动选项 https://prnt.sc/1q2h8j7(查看截图)