@@ -7,23 +7,51 @@ import '../../gen/assets.gen.dart';
77
88const _imageOpacity = 0.6 ;
99
10- class HomePagesWidget extends StatelessWidget {
10+ class HomePagesWidget extends StatefulWidget {
1111 final List <SurveyModel > surveys;
1212 final ValueNotifier <int > currentPage;
13- final PageController _pageController = PageController ();
1413 final VoidCallback onNextButtonPressed;
14+ final bool isRefreshing;
15+ final VoidCallback onLoadMore;
1516
16- HomePagesWidget ({
17+ const HomePagesWidget ({
1718 Key ? key,
1819 required this .surveys,
1920 required this .currentPage,
2021 required this .onNextButtonPressed,
22+ required this .onLoadMore,
23+ required this .isRefreshing,
2124 }) : super (key: key);
2225
26+ @override
27+ State <HomePagesWidget > createState () => _HomePagesWidgetState ();
28+ }
29+
30+ class _HomePagesWidgetState extends State <HomePagesWidget > {
31+ final PageController _pageController = PageController (initialPage: 0 );
32+
33+ @override
34+ void dispose () {
35+ _pageController.dispose ();
36+ super .dispose ();
37+ }
38+
39+ void _handlePageChanged (int index) {
40+ widget.currentPage.value = index;
41+
42+ if (index == widget.surveys.length - 1 ) {
43+ widget.onLoadMore ();
44+ }
45+ }
46+
2347 @override
2448 Widget build (BuildContext context) {
49+ if (widget.isRefreshing && widget.surveys.isNotEmpty) {
50+ _pageController.jumpToPage (0 );
51+ }
52+
2553 return PageView .builder (
26- itemCount: surveys.length,
54+ itemCount: widget. surveys.length,
2755 controller: _pageController,
2856 itemBuilder: (_, int index) {
2957 return Container (
@@ -34,7 +62,7 @@ class HomePagesWidget extends StatelessWidget {
3462 opacity: _imageOpacity,
3563 child: FadeInImage .assetNetwork (
3664 placeholder: Assets .images.placeholder.path,
37- image: surveys[index].coverImageUrl,
65+ image: widget. surveys[index].coverImageUrl,
3866 fit: BoxFit .cover,
3967 width: double .infinity,
4068 height: double .infinity,
@@ -51,8 +79,8 @@ class HomePagesWidget extends StatelessWidget {
5179 right: 0 ,
5280 ),
5381 child: HomeFooterWidget (
54- survey: surveys[index],
55- onNextButtonPressed: onNextButtonPressed,
82+ survey: widget. surveys[index],
83+ onNextButtonPressed: widget. onNextButtonPressed,
5684 ),
5785 ),
5886 ),
@@ -62,9 +90,7 @@ class HomePagesWidget extends StatelessWidget {
6290 ),
6391 );
6492 },
65- onPageChanged: (int index) {
66- currentPage.value = index;
67- },
93+ onPageChanged: _handlePageChanged,
6894 );
6995 }
7096}
0 commit comments