Skip to main content

ScrollableControl

Shared scroll behavior for controls that expose a scrollable viewport.

This mixin-style control is inherited by controls such as Column, Row, ResponsiveRow, View, ListView, and GridView. It provides a common API for:

Inherits: Control

Properties

Events

  • on_scroll - Called when scroll position is changed by a user.

Methods

Properties

auto_scrollclass-attributeinstance-attribute

auto_scroll: bool = False

Whether to automatically move the scroll position to the end when the content changes.

This keeps the view pinned to the end as new children are added and as existing content grows in place (e.g. text streamed into an existing child). Pinning is suspended while the user has scrolled away from the end, and resumes once they scroll back.

Note

Must be False for scroll_to method to work.

auto_scroll_animationclass-attributeinstance-attribute

auto_scroll_animation: AnimationValue | None = None

Animation used when auto_scroll moves the view to the end.

Accepts an Animation (duration + curve), an int duration in milliseconds, or True. Defaults to a 1 second ease animation; set a duration of 0 for an instant jump (recommended when following fast, token-by-token streaming so the view stays tightly pinned).

scrollclass-attributeinstance-attribute

scroll: ScrollMode | Scrollbar | None = None

Defines the scroll bar configuration of this control.

Can be a Scrollbar instance for full control over the appearance of the scrollbar, or a ScrollMode value, for ready-made scrollbar behaviors.

scroll_intervalclass-attributeinstance-attribute

scroll_interval: Number = 10

Throttling in milliseconds for on_scroll event.

Events

on_scrollclass-attributeinstance-attribute

on_scroll: EventHandler[OnScrollEvent] | None = None

Called when scroll position is changed by a user.

Methods

scroll_toasync

scroll_to(
    offset: float | None = None,
    delta: float | None = None,
    scroll_key: ScrollKey
    | str
    | int
    | float
    | bool
    | None = None,
    duration: DurationValue = 0,
    curve: AnimationCurve = AnimationCurve.EASE,
)

Moves the scroll position.

Parameters:

  • offset (float | None, default: None) - Absolute scroll target in pixels. A negative value is interpreted relative to the end (e.g. -1 to jump to the very end).
  • delta (float | None, default: None) - Relative scroll change in pixels. Positive values scroll forward, negative values scroll backward.
  • scroll_key (ScrollKey | str | int | float | bool | None, default: None) - Key of the target control to scroll to.
  • duration (DurationValue, default: 0) - The scroll animation duration.
  • curve (AnimationCurve, default: AnimationCurve.EASE) - The scroll animation curve.
Notes
  • Exactly one of offset, delta or scroll_key should be provided.
  • auto_scroll must be False.
  • This method is ineffective for controls (e.g. ListView, GridView) that build items dynamically.