When I perform a flutter run I get an error
Target file "lib/main.dart" not found.
Why is this happening and how can I fix this?
You can run any file from any DIR provided that you set the target file path, example:
flutter run -t lib/main_dev.dart
OR
flutter run lib/dev/main_dev.dart
UPDATE (2020 February 5th)
It is however not advisable to remove main.dart from your project.
I'm sure most of you found this link because you are setting up / configuring your app to accommodate for different environments eg dev, stg, beta and prod.
Example:
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();
}
As it turns out some build steps will fail in Android Studio mostly Gradle related if you don't have a main.dart file and method main() {} referenced inside this file.
More info / solutions below related to flutter build error: finished with non-zero exit value 1
An alternative to flutter run -t lib/main_dev.dart
in VS Code with the debugger tool.
.vscode/launch.json
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
// "args": ["--enable-software-rendering"]
// "flutterMode": "profile", //debug //release
"program": "${workspaceFolder}/lib/main_dev.dart"
}
]
Hope this helps.
Flutter is looking for main.dart
in lib
folder while you must have had file inside any other package.
Best solution is to place your main.dart
file just inside lib
folder. Flutter run command will work then for sure.
It worked for me.
main.dart
url should be:
<app dir>/lib/main.dart
If you are using vscode...
When the error occurs, the vscode folder occurs in the side bar. It has the launch.json file inside.
You can change the "program": "..." property in the launch.json file to run the .dart file in the directory where you want.
This happened when I used Visual Studio Code. What I did to fix the problem was by editing the .vscode/launch.json
file and change the value of "program"
to the absolute path of my main.dart
file (eg C://...
).
So basically when you execute this
flutter run
Flutter tries to find main.dart
in /lib
directory.
So if you have a file that is present in some other child directory of /lib
directory or has a different name like result_page.dart
, you'd encounter this error. Now, a lot of answers had suggested to either rename your file to main.dart
or move it directly under /lib
directory.
But you can actually simply run any file by simply providing the target file's path from the current directory like this -
flutter run --target=lib/customization/result_screen.dart
So this would simply execute my result_screen.dart
file present under some other child directory called customization
.
You can also generate the APK file following the same logic and the command would look like this -
flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64
where --target-platform=android-arm64
is optional and is meant for 64-bit Android devices which helps in reducing APK size which otherwise would generate a fat APK including both 32-bit and 64-bit binaries. More info here
VSCode 用户:请导航到 launch.json 并将“Program”行替换为以下内容:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
in android studio this wokrs for me
this executes an snapshot aplicaction to configure the root profile a run your app
If you are using the Debug Mode
in vs code
, ensure that the vs code
working folder is your Flutter
project main folder.
If you want to change the vs code
working folder, you can use the File > Open Folder
menu or Ctrl+O
shortcut.
When I change the folder, It worked for me .
What my case was I forgot to write code for calling main....
void main()
{
runApp......
}
And doing this worked
Try final FlutterDevice flutterDevice = await FlutterDevice.create
The root cause is that the ResidentRunner we use to attach and do hot reloads will try to find a main.dart
file when a target isn't announced. Attach doesn't provide a target, so it uses the default behavior always. As per DaceShuckerow .
This issue is still there on the official Repo .
Check folder .vscode>launch.json and add configuration:
if you have it already change a "program": "path of main.dart example: lib/main.dart"
{ "name": "Dart", "type": "dart", "request": "launch", "program": "lib/main.dart" },
If you are using VSCode
then try this method :
Delete .vscode folder in your project directory and rerun the program.
If you are having multiple iOS schemes then you could try like this:
flutter run --flavor UserDev -t lib/user/dev/main_dev.dart
For,
"configurations": [{
"name": "User-Dev",
"request": "launch",
"type": "dart",
"program": "lib/user/dev/main_dev.dart",
"args": [
"--flavor",
"UserDev"
]
}]
In case someone is struggling with this what worked for me is to recreate ios folder. And -t works regardless of the location of the target or name of the target and without any need to have main.dart in your lib folder.
To recreate ios folder
我有一个类似的错误信息,这是因为我不小心删除了 void main()
I think you already change the path of main.dart.If so You can drag and drop the main.dart file to lib folder.(lib/main.dart)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.