@@ -31,7 +31,6 @@ class AutoScrollNotifier extends AutoDisposeNotifier<AutoScrollState> {
31
31
scrollController = controller;
32
32
}
33
33
34
-
35
34
Future <void > jumpToCurrentPage (int currentPage, double pageHeight) async {
36
35
if (scrollController.hasClients) {
37
36
final offset = (currentPage - 1 ) * pageHeight;
@@ -47,8 +46,7 @@ class AutoScrollNotifier extends AutoDisposeNotifier<AutoScrollState> {
47
46
}
48
47
}
49
48
50
-
51
- Future <void > startAutoScroll (int currentPage, double pageHeight) async {
49
+ Future <void > startAutoScroll (int currentPage, double pageHeight) async {
52
50
// Cancel any existing timers
53
51
_autoScrollTimer? .cancel ();
54
52
_hideTimer? .cancel ();
@@ -69,15 +67,14 @@ Future<void> startAutoScroll(int currentPage, double pageHeight) async {
69
67
// Robust wait for scroll controller
70
68
for (int i = 0 ; i < 50 ; i++ ) {
71
69
// 5 seconds total wait time
72
- if (scrollController.hasClients &&
73
- scrollController.position.hasContentDimensions) {
74
- _initializeScrollController (currentPage, pageHeight);
75
- break ;
70
+ if (scrollController.hasClients && scrollController.position.hasContentDimensions) {
71
+ _initializeScrollController (currentPage, pageHeight);
72
+ break ;
76
73
}
77
- await Future .delayed (Duration (milliseconds: 100 ));
78
- }
74
+ await Future .delayed (Duration (milliseconds: 100 ));
75
+ }
79
76
}),
80
-
77
+
81
78
// Additional delay to ensure view is fully rendered
82
79
Future .delayed (Duration (milliseconds: 500 ))
83
80
]);
@@ -91,7 +88,6 @@ Future<void> startAutoScroll(int currentPage, double pageHeight) async {
91
88
// Start scrolling with a slight delay
92
89
await Future .delayed (Duration (milliseconds: 100 ));
93
90
_startScrolling ();
94
-
95
91
} catch (e, stackTrace) {
96
92
print ('Auto-scroll initialization error: $e ' );
97
93
print ('Stacktrace: $stackTrace ' );
@@ -102,14 +98,15 @@ Future<void> startAutoScroll(int currentPage, double pageHeight) async {
102
98
isPlaying: false ,
103
99
);
104
100
}
105
- }
101
+ }
102
+
106
103
void _initializeScrollController (int currentPage, double pageHeight) {
107
104
final pageOffset = (currentPage - 1 ) * pageHeight;
108
105
// Set initial offset to correct position, account for rotation if necessary
109
106
scrollController.jumpTo (pageOffset);
110
107
}
111
108
112
- void _startScrolling () {
109
+ void _startScrolling () {
113
110
// Cancel any existing timer to prevent multiple timers
114
111
_autoScrollTimer? .cancel ();
115
112
@@ -141,20 +138,18 @@ void _startScrolling() {
141
138
}
142
139
143
140
// Comprehensive client check
144
- if (scrollController.hasClients &&
145
- scrollController.position.hasContentDimensions) {
141
+ if (scrollController.hasClients && scrollController.position.hasContentDimensions) {
146
142
try {
147
- final maxScroll = scrollController.position.maxScrollExtent;
148
- final currentScroll = scrollController.offset;
149
- final delta = state.autoScrollSpeed;
143
+ final maxScroll = scrollController.position.maxScrollExtent;
144
+ final currentScroll = scrollController.offset;
145
+ final delta = state.autoScrollSpeed;
150
146
151
147
// Detailed logging for debugging
152
- print (
153
- 'Max Scroll: $maxScroll , Current Scroll: $currentScroll , Delta: $delta ' );
148
+ print ('Max Scroll: $maxScroll , Current Scroll: $currentScroll , Delta: $delta ' );
154
149
155
- if (currentScroll >= maxScroll) {
150
+ if (currentScroll >= maxScroll) {
156
151
print ('Reached max scroll. Stopping auto-scroll.' );
157
- stopAutoScroll ();
152
+ stopAutoScroll ();
158
153
timer.cancel ();
159
154
return ;
160
155
}
@@ -165,7 +160,7 @@ void _startScrolling() {
165
160
// Page calculation
166
161
final pageHeight = scrollController.position.viewportDimension;
167
162
final newPage = _calculateCurrentPage (scrollController, pageHeight);
168
-
163
+
169
164
if (newPage != state.currentPage) {
170
165
state = state.copyWith (currentPage: newPage);
171
166
}
@@ -178,8 +173,7 @@ void _startScrolling() {
178
173
} else {
179
174
print ('ScrollController does not have clients or content dimensions' );
180
175
print ('HasClients: ${scrollController .hasClients }' );
181
- print (
182
- 'HasContentDimensions: ${scrollController .position .hasContentDimensions }' );
176
+ print ('HasContentDimensions: ${scrollController .position .hasContentDimensions }' );
183
177
}
184
178
});
185
179
}
0 commit comments