enrollWithoutServerPushingWidget method

Widget enrollWithoutServerPushingWidget({
  1. required bool withGlasses,
  2. required dynamic onPercentageChanged(
    1. dynamic
    ),
  3. required dynamic onCountdownStarted(
    1. dynamic
    ),
  4. required dynamic onCompleted(
    1. dynamic
    ),
  5. required dynamic onFailed(
    1. dynamic
    ),
  6. required Widget customPermissionBuilder(
    1. dynamic
    ),
  7. required Widget onLoadingWidget,
  8. required Stack builder(
    1. Widget,
    2. FlutterSmartfacePlatformCameraController
    ),
  9. SmartfaceCameraPosition? cameraPosition = SmartfaceCameraPosition.front,
  10. dynamic onRectInsideEllipseChanged(
    1. bool
    )?,
  11. SmartfaceTransparentEllipseOverlay? rectInsideEllipseOverlay,
  12. @Deprecated('Use rectInsideEllipseOverlay instead for better integration and automatic state management') Widget? faceMaskOverlay,
})

Creates a widget for enrolling without server pushing.

This widget handles the enrollment process with various callbacks and customizations but does not push data to a remote server.

Recommended Usage: Use rectInsideEllipseOverlay for a cleaner API with automatic state management.

Parameters:

  • withGlasses (required): A boolean indicating if the user is wearing glasses.
  • onPercentageChanged (required): A callback function that is triggered when the percentage changes.
  • onCountdownStarted (required): A callback function that is triggered when the countdown starts.
  • onCompleted (required): A callback function that is triggered when the enrollment is completed. It receives a map of string to dynamic values.
  • onFailed (required): A callback function that is triggered when the enrollment fails.
  • customPermissionBuilder (required): A function that returns a custom permission widget.
  • onLoadingWidget (required): A widget that is displayed while loading.
  • builder (required): A function that returns a stack widget with a camera controller.
  • cameraPosition: The camera position to use (front or back camera).
  • onRectInsideEllipseChanged: Optional callback that is triggered when the rectangle position changes relative to the ellipse.

New Recommended Parameters:

  • rectInsideEllipseOverlay: A SmartfaceTransparentEllipseOverlay widget that handles ellipse validation automatically.

Returns: A widget that handles the enrollment process without server pushing

Implementation

Widget enrollWithoutServerPushingWidget({
  required bool withGlasses,
  required Function(dynamic) onPercentageChanged,
  required Function(dynamic) onCountdownStarted,
  required Function(dynamic) onCompleted,
  required Function(dynamic) onFailed,
  required Widget Function(dynamic) customPermissionBuilder,
  required Widget onLoadingWidget,
  required Stack Function(Widget, FlutterSmartfacePlatformCameraController)
      builder,
  SmartfaceCameraPosition? cameraPosition = SmartfaceCameraPosition.front,
  Function(bool)? onRectInsideEllipseChanged,

  // NEW: Recommended parameter for cleaner API
  SmartfaceTransparentEllipseOverlay? rectInsideEllipseOverlay,

  // LEGACY: Deprecated parameters - maintained for backward compatibility
  @Deprecated(
      'Use rectInsideEllipseOverlay instead for better integration and automatic state management')
  Widget? faceMaskOverlay,
}) {
  // Build base creation parameters
  Map<String, dynamic> creationParams = {
    'withGlasses': withGlasses,
    'withoutServerPushing': true,
    'counter': 3,
  };

  return platformViewLink(
    cameraPosition: cameraPosition,
    creationParams: creationParams,
    onPercentageChanged: onPercentageChanged,
    onCountdownStarted: onCountdownStarted,
    onCompleted: (arguments) {
      onCompleted(arguments);
    },
    onFailed: onFailed,
    customPermissionBuilder: customPermissionBuilder,
    onLoadingWidget: onLoadingWidget,
    // Use rectInsideEllipseOverlay if provided, otherwise fall back to faceMaskOverlay
    rectInsideEllipseOverlay: rectInsideEllipseOverlay,
    onRectInsideEllipseChanged: onRectInsideEllipseChanged,
    faceMaskOverlay: faceMaskOverlay,
    builder: builder,
    viewType: 'enroll_finish_view',
  );
}