HorizontalLineAddingPreviewMobile constructor

HorizontalLineAddingPreviewMobile({
  1. required InteractiveLayerBehaviour interactiveLayerBehaviour,
  2. required HorizontalLineInteractableDrawing interactableDrawing,
  3. required dynamic onAddingStateChange(
    1. AddingStateInfo
    ),
})

Implementation

HorizontalLineAddingPreviewMobile({
  required super.interactiveLayerBehaviour,
  required super.interactableDrawing,
  required super.onAddingStateChange,
}) {
  if (interactableDrawing.startPoint == null) {
    final interactiveLayer = interactiveLayerBehaviour.interactiveLayer;
    final Size layerSize = interactiveLayer.drawingContext.fullSize;

    final double centerX = layerSize.width / 2;
    final double centerY = layerSize.height / 2;

    interactableDrawing.startPoint = EdgePoint(
      epoch: interactiveLayer.epochFromX(centerX),
      quote: interactiveLayer.quoteFromY(centerY),
    );

    // Use a post-frame callback to ensure the startPoint is fully set before transitioning
    // Check if the widget is still mounted to prevent race conditions
    WidgetsBinding.instance.addPostFrameCallback((_) {
      // Check if the interactive layer is still mounted and startPoint is valid
      if (interactiveLayerBehaviour.interactiveLayer.isStillMounted &&
          interactableDrawing.startPoint != null) {
        onAddingStateChange(AddingStateInfo(1, 1));
      }
    });
  }
}