setScrollController method
Sets the scroll controller for auto-scrolling
Implementation
void setScrollController(ScrollController controller) {
// Remove the old listener if it exists
if (_scrollController != null && _scrollListener != null) {
_scrollController!.removeListener(_scrollListener!);
}
_scrollController = controller;
// Create and add new listener to detect manual scrolling
_scrollListener = () {
if (_scrollController?.hasClients == true) {
// If user is dragging or a manual scroll action is happening
if (_scrollController!.position.isScrollingNotifier.value) {
_isManuallyScrolling = true;
_lastManualScrollTime = DateTime.now();
// debugPrint('USER SCROLL: Manual scrolling detected');
} else if (_isManuallyScrolling) {
// Reset after a short delay to allow animations to complete
Future.delayed(const Duration(milliseconds: 300), () {
if (DateTime.now().difference(_lastManualScrollTime).inMilliseconds >= 300) {
_isManuallyScrolling = false;
// debugPrint('USER SCROLL: Manual scrolling ended');
}
});
}
}
};
_scrollController?.addListener(_scrollListener!);
}