diff --git a/lib/views/home/pages/d_home_page.dart b/lib/views/home/pages/d_home_page.dart index 880c229..8ec91f3 100644 --- a/lib/views/home/pages/d_home_page.dart +++ b/lib/views/home/pages/d_home_page.dart @@ -190,47 +190,44 @@ class DesktopHomePage extends StatelessWidget { } Widget _bottomListView(HomeViewModel homeViewModel) { - final controller = ScrollController(); - if (!homeViewModel.isRecommendedMode) { - // YourTenders - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getYourTenders(); - } - } - } else { - // Recommended - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getHomeRecommendTenders(); - } - } - } - return SizedBox( width: 740, height: 387.0, - child: ListView.builder( - controller: controller, - padding: EdgeInsets.only(bottom: 20), - itemCount: - homeViewModel.tenders.length + - (homeViewModel.isLoadingMore ? 1 : 0), - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - if (index < homeViewModel.tenders.length) { - return TendersListItem(tender: homeViewModel.tenders[index]); - } else { - return Center( - child: Padding( - padding: EdgeInsets.all(16.0), - child: CircularProgressIndicator(color: AppColors.secondary50), - ), - ); + child: NotificationListener( + onNotification: (ScrollNotification scrollInfo) { + if (scrollInfo.metrics.pixels >= + scrollInfo.metrics.maxScrollExtent - 200) { + if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { + if (!homeViewModel.isRecommendedMode) { + homeViewModel.getYourTenders(); + } else { + homeViewModel.getHomeRecommendTenders(); + } + } } + return false; }, + child: ListView.builder( + padding: EdgeInsets.only(bottom: 20), + itemCount: + homeViewModel.tenders.length + + (homeViewModel.isLoadingMore ? 1 : 0), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + if (index < homeViewModel.tenders.length) { + return TendersListItem(tender: homeViewModel.tenders[index]); + } else { + return Center( + child: Padding( + padding: EdgeInsets.all(16.0), + child: CircularProgressIndicator( + color: AppColors.secondary50, + ), + ), + ); + } + }, + ), ), ); } diff --git a/lib/views/home/pages/m_home_page.dart b/lib/views/home/pages/m_home_page.dart index 6755ab5..607e6fb 100644 --- a/lib/views/home/pages/m_home_page.dart +++ b/lib/views/home/pages/m_home_page.dart @@ -181,50 +181,47 @@ class MobileHomePage extends StatelessWidget { } Widget _bottomListView(HomeViewModel homeViewModel) { - final controller = ScrollController(); - - controller.addListener(() { - if (!homeViewModel.isRecommendedMode) { - // YourTenders - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getYourTenders(); - } - } - } else { - // Recommended - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getHomeRecommendTenders(); - } - } - } - }); - return Container( constraints: BoxConstraints(maxHeight: 387.0.h()), width: double.infinity, - child: ListView.builder( - controller: controller, - padding: EdgeInsets.symmetric(horizontal: 24.0.w(), vertical: 15.0.h()), - itemCount: - homeViewModel.tenders.length + - (homeViewModel.isLoadingMore ? 1 : 0), - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - if (index < homeViewModel.tenders.length) { - return TendersListItem(tender: homeViewModel.tenders[index]); - } else { - return Center( - child: Padding( - padding: EdgeInsets.all(16.0), - child: CircularProgressIndicator(color: AppColors.secondary50), - ), - ); + child: NotificationListener( + onNotification: (ScrollNotification scrollInfo) { + if (scrollInfo.metrics.pixels >= + scrollInfo.metrics.maxScrollExtent - 200) { + if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { + if (!homeViewModel.isRecommendedMode) { + homeViewModel.getYourTenders(); + } else { + homeViewModel.getHomeRecommendTenders(); + } + } } + return false; }, + child: ListView.builder( + padding: EdgeInsets.symmetric( + horizontal: 24.0.w(), + vertical: 15.0.h(), + ), + itemCount: + homeViewModel.tenders.length + + (homeViewModel.isLoadingMore ? 1 : 0), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + if (index < homeViewModel.tenders.length) { + return TendersListItem(tender: homeViewModel.tenders[index]); + } else { + return Center( + child: Padding( + padding: EdgeInsets.all(16.0), + child: CircularProgressIndicator( + color: AppColors.secondary50, + ), + ), + ); + } + }, + ), ), ); } diff --git a/lib/views/home/pages/t_home_page.dart b/lib/views/home/pages/t_home_page.dart index eacb216..704e6ee 100644 --- a/lib/views/home/pages/t_home_page.dart +++ b/lib/views/home/pages/t_home_page.dart @@ -208,46 +208,43 @@ class TabletHomePage extends StatelessWidget { } Widget _bottomListView(HomeViewModel homeViewModel) { - final controller = ScrollController(); - - if (!homeViewModel.isRecommendedMode) { - // YourTenders - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getYourTenders(); - } - } - } else { - // Recommended - if (controller.position.pixels >= - controller.position.maxScrollExtent - 200) { - if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { - homeViewModel.getHomeRecommendTenders(); - } - } - } - return SizedBox( width: double.infinity, height: 387.0.h(), - child: ListView.builder( - itemCount: - homeViewModel.tenders.length + - (homeViewModel.isLoadingMore ? 1 : 0), - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - if (index < homeViewModel.tenders.length) { - return TendersListItem(tender: homeViewModel.tenders[index]); - } else { - return Center( - child: Padding( - padding: EdgeInsets.all(16.0), - child: CircularProgressIndicator(color: AppColors.secondary50), - ), - ); + child: NotificationListener( + onNotification: (ScrollNotification scrollInfo) { + if (scrollInfo.metrics.pixels >= + scrollInfo.metrics.maxScrollExtent - 200) { + if (!homeViewModel.isLoadingMore && homeViewModel.hasMore) { + if (!homeViewModel.isRecommendedMode) { + homeViewModel.getYourTenders(); + } else { + homeViewModel.getHomeRecommendTenders(); + } + } } + return false; }, + child: ListView.builder( + itemCount: + homeViewModel.tenders.length + + (homeViewModel.isLoadingMore ? 1 : 0), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + if (index < homeViewModel.tenders.length) { + return TendersListItem(tender: homeViewModel.tenders[index]); + } else { + return Center( + child: Padding( + padding: EdgeInsets.all(16.0), + child: CircularProgressIndicator( + color: AppColors.secondary50, + ), + ), + ); + } + }, + ), ), ); }