presentation/widgets/common/screen_shake library

Classes

ScreenShake
Wraps child in a Transform.translate driven by controller. Ticks a Ticker only while a shake is actually decaying (stops once controller.offsetAt(...) returns Offset.zero, not left running forever). Respects NeonTheme.reducedMotion — when on, renders child unchanged regardless of what controller does, same as the decorative shader layers (ShaderTickerLayerState).
ScreenShakeController
Per-screen/per-widget-tree shake controller (IDEA-08) — a plain ChangeNotifier the caller creates and owns (like a TextEditingController), not a global GetxService singleton, since screen-shake state is local to whatever's shaking (a board, a card, a whole screen), not app-wide.