defaultOnImageRemovedCallback property

ImageEmbedBuilderOnRemovedCallback defaultOnImageRemovedCallback

Implementation

static ImageEmbedBuilderOnRemovedCallback get defaultOnImageRemovedCallback {
  return (imageUrl) async {
    if (isWeb()) {
      return;
    }

    final mobile = isMobile(supportWeb: false);
    // If the platform is not mobile, return void;
    // Since the mobile OS gives us a copy of the image

    // Note: We should remove the image on Flutter web
    // since the behavior is similar to how it is on mobile,
    // but since this builder is not for web, we will ignore it
    if (!mobile) {
      return;
    }

    // On mobile OS (Android, iOS), the system will not give us
    // direct access to the image; instead,
    // it will give us the image
    // in the temp directory of the application. So, we want to
    // remove it when we no longer need it.

    // but on desktop we don't want to touch user files
    // especially on macOS, where we can't even delete
    // it without
    // permission

    final dartIoImageFile = File(imageUrl);

    final isFileExists = await dartIoImageFile.exists();
    if (isFileExists) {
      await dartIoImageFile.delete();
    }
  };
}