In Flutter, we can use PageView to support snapping, but let’s do same with SingleChildScrollView. I think this is well known. If page size is equal to screen width, just set PageScrollPhysics. Then we can use PageController if different. PageScrollPhysics internally references _PagePosition. Since PageController creates _PagePosition with createBallisticSimulation, we can specify the snap points by setting viewportFraction 😋