better_chat_scrolling_ai 0.2.3
better_chat_scrolling_ai: ^0.2.3 copied to clipboard
Drop-in chat scrolling widget for AI chat apps with correct reversed-list behavior, dynamic padding, and auto-scroll management.
0.2.3 #
- Fix scroll-to-bottom button incorrectly showing when keyboard opens
- Fix error when pressing scroll-to-bottom button multiple times rapidly — guard against concurrent scroll animations
- Add
hideScrollToBottomWhenKeyboardOpenparameter onBetterChatScrollView(default: true) — hides the button while the keyboard is visible
0.2.2 #
- Animate scroll to exchange on new user message — replaces instant
jumpTowith smoothscrollTo - Add configurable
scrollToExchangeDurationandscrollToExchangeCurveonChatScrollController - Fix overscroll bounce during animated exchange scroll with
BouncingScrollPhysics— adaptive physics clamps overscroll during programmatic scrolls while preserving bounce for user scrolls
0.2.0 #
- Fix
scrollToBottomThresholdnot working for large values — button now correctly respects threshold when anchor item is off-screen - Fix keyboard viewport adjustment using near-instant 16ms animation — now uses configurable smooth 150ms transition
- Document auto-follow 16ms as intentional — minimum valid duration for frame-synced tracking (
animateScrollrequires> Duration.zero) - Add
showScrollToBottomButtontoggle onBetterChatScrollView(default: true) - Add configurable
scrollToBottomDuration,scrollToBottomCurve,showButtonDebounce,keyboardAdjustDuration, andautoFollowDeltaThresholdonChatScrollController - Add configurable
scrollToBottomFadeDurationandphysicsonBetterChatScrollView - Fix separator logic duplication in
_buildItem - Remove unused
MeasureSizewidget
0.1.8 #
- Fix keyboard not pushing content up when viewing long messages in existing chats
0.1.7 #
- Fix double-jump when
onNewUserMessage()is called on initial mount (e.g.initState+postFrameCallback)
0.1.6 #
- Fix first message not scrolling to top in empty chats when using async state managers (Riverpod, Bloc, etc.)
- Add empty chat example with placeholder UI
0.1.5 #
- Add Android platform support to example app
0.1.4 #
- Fix scroll-to-bottom threshold not working — anchor now 1px tall so
ItemPositionsListeneralways reports it - Fix scroll-to-bottom button briefly flashing on send — debounce show by 150ms
- Replace
scrollToBottomWidgetwithscrollToBottomBuilder— builder receives theonPressedcallback
0.1.3 #
- Fix race condition when
onAIResponseStarted()fires beforeonNewUserMessage()— order-independent buffering - Make
exchangeCountreactive viaexchangeCountNotifier(ValueNotifier) — works with Riverpod, Bloc, etc. - Fix layout jump when AI response completes or follow-up content loads
- Fix scroll-to-bottom not reaching true bottom — accounts for list bottom padding
- Fix
scrollToBottomThresholdnot being used — button now respects threshold before appearing - Fix scroll-to-bottom button briefly flashing when sending a message
- Fix chat not starting at true bottom when opened
- Add auto-follow mode: pressing scroll-to-bottom during streaming keeps viewport at bottom; touch/drag cancels immediately
- Add
autoFollowOnScrollToBottomparameter onChatScrollController(default: true) - Add
scrollToBottomBuilder— custom button builder that receives theonPressedcallback - Add
scrollToBottomAlignment— position button left, center (default), or right - Add
scrollToBottomBottomOffset— control distance from bottom edge (default: 8) scrollToBottom()is now async (returnsFuture<void>)
0.1.2 #
- Fix race condition when
onAIResponseStarted()fires beforeonNewUserMessage() - Make
exchangeCountreactive viaexchangeCountNotifier(ValueNotifier)
0.1.1 #
- Fix layout jump when AI response completes or follow-up content loads
0.1.0 #
- Initial release
BetterChatScrollViewwidget with generic message type supportChatScrollControllerfor managing scroll state during AI streaming- Exchange grouping: user message pins to top, AI response grows downward
- Automatic scroll-to-bottom button with customizable widget
- Stable viewport when user is scrolled up during streaming
- Keyboard-aware layout handling
- Separator builder support