[解決済み] FlutterError: アセットをロードできない
質問
これは私のアプリのフォルダ構造です
.idea
.vscode
android
build
fonts
Oxygen-Bold.tff
Oxygen-Light.tff
Oxygen-Regular.tff
images
pizza0.png
pizza1.png
ios
lib
ui
home.dart
main.dart
test
.gitignore
.metadata
.packages
app_widgets.iml
pubspec.lock
pubspec.yaml
README.md
私の
pubspec.yaml
ファイルでは、フォントとアセットを次のように読み込んでいます。
flutter:
uses-material-design: true
assets:
- images/pizza0.png
- images/pizza1.png
fonts:
- family: Oxygen
fonts:
- asset: fonts/Oxygen-Regular.ttf
- asset: fonts/Oxygen-Bold.ttf
weight: 700
- asset: fonts/Oxygen-Light.ttf
weight: 300
これについては、特にエラーは出ていません。
pubspec.yaml
を実行しても
flutter packages get
を実行すると、終了コード0が返されます。
私のhome.dartには以下のクラスがあります。
class PizzaImageWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
AssetImage pizzaAsset = AssetImage('images/pizza0.png');
Image image = Image(image: pizzaAsset, width: 400, height: 400);
return Container(
child: image,
);
}
}
これは、画像を表示するために、他の場所で使用しています(コード省略)。
),
PizzaImageWidget(),
],
ビルドではエラーは出ません。Flutter Doctor -vでもエラーは出ませんし、Flutter Analyze -vでもエラーは出ません。.apkは問題なくビルドできているようですが、スマホでアプリを開くとasset_bundle.dartで以下のエラーが発生します。
Exception has occurred. FlutterError (Unable to load asset: images/pizza0.png)
このエラーはasset_bundle.dartファイル内のこのクラスによって投げられます。
/// An [AssetBundle] that loads resources using platform messages.
class PlatformAssetBundle extends CachingAssetBundle {
@override
Future<ByteData> load(String key) async {
final Uint8List encoded = utf8.encoder.convert(Uri(path: Uri.encodeFull(key)).path);
final ByteData asset =
await BinaryMessages.send('flutter/assets', encoded.buffer.asByteData());
if (asset == null)
throw FlutterError('Unable to load asset: $key');
return asset;
}
}
これはpizza0.pngファイルとpizza1.pngファイルの両方に対して起こります。Windows エクスプローラーと VS Code の両方で、ファイルはツリー構造で表示されます。フォント アセットは問題なく読み込まれます。
Flutter Run -v を実行したときに得られる出力です。
[+1068 ms] I/flutter ( 6489): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════ [ +9 ms] I/flutter ( 6489 ): 次のアサーションが投げられました。 画像コーデックを解決するために、次のアサーションがスローされました。[2 ミリ秒] I/flutter ( 6489 ): アセットを読み込むことができません。 images/pizza0.png [ +2 ms] I/flutter ( 6489): [1 ms] I/flutter(6489)。 6489): 例外が発生したときのスタックはこのようになっていました。[ +2 ms ]。 I/flutter ( 6489): #0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:221:7) [ +1 ms ]。 I/flutter ( 6489 ): [1 ms] I/flutter(6489)。 6489): #1 AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:429:44) [ +1 ms] です。 I/flutter ( 6489 ): [1 ms] I/flutter(6489)。 6489): #2 AssetBundleImageProvider.load (package:flutter/src/painting/image_provider.dart:414:14) [ +1 ms] です。 I/flutter ( 6489 ): #3 ImageProvider.resolve...。 (package:flutter/src/painting/image_provider.dart:267:86) [ +4 ms ]。 I/flutter ( 6489 ): #4 ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:143:20) [ +3 ms] を実行しました。 I/flutter ( 6489 ): #5 ImageProvider.resolve. (package:flutter/src/painting/image_provider.dart:267:63) [ +3 ms ]。 I/flutter ( 6489 ): (dart:asyncパッケージから8フレームを除外) [ +1 ms] I/flutter ( 6489 ): [1 ms] I/flutter ( 6489 ): 画像プロバイダ。 AssetImage(bundle: null, name: "images/pizza0.png") [ +3 ms ]。 I/flutter ( 6489 ): 画像キーです。AssetBundleImageKey(bundle: PlatformAssetBundle#20fc8(), name: "images/pizza0.png", [ +1 ms ]。 I/flutter ( 6489): scale: 1.0) [ +2 ms] I/flutter ( 6489): ════════════════════════════════════════════════════════════════════════════════════════════════════
どのように解決するのですか?
のインデントを考慮する必要があります。
assets
flutter:
assets:
- images/pizza1.png
- images/pizza0.png
詳細はこちら
flutter:
[2 whitespaces or 1 tab]assets:
[4 whitespaces or 2 tabs]- images/pizza1.png
[4 whitespaces or 2 tabs]- images/pizza0.png
関連
-
[解決済み] flutterで文字に下線を引く方法
-
flutter,コマンド PhaseScriptExecution が 0 以外の終了コードで失敗しました。
-
[解決済み] Flutterでgoogleとyoutubeの両方にログインする
-
[解決済み] ヌル値に対して使用されるヌルチェック演算子
-
[解決済み】メッセージ「flutter run: 接続されたデバイスがありません"
-
[解決済み】FlutterでStateful Widgetにデータを渡す
-
[解決済み] ポップアップ時にFlutterナビゲータの状態を再読み込みするように強制する
-
[解決済み] フラッター エキスパンドとフレキシブル
-
[解決済み] TextFieldの外や画面上の任意の場所をクリックした後、flutterのソフト入力キーボードを非表示にする方法は?
-
[解決済み] Flutterアプリのビルド番号とバージョン番号を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FlutterでButtonを無効にするには?
-
Solve flutter Android ライセンスの状態が不明です。Android SDK Managerを再インストールまたはアップデートしてみてください。
-
[解決済み】オンスクリーンキーボードを解除するにはどうしたらいいですか?
-
[解決済み】Flutterのテキストウィジェットの下に黄色い線が?
-
[解決済み】flutterのwrap_contentとmatch_parentに相当するもの?
-
[解決済み】Flutterでウィジェットをプログラム的に表示・非表示にする方法
-
[解決済み】Dartの名前付きパラメータと位置付きパラメータの違いは何ですか?
-
[解決済み】Flutterで少し遅れてからコードを実行する方法は?
-
[解決済み] 依存関係がヌルセーフティをサポートしていないため、サウンドヌルセーフティで実行できない
-
[解決済み] 画面の高さと幅の決め方