Flutter:找不到目标文件“ lib / main.dart”

Kes*_*R.P 12 flutter flutter-test flutter-dependencies

当我执行颤振运行时,出现错误

找不到目标文件“ lib / main.dart”。

为什么会发生这种情况,我该如何解决?

小智 29

如果设置了目标文件路径,则可以从任何DIR运行任何文件,例如:

flutter run -t lib/main_dev.dart
Run Code Online (Sandbox Code Playgroud)

要么

flutter run lib/dev/main_dev.dart
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。谢谢@Elroy (2认同)
  • 是的,它按预期工作。谢谢!flutter build apk lib/config/env_dev.dart (2认同)

Mun*_*kur 6

Flutter在lib文件夹中寻找main.dart,而您必须在其他任何软件包中都包含文件。

最好的解决方案是将main.dart文件放在lib文件夹中。Flutter run命令将肯定起作用。

它为我工作。

main.dart网址应为:/lib/main.dart

  • 如果它在另一个位置怎么办?因为我使用不同的文件来构建我的生产和开发环境。 (3认同)

Shu*_*ral 6

所以基本上当你执行这个

 flutter run
Run Code Online (Sandbox Code Playgroud)

Flutter 尝试main.dart/lib目录中查找。

因此,如果您的文件存在于目录的某个其他子目录中/lib或具有不同的名称,例如result_page.dart,您会遇到此错误。现在,很多答案都建议将您的文件重命名为main.dart或直接将其移动到/lib目录下。

但是您实际上可以通过简单地从当前目录提供目标文件的路径来简单地运行任何文件,如下所示 -

flutter run --target=lib/customization/result_screen.dart
Run Code Online (Sandbox Code Playgroud)

因此,这将简单地执行我的result_screen.dart文件,该文件位于其他名为customization.

您还可以按照相同的逻辑生成 APK 文件,命令如下所示 -

flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64
Run Code Online (Sandbox Code Playgroud)

where--target-platform=android-arm64是可选的,适用于 64 位 Android 设备,这有助于减少 APK 大小,否则会生成包含 32 位和 64 位二进制文​​件的胖 APK。更多信息在这里