adaptive_scroller
A Flutter scroll controller for long lists with variable item heights. It adaptively learns item sizes for accurate, efficient scrolling and a better user experience.
What this package is like to depend on
Last release 8 months ago
21 Dec 2025
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
9 months old
5 releases · first in 2025
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · Nov 2025 to Dec 2025
2026
Releases
latest 5-
1.0.421 Dec 2025Release notes
Open source →- FEAT: Added
setEnlargeFactorto dynamically tune the scroll estimation aggressiveness. - FEAT: Introduced
resetAllItemState()to clear the entire measurement cache, essential when the list's underlying data source changes completely. - FEAT: Added
resetItemState(int index)for fine-grained control, allowing the state of a single item to be reset for re-measurement. - FIX: Hardened
SizeReportingWidgetagainst rare race conditions by adding checks before invoking callbacks. - DOCS: Significantly improved internal documentation and comments to clarify complex logic, especially the state-re-synchronization behavior in the offset calculation phase.
- REFACTOR: Minor code cleanup and variable name clarifications for better maintainability.
- FEAT: Added
-
1.0.316 Dec 2025Release notes
Open source →Fixed
- Corrected a bug in the scroll offset calculation that could cause inaccuracies when scrolling large distances.
Changed
- Performance:
SizeReportingWidgetnow caches its last reported size to avoid sending redundant update notifications on widget rebuilds. - Performance: The scroll controller now uses a "high-water mark" to avoid re-calculating metrics for already-processed items, improving efficiency on subsequent scrolls.
- Scrolling Behavior: Refined the logic to better handle scrolling precisely to the final item in the list.
Added
- Improved internal documentation and code comments to clarify the logic of
AdaptiveScrollMetricsController.
-
1.0.228 Nov 2025Release notes
Open source →Performance
- BREAKING: Reworked
calculateScrollOffsetto use an O(1) estimation algorithm for large jumps. This eliminates UI freezes when scrolling in very long lists. - The controller now calculates an estimated total list height to provide a more stable scroll extent when jumping to unmeasured items.
API & Fixes
- BREAKING: Removed the
defaultItemHeightproperty fromAdaptiveScrollMetricsController. The controller now relies exclusively on its learnedaverageItemHeightfor more accurate estimations. - The
calculateScrollOffsetmethod now returns aScrollOffsetResultobject containing both thetargetOffsetand the scrolldistance. - Fixed static analysis warnings by adding explicit type annotations to getters.
- Added logic to better handle scrolling up from the bottom of the list.
General
- Significantly improved documentation for all public classes and methods.
- Refined internal variable names for better code clarity.
- Removed all internal logging for a clean production release.
- BREAKING: Reworked
-
1.0.126 Nov 2025Release notes
Open source →- BREAKING: Relocated
adaptive_scroller.dartintolib/directory to follow Dart package conventions. - Fixed
pubspec.yamldescription length to meet pub.dev validation requirements. - Added a complete, runnable example application to demonstrate package usage.
- BREAKING: Relocated
-
1.0.026 Nov 2025