enrollWidget method

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

Creates a widget for enrolling with various callbacks and customizations.

This widget is used for the enrollment process, providing several callback functions to handle different stages and events during the process. It also allows customization of the permission request UI and loading widget.

Recommended Usage: Use rectInsideEllipseOverlay for a cleaner API with automatic state management. This eliminates parameter duplication and provides better developer experience.

Parameters:

  • withGlasses (required): A boolean indicating whether the user is wearing glasses.
  • onPercentageChanged (required): A callback function that is triggered when the enrollment percentage changes.
  • onCountdownStarted (required): A callback function that is triggered when the countdown starts.
  • onPushing (required): A callback function that is triggered when data is being pushed to the server.
  • onCompleted (required): A callback function that is triggered when the enrollment process is completed.
  • onFailed (required): A callback function that is triggered when the enrollment process fails.
  • customPermissionBuilder (required): A function that returns a custom widget for the permission request UI.
  • onLoadingWidget (required): A widget to display while the enrollment process is loading.
  • cameraPosition: The camera position to use (front or back camera).
  • enableCheckImageQuality: Whether to enable image quality checking.
  • builder (required): A function that returns a Stack widget, given a widget and a FlutterSmartfacePlatformCameraController.
  • 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. When provided, this widget manages its own state and visual appearance based on platform events.

Implementation

Widget enrollWidget({
  required bool withGlasses,
  required Function(dynamic) onPercentageChanged,
  required Function(dynamic) onCountdownStarted,
  required Function(dynamic) onPushing,
  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,
  bool enableCheckImageQuality = false,
  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': false,
    'counter': 3,
    'enableCheckImageQuality': enableCheckImageQuality,
  };

  return platformViewLink(
    cameraPosition: cameraPosition,
    creationParams: creationParams,
    onPercentageChanged: onPercentageChanged,
    onCountdownStarted: onCountdownStarted,
    onPushing: onPushing,
    onCompleted: onCompleted,
    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',
  );
}