Short answer
Check, in order: the file is listed in pubspec.yaml under flutter: assets: (a folder entry ends in / and covers that folder only, not its subfolders); the path in Image.asset() points at a real file under that entry, with the same capitals; and the assets: line is indented two spaces under flutter:. After changing pubspec.yaml, stop the app and run it again. For an asset that ships inside a package, pass package: 'package_name' to Image.asset.
Why Flutter can’t find the file, and the fix
01
The file isn’t listed in pubspec.yaml
“Each asset is identified by an explicit path (relative to the pubspec.yaml file) where the asset file is located.” Flutter, Adding assets and images
Copying a file into the project folder isn’t enough. Every asset needs a line under flutter: assets:, either for the file itself or for its folder. A folder entry must end in /: - assets/images without it is read as a file.
flutter: assets: - assets/images/ - assets/data/config.json02
It sits in a subfolder of a listed folder
“Only files located directly in the directory are included. Resolution-aware asset image variants are the only exception. To add files located in subdirectories, create an entry per directory.” Flutter, Adding assets and images
assets/images/ includes assets/images/logo.png, but not assets/images/icons/home.png. Add a line for each subfolder.
03
The path in the code doesn’t match
Image.asset('Assets/Logo.png') looks for a different file than assets/logo.png. Copy the path from pubspec.yaml into the code, with no leading slash or ./, and check the file name’s capitals and extension (.png and .PNG differ).
04
pubspec.yaml is indented wrongly
“The assets: line should be indented by exactly two spaces below the flutter: line” Flutter, Adding assets and images
YAML reads structure from spaces. If assets: isn’t indented under flutter:, the list is ignored or the build reports that it can’t find the folder.
Checked against the vendor’s docs on : Flutter: Adding assets and images.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Flutter web “XMLHttpRequest error” · Flutter “version solving failed” · Flutter “A RenderFlex overflowed” · React Native unable to load script