Загрузите изображение по умолчанию, если Image.asset не нашел изображение - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь загрузить изображение с этим кодом

CircleAvatar(
    child: Image(
    image: getImage(snapshot.value['img']),
    ),
),

, но если изображение не найдено, я хочу заменить его изображением по умолчанию и пытаюсь использовать этот код

AssetImage getImage(String image) {
    AssetImage img;
    try {
        img = AssetImage('images/${widget.categoria}/$image.png');
    } catch (e) {
        img = AssetImage('images/non_disp_big.png');
    }
    return img;
}

Я уже добавляю все зависимости изображений в pubspe c .yaml. Я просто хочу заменить изображение значением по умолчанию, если оно не найдено в папке

Это ошибка:

════════ Exception caught by image resource service ════════════════════════════════════════════════
The following assertion was thrown resolving an image codec:
Unable to load asset: images/produzioni-tipiche/biplano.png

When the exception was thrown, this was the stack: 
#0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:221:7)
<asynchronous suspension>
#1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:484:44)
#2      AssetBundleImageProvider.load (package:flutter/src/painting/image_provider.dart:469:14)
#3      ImageProvider.resolve.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:327:17)
...
Image provider: AssetImage(bundle: null, name: "images/produzioni-tipiche/biplano.png")
Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#15081(), name: "images/produzioni-tipiche/biplano.png", scale: 1.0)
════════════════════════════════════════════════════════════════════════════════════════════════════

1 Ответ

0 голосов
/ 01 мая 2020

вы должны просто вернуть string для актива изображения внутри вашего CircleAvatar виджета, как показано ниже:

CircleAvatar(
            child: Image(
          image: AssetImage(getImage(snapshot.value['img'])),
        ))

метод возвращает string сейчас:

String getImage(String image) {
    String img;
    try {
      img = 'images/${widget.categoria}/$image.png';
    } catch (e) {
      img = 'images/non_disp_big.png';
    }
    return img;
  }
...