positionFor static method
double
positionFor(
- GlassSheetState state,
- double screenHeight, {
- GlassSheetMode? mode,
- double? halfSize,
- double? fullSize,
- 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;
}
}