-2

ネットワーク/アセット イメージの読み込みに失敗した場合に、プレースホルダー イメージを読み込む方法が必要です。これが私が試したことです。

class CircularImageWidget extends StatelessWidget {
  CircularImageWidget({
    Key key,
    @required this.radius,
    @required this.assetPath,
    @required this.imageType,
  }) : super(key: key);

  final double radius;
  final String assetPath;
  final ImageType imageType;

  Image getErrorImage() {
    return Image.asset(AssetUtils.profilepic);
  }

  ImageProvider returnImageAccordingToImageType() {
    if (imageType == ImageType.Network) {
      return NetworkImage(
        assetPath,
      );
    } else {
      return AssetImage(
        assetPath,
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return CircleAvatar(
      backgroundImage: returnImageAccordingToImageType() ??
          AssetImage(AssetUtils.profilepic),
      radius: radius,
      onBackgroundImageError: (exception, stackTrace) {
        return AssetImage(AssetUtils.profilepic);
      },
    );
  }
}
4

1 に答える 1