flutter ne trouve pas mes images, que puis-je faire de mal?
J'ai eu l'erreur sur le débogueur:
Lancement de lib/main.Dart sur XT1097 en mode débogage ... Build build/app/outputs/apk/debug/app-debug.apk.
I/flutter ( 876): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞══
I/flutter ( 876): Unable to load asset: assets/images/user/background.jpg
I/flutter ( 876): "assets/images/user/background.jpg", scale: 1.0)
Mon pubspec.yml:
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
sqflite: any
path_provider: '>=0.3.0'
charts_flutter: any
cupertino_icons: ^0.1.2
material_search: ^0.2.8
dio: ^1.0.3
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- assets/images/
et le code:
new UserAccountsDrawerHeader(
decoration : BoxDecoration(
image: new DecorationImage(
image: AssetImage('assets/images/user/background.jpg'),
fit: BoxFit.cover
),
color: Colors.blue,
),
accountName: new Text('Diego Botelho'),
accountEmail: new Text('[email protected]'),
currentAccountPicture: new GestureDetector(
onTap: () => print('Toque na imagem'),
child: new CircleAvatar(
backgroundImage: AssetImage('assets/images/user/avatar.png'),
)
)
),
Pour autant que je sache actuellement, seuls les fichiers placés directement dans le répertoire enregistré sont ajoutés aux actifs.
Cela devrait fonctionner:
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/images/user/
J'ai eu la même erreur. Dans mon cas, c'est parce que l'émulateur du téléphone que j'utilise n'a pas accès à Internet.
Exécutez l'application sur un appareil mobile physique et cela a fonctionné immédiatement.
Solution connectez l'émulateur à Internet.
J'ai rencontré cette erreur lorsque je passais accidentellement un paramètre numérique en tant qu'URL pour obtenir l'image du serveur.
leading: CircleAvatar(
backgroundImage: NetworkImage(imageUrl),
),
// imageUrl doit être une URL d'image correcte, pas un autre type.
Voilà comment cela s'est résolu pour moi.
Auparavant, j'utilisais les chemins exacts vers les images comme suggéré
assets:
- assets/logo_linked_in.jpg
- assets/logo_medium.png
- assets/logo_stackoverflow.png
- assets/myself.jpg
- assets/sparta.jpg
- assets/fox.png
Ensuite, j'ai essayé uniquement le nom du répertoire parent, qui utilisait simplement:
assets:
- assets/
Voila! Ça a marché comme sur des roulettes!
J'espère que ça aidera quelqu'un.
P.S. - Pour les débutants comme moi:
Assurez-vous que vous avez correctement mis en retrait le pubspec.yaml
car c'est très important pour la construction.
Dans mon cas, j'ai deux espaces entre _ et les actifs, c'est pourquoi cette exception à venir
- assets/images/logo.png
- assets/images/bg.jpg
Maintenant, je fixe par
assets:
- assets/images/logo.png
- assets/images/bg.jpg
Dans mon cas, pendant que j'utilisais un chemin relatif comme ça Image.asset('./../images/welcome.png')
, ça ne marche pas.
Mais si j'utilise un chemin absolu comme ça Image.asset('images/welcome.png')
, ça marche!
Auparavant, je définissais les chemins des images comme suit
"assets/images/SU.jpg"
alors j'ai eu cette erreur donc je l'ai changé comme suit
"images/SU.jpg"
alors ça a marché !!
Dans mon cas, je dois corriger les alignements entre mes lignes assets et ses-material-design dans pubspec.yaml.