cake_wallet/lib/utils/image_utill.dart
David Adegoke 752b6bbebf
Some checks failed
Cache Dependencies / test (push) Has been cancelled
fix: Generic fixes of bugs from Support (#1774)
2024-10-31 04:10:40 +03:00

70 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
class ImageUtil {
static Widget getImageFromPath({required String imagePath, double? height, double? width}) {
final bool isNetworkImage = imagePath.startsWith('http') || imagePath.startsWith('https');
final bool isSvg = imagePath.endsWith('.svg');
final double _height = height ?? 35;
final double _width = width ?? 35;
if (isNetworkImage) {
return isSvg
? SvgPicture.network(
imagePath,
height: _height,
width: _width,
placeholderBuilder: (BuildContext context) => Container(
height: _height,
width: _width,
child: Center(
child: CircularProgressIndicator(),
),
),
)
: Image.network(
imagePath,
height: _height,
width: _width,
loadingBuilder:
(BuildContext context, Widget child, ImageChunkEvent? loadingProgress) {
if (loadingProgress == null) {
return child;
}
return Container(
height: _height,
width: _width,
child: Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes!
: null,
),
),
);
},
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return Container(
height: _height,
width: _width,
);
},
);
} else {
return isSvg
? SvgPicture.asset(
imagePath,
height: _height,
width: _width,
placeholderBuilder: (_) => Icon(Icons.error),
)
: Image.asset(
imagePath,
height: _height,
width: _width,
errorBuilder: (_, __, ___) => Icon(Icons.error),
);
}
}
}