positionFor static method

double positionFor(
  1. GlassSheetState state,
  2. double screenHeight, {
  3. GlassSheetMode? mode,
  4. double? halfSize,
  5. double? fullSize,
  6. double? peekSize,
})

Returns the normalized position (0.0–1.0) for state given screenHeight.

Values > 1.0 passed as size parameters are treated as absolute pixel heights and divided by screenHeight; values ≤ 1.0 are used as-is.

Implementation

static double positionFor(
  GlassSheetState state,
  double screenHeight, {
  GlassSheetMode? mode,
  double? halfSize,
  double? fullSize,
  double? peekSize,
}) {
  switch (state) {
    case GlassSheetState.hidden:
      return 0.0;
    case GlassSheetState.peek:
      double pos = peekSize ?? 5.0;
      return pos > 1.0 ? pos / screenHeight : pos;
    case GlassSheetState.half:
      double pos = halfSize ?? 0.45;
      return pos > 1.0 ? pos / screenHeight : pos;
    case GlassSheetState.full:
      double? target = fullSize;
      if (target != null) {
        return target > 1.0 ? target / screenHeight : target;
      }
      // Strictly use the specified inset (default 90.0) for accurate top positioning
      final topInset = 90.0;
      return (screenHeight - topInset) / screenHeight;
  }
}