[英]Flutter : Target file "lib/main.dart" not found
當我執行flutter 運行時出現錯誤
找不到目標文件“lib/main.dart”。
為什么會發生這種情況,我該如何解決?
您可以從任何 DIR 運行任何文件,前提是您設置了目標文件路徑,例如:
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 run 命令肯定會起作用。
它對我有用。
main.dart
網址應該是:
<app dir>/lib/main.dart
如果您使用的是 vscode...
出現錯誤時,vscode文件夾出現在側邊欄中。 它里面有launch.json文件。
您可以更改 launch.json 文件中的"program": "..."屬性,以在所需目錄中運行 .dart 文件。
這發生在我使用 Visual Studio Code 時。 我為解決這個問題所做的是通過編輯.vscode/launch.json
文件並將"program"
的值更改為我的main.dart
文件的絕對路徑(例如C://...
)。
所以基本上當你執行這個
flutter run
Flutter 嘗試在/lib
目錄中找到main.dart
。
因此,如果您的文件存在於/lib
目錄的其他子目錄中或具有不同的名稱,例如result_page.dart
,您會遇到此錯誤。 現在,很多答案都建議將您的文件重命名為main.dart
或將其直接移動到/lib
目錄下。
但是您實際上可以通過簡單地從當前目錄提供目標文件的路徑來簡單地運行任何文件,如下所示 -
flutter run --target=lib/customization/result_screen.dart
因此,這將只是執行我的result_screen.dart
叫一些其他子目錄下的文件,目前customization
。
您還可以按照相同的邏輯生成 APK 文件,命令如下所示 -
flutter build apk --target=lib/customization/result_screen.dart --target-platform=android-arm64
其中--target-platform=android-arm64
是可選的,適用於 64 位 Android 設備,這有助於減少 APK 大小,否則會生成包含 32 位和 64 位二進制文件的胖 APK。 更多信息在這里
VSCode 用戶:請導航到 launch.json 並將“Program”行替換為以下內容:
"Program":"${rootProject.buildDir}/${project.name}/lib/main.dart"
在 android studio 中,這對我來說是可行的
這將執行快照應用程序以配置根配置文件並運行您的應用程序
如果您在vs code
中使用Debug Mode
,請確保vs code
工作文件夾是您的Flutter
項目主文件夾。
如果要更改vs code
工作文件夾,可以使用“ File > Open Folder
菜單或Ctrl+O
快捷鍵。
當我更改文件夾時,它對我有用。
我的情況是我忘記編寫調用 main 的代碼......
void main()
{
runApp......
}
這樣做有效
嘗試final FlutterDevice flutterDevice = await FlutterDevice.create
根本原因是我們用來附加和熱重載的ResidentRunner會在目標未宣布時嘗試查找main.dart
文件。 Attach 不提供目標,因此它始終使用默認行為。 根據DaceShuckerow 。
這個問題仍然存在於官方Repo 上。
檢查文件夾.vscode>launch.json並添加配置:
如果您已經更改了“程序”:“main.dart 示例的路徑:lib/main.dart”
{ "name": "Dart", "type": "dart", "request": "launch", "program": "lib/main.dart" },
如果您使用的是VSCode
嘗試以下方法:
刪除項目目錄中的.vscode文件夾並重新運行程序。
如果您有多個 iOS 方案,那么您可以嘗試這樣:
flutter run --flavor UserDev -t lib/user/dev/main_dev.dart
為了,
"configurations": [{
"name": "User-Dev",
"request": "launch",
"type": "dart",
"program": "lib/user/dev/main_dev.dart",
"args": [
"--flavor",
"UserDev"
]
}]
如果有人為此苦苦掙扎,對我有用的是重新創建 ios 文件夾。 無論目標的位置或目標的名稱如何, -t 都可以工作,並且不需要在 lib 文件夾中包含 main.dart。
重新創建ios文件夾
我有一個類似的錯誤信息,這是因為我不小心刪除了 void main()
我認為您已經更改了 main.dart 的路徑。如果是這樣,您可以將 main.dart 文件拖放到 lib 文件夾中。(lib/main.dart)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.