positionForState method
Like positionFor but applies cascade constraints so snap positions are
always ordered: hidden ≤ peek ≤ half ≤ full.
Implementation
double positionForState(GlassSheetState state, double screenHeight) {
final hiddenPos = positionFor(GlassSheetState.hidden, screenHeight,
mode: mode, halfSize: halfSize, fullSize: fullSize, peekSize: peekSize);
final peekPos = positionFor(GlassSheetState.peek, screenHeight,
mode: mode, halfSize: halfSize, fullSize: fullSize, peekSize: peekSize);
final halfPos = positionFor(GlassSheetState.half, screenHeight,
mode: mode, halfSize: halfSize, fullSize: fullSize, peekSize: peekSize);
final fullPos = positionFor(GlassSheetState.full, screenHeight,
mode: mode, halfSize: halfSize, fullSize: fullSize, peekSize: peekSize);
// Cascade constraint: ensure order hidden <= peek <= half <= full
final safePeek = peekPos.clamp(hiddenPos, 1.0);
final safeHalf = halfPos.clamp(safePeek, 1.0);
final safeFull = fullPos.clamp(safeHalf, 1.0);
switch (state) {
case GlassSheetState.hidden:
return hiddenPos;
case GlassSheetState.peek:
return safePeek;
case GlassSheetState.half:
return safeHalf;
case GlassSheetState.full:
return safeFull;
}
}