The direction in which the user is trying to change pixels, relative to the viewport's RenderViewportBase.axisDirection.
If the user is not scrolling, this will return ScrollDirection.idle even if there is (for example) a ScrollActivity currently animating the position.
This is exposed in SliverConstraints.userScrollDirection, which is used by some slivers to determine how to react to a change in scroll offset. For example, RenderSliverFloatingPersistentHeader will only expand a floating app bar when the userScrollDirection is in the positive scroll offset direction.
This sample shows a CustomScrollView, with Radio buttons in the AppBar.bottom that change the AxisDirection to illustrate different configurations. With a NotificationListener to listen to UserScrollNotifications, which occur when the ScrollDirection changes or stops.link
To create a local project with this code sample, run:
flutter create --sample=rendering.ScrollDirection.1 mysample
ScrollDirection get userScrollDirection;