目标文件 "lib/main.dart" 没有找到。
这是为什么,我该如何解决?
你可以从任何目录运行任何文件,只要设置目标文件路径,例如:
flutter run -t lib/main_dev.dart
或者
flutter run lib/dev/main_dev.dart
更新(2020年2月5日)
然而,不建议从项目中删除main.dart。
我相信大多数人都会因为设置/配置应用程序以适应不同环境(例如dev、stg、beta和prod)而找到此链接。
示例:
main_dev.dart:
void main() async {
dynamic configuredApp = AppConfig(
appName: 'Flutter',
flavorName: 'development',
appVersion: 1.0,
apiBaseUrl: 'https://dev-api.example.com/'
);
runApp(App(configuredApp));
}
main.dart
class App extends StatefulWidget {
final dynamic configuredApp;
App(this.configuredApp);
@override
_AppState createState() => _AppState();
}
事实证明,如果没有在main.dart文件中引用main() {}方法,则Android Studio中的一些构建步骤将失败,主要与Gradle有关。
使用VS Code的调试工具,替代flutter run -t lib/main_dev.dart
.vscode/launch.json
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
// "args": ["--enable-software-rendering"]
// "flutterMode": "profile", //debug //release
"program": "${workspaceFolder}/lib/main_dev.dart"
}
]
Flutter在寻找位于lib
文件夹中的main.dart
,但你可能已经将文件放在了其他包中。
最好的解决方案是将main.dart
文件直接放在lib
文件夹中。这样,Flutter运行命令就可以确保正常工作。
它对我起作用了。
main.dart
的URL应该是:
<app dir>/lib/main.dart
基本上当你执行这个命令时
flutter run
Flutter试图在/lib
目录中找到main.dart
文件。
因此,如果您有一个存储在/lib
目录的某个其他子目录中或具有不同名称(如result_page.dart
)的文件,则会遇到此错误。
现在,很多答案建议将您的文件重命名为main.dart
或直接将其移动到/lib
目录下。
但实际上,您可以通过提供当前目录到目标文件的路径来简单地运行任何文件,就像这样 -
flutter run --target=lib/customization/result_screen.dart
那么这将会执行位于名为customization
的某个子目录下的result_screen.dart
文件。
您也可以按照相同的逻辑生成APK文件,命令如下 -
flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64
其中--target-platform=android-arm64
是可选的,适用于64位Android设备,有助于减小APK大小,否则将生成包含32位和64位二进制文件的fat APK。更多信息请参见此处
如果您正在使用vscode...
当出现错误时,侧边栏中会出现vscode文件夹。其中包含launch.json文件。
您可以在launch.json文件中更改"program":"..."属性,以在所需目录中运行.dart文件。
.vscode/launch.json
文件,并将 "program"
的值更改为我的 main.dart
文件的绝对路径(例如 C://...
)。请检查文件夹.vscode>launch.json并添加配置:
如果已经有配置,请更改"program": "main.dart的路径,例如:lib/main.dart"
{
"name": "Dart",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
"configurations": [{
"name": "User-Dev",
"request": "launch",
"type": "dart",
"program": "lib/user/dev/main_dev.dart",
"args": [
"--flavor",
"UserDev"
]
}]
flutter doctor
命令的输出添加到你的问题中。 - Günter Zöchbauer