startCameraStream static method

Future<void> startCameraStream({
  1. ImageCallback? onFrameAvailable,
  2. PoseCallback? onPoseAvailable,
  3. BodyMaskCallback? onMaskAvailable,
})

Implementation

static Future<void> startCameraStream({
  ImageCallback? onFrameAvailable,
  PoseCallback? onPoseAvailable,
  BodyMaskCallback? onMaskAvailable,
}) async {
  try {
    await _channel.invokeMethod<void>('startCameraStream');

    _imageStreamSubscription = _eventChannel.receiveBroadcastStream().listen(
      (dynamic result) {
        final type = result['type'];
        // Camera image
        if (type == 'image' && onFrameAvailable != null) {
          onFrameAvailable(
            ImageResult.fromMap(result),
          );
        }
        // Pose detection result
        else if (type == 'pose' && onPoseAvailable != null) {
          onPoseAvailable(
            result['pose'] == null ? null : Pose.fromMap(result['pose']),
          );
        }
        // Selfie segmentation result
        else if (type == 'mask' && onMaskAvailable != null) {
          onMaskAvailable(
            result['mask'] == null ? null : BodyMask.fromMap(result['mask']),
          );
        }
      },
    );
  } on PlatformException catch (e) {
    throw BodyDetectionException(e.code, e.message);
  }
}