onSnapshot method

Future<bool> onSnapshot(
  1. XFile image
)

Implementation

Future<bool> onSnapshot(XFile image) async {
  bool ok = true;

  // detect in image
  if (widget.model.detectors != null) {
    DetectableImage? detectable;

    // blob image - created in web
    if (image.path.startsWith("blob:")) {
      var bytes = await image.readAsBytes();
      var codec = await instantiateImageCodec(bytes);
      var frame = await codec.getNextFrame();
      var data =
          await frame.image.toByteData(format: ImageByteFormat.rawRgba);
      if (data != null) {
        detectable = DetectableImage.fromRgba(
            data.buffer.asUint8List(), frame.image.width, frame.image.height);
      }
    }

    // blob image - created in mobile
    else {
      detectable = DetectableImage.fromFilePath(image.path);
    }

    //detect
    if (detectable != null) widget.model.detectInImage(detectable);
  }

  // apply transforms
  File file = await widget.model.applyTransforms(image);

  // return file
  widget.model.onFile(file);

  return ok;
}