Merge pull request 'fix home and tenders scrolling and no data problem in tenders' (#118) from tenders_fix into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/118
This commit is contained in:
a.ghabeli
2025-09-11 12:12:07 +03:30
5 changed files with 105 additions and 87 deletions
+3 -2
View File
@@ -94,11 +94,12 @@ class TendersViewModel with ChangeNotifier {
} }
Future<void> getTenders() async { Future<void> getTenders() async {
clearAll(); // Clear all data before fetching new tenders
_isLoading = true; _isLoading = true;
notifyListeners();
clearAll(); // Clear all data before fetching new tenders
_currentOffset = 0; _currentOffset = 0;
_hasMoreData = true; _hasMoreData = true;
notifyListeners();
final result = await _tendersRepository.getTenders( final result = await _tendersRepository.getTenders(
limit: _pageSize, limit: _pageSize,
+19 -11
View File
@@ -16,11 +16,19 @@ class DesktopHomePage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Consumer<HomeViewModel>( body: Column(
children: [
DesktopNavigationWidget(
currentIndex: 0, // Home index
),
Expanded(
child: Consumer<HomeViewModel>(
builder: (context, homeViewModel, child) { builder: (context, homeViewModel, child) {
if (homeViewModel.isLoading) { if (homeViewModel.isLoading) {
return const Center( return const Center(
child: CircularProgressIndicator(color: AppColors.secondary50), child: CircularProgressIndicator(
color: AppColors.secondary50,
),
); );
} }
@@ -32,12 +40,7 @@ class DesktopHomePage extends StatelessWidget {
homeViewModel.data != null && homeViewModel.data != null &&
homeViewModel.feedbackStats != null) { homeViewModel.feedbackStats != null) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: SizedBox(
children: [
DesktopNavigationWidget(
currentIndex: 0, // Home index
),
SizedBox(
width: 780, width: 780,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@@ -58,15 +61,18 @@ class DesktopHomePage extends StatelessWidget {
], ],
), ),
), ),
],
),
); );
} }
return const Center( return const Center(
child: CircularProgressIndicator(color: AppColors.secondary50), child: CircularProgressIndicator(
color: AppColors.secondary50,
),
); );
}, },
), ),
),
],
),
); );
} }
@@ -81,6 +87,7 @@ class DesktopHomePage extends StatelessWidget {
amount: homeViewModel.partnershipPercent.toString(), amount: homeViewModel.partnershipPercent.toString(),
circularProgressIndicatorWidth: 176, circularProgressIndicatorWidth: 176,
circularProgressIndicatorHeight: 176, circularProgressIndicatorHeight: 176,
strokeWidth: 9,
), ),
SizedBox(width: 106), SizedBox(width: 106),
ProgressBarColumn( ProgressBarColumn(
@@ -89,6 +96,7 @@ class DesktopHomePage extends StatelessWidget {
amount: homeViewModel.selfApplyPercent.toString(), amount: homeViewModel.selfApplyPercent.toString(),
circularProgressIndicatorWidth: 176, circularProgressIndicatorWidth: 176,
circularProgressIndicatorHeight: 176, circularProgressIndicatorHeight: 176,
strokeWidth: 9,
), ),
], ],
); );
+19 -12
View File
@@ -44,27 +44,33 @@ class _DesktopTendersPageState extends State<DesktopTendersPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: AppColors.backgroundColor, backgroundColor: AppColors.backgroundColor,
body: SingleChildScrollView( body: Column(
children: [
DesktopNavigationWidget(
currentIndex: 1, // Tenders index
),
Expanded(
child: Consumer<TendersViewModel>( child: Consumer<TendersViewModel>(
builder: (context, viewModel, child) { builder: (context, viewModel, child) {
if (viewModel.isLoading) { if (viewModel.isLoading) {
return Center( return Expanded(
child: CircularProgressIndicator(color: AppColors.jellyBean), child: Center(
child: CircularProgressIndicator(
color: AppColors.jellyBean,
),
),
); );
} }
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!)); return Center(child: Text(viewModel.errorMessage!));
} }
if (viewModel.tendersResponse?.data?.tenders == null || if ((viewModel.tendersResponse?.data?.tenders == null ||
viewModel.tendersResponse!.data!.tenders!.isEmpty) { viewModel.tendersResponse!.data!.tenders!.isEmpty) &&
viewModel.isLoading == false) {
return Center(child: Text(CommonStrings.noData)); return Center(child: Text(CommonStrings.noData));
} }
return Column( return SingleChildScrollView(
children: [ child: SizedBox(
DesktopNavigationWidget(
currentIndex: 1, // Tenders index
),
SizedBox(
width: 740, width: 740,
height: 800, height: 800,
child: Padding( child: Padding(
@@ -75,11 +81,12 @@ class _DesktopTendersPageState extends State<DesktopTendersPage> {
), ),
), ),
), ),
],
); );
}, },
), ),
), ),
],
),
); );
} }
} }
+3 -2
View File
@@ -57,8 +57,9 @@ class _MobileTendersPageState extends State<MobileTendersPage> {
return Center(child: Text(viewModel.errorMessage!)); return Center(child: Text(viewModel.errorMessage!));
} }
if (viewModel.tendersResponse?.data?.tenders == null || if ((viewModel.tendersResponse?.data?.tenders == null ||
viewModel.tendersResponse!.data!.tenders!.isEmpty) { viewModel.tendersResponse!.data!.tenders!.isEmpty) &&
viewModel.isLoading == false) {
return Center(child: Text(CommonStrings.noData)); return Center(child: Text(CommonStrings.noData));
} }
+3 -2
View File
@@ -45,8 +45,9 @@ class _TabletTendersPageState extends State<TabletTendersPage> {
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!)); return Center(child: Text(viewModel.errorMessage!));
} }
if (viewModel.tendersResponse?.data?.tenders == null || if ((viewModel.tendersResponse?.data?.tenders == null ||
viewModel.tendersResponse!.data!.tenders!.isEmpty) { viewModel.tendersResponse!.data!.tenders!.isEmpty) &&
viewModel.isLoading == false) {
return Center(child: Text(CommonStrings.noData)); return Center(child: Text(CommonStrings.noData));
} }
return Padding( return Padding(