getImageProvider function

ImageProvider<Object> getImageProvider({
  1. required BuildContext context,
  2. required String url,
  3. required Size targetSize,
})

Implementation

ImageProvider getImageProvider({
  required BuildContext context,
  required String url,
  required Size targetSize,
}) {
  final controller = SDController.instance;
  ImageProvider provider;

  SlideAsset? asset;

  final firstOrNull = controller.assets.watch(context).firstWhereOrNull;

  if (ProjectService.instance.isAssetFile(File(url))) {
    asset = firstOrNull((e) => e.file.path == url);
  } else {
    asset = firstOrNull((e) => e.file.path.contains(shortHashId(url)));
  }

  url = asset?.file.path ?? url;

  //  check if its a local path or a network path
  if (url.startsWith('http')) {
    provider = CachedNetworkImageProvider(url);
  } else {
    if (kCanRunProcess) {
      final file = File(url);
      provider = FileImage(file);
    } else {
      provider = AssetImage(url);
    }
  }

  final (:width, :height) = calculateImageSize(targetSize, asset);

  return ResizeImage.resizeIfNeeded(
    width,
    height,
    provider,
  );
}