flutterで画像アセットを見つけることができません。何が問題ですか?
デバッガでエラーが発生しました:
XT1097のlib/main.Dartをデバッグモードで起動しています... 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)
私の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/
そしてコード:
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'),
)
)
),
私の知る限りでは、登録されたディレクトリの下に直接置かれたファイルのみがアセットに追加されます。
これはうまくいくはずです:
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/images/user/
同じエラーが発生しました。私の場合、使用している電話のエミュレーターがインターネットにアクセスできないためです。
物理的なモバイルデバイスでアプリケーションを実行すると、すぐに動作しました。
解決策エミュレータをインターネットに接続します。
サーバーから画像を取得するために誤って数値パラメーターをURLとして渡したときに、このエラーに直面しました。
leading: CircleAvatar(
backgroundImage: NetworkImage(imageUrl),
),
// imageUrlは他のタイプではなく正しい画像URLである必要があります。
これが私にとってこれが解決した方法です。
以前は、推奨されるように画像への正確なパスを使用していました
assets:
- assets/logo_linked_in.jpg
- assets/logo_medium.png
- assets/logo_stackoverflow.png
- assets/myself.jpg
- assets/sparta.jpg
- assets/fox.png
それから私はちょうど使用していた親ディレクトリ名だけを試しました:
assets:
- assets/
出来上がり!それは魅力のように働きました!
これが誰かのお役に立てば幸いです。
追伸-私のような初心者向け:
pubspec.yaml
は、ビルドにとって非常に重要であるため、正しくインデントしたことを確認してください。
私の場合、_とアセットの間に2つのスペースがあるため、この例外が発生します
- assets/images/logo.png
- assets/images/bg.jpg
今私は修正しました
assets:
- assets/images/logo.png
- assets/images/bg.jpg
私の場合、そのようなImage.asset('./../images/welcome.png')
のような相対パスを使用していましたが、機能しません。
しかし、そのような絶対パスを使用する場合、Image.asset('images/welcome.png')
を使用すると機能します。
以前は次のように画像のパスを設定しました
"assets/images/SU.jpg"
次に、このエラーが発生したため、次のように変更しました
"images/SU.jpg"
その後、それはうまくいった!
私の場合、pubspec.yamlのassets行とses-material-design行の間の配置を修正する必要があります。