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:
@@ -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,
|
||||||
|
|||||||
@@ -16,56 +16,62 @@ class DesktopHomePage extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Consumer<HomeViewModel>(
|
body: Column(
|
||||||
builder: (context, homeViewModel, child) {
|
children: [
|
||||||
if (homeViewModel.isLoading) {
|
DesktopNavigationWidget(
|
||||||
return const Center(
|
currentIndex: 0, // Home index
|
||||||
child: CircularProgressIndicator(color: AppColors.secondary50),
|
),
|
||||||
);
|
Expanded(
|
||||||
}
|
child: Consumer<HomeViewModel>(
|
||||||
|
builder: (context, homeViewModel, child) {
|
||||||
if (homeViewModel.errorMessage != null) {
|
if (homeViewModel.isLoading) {
|
||||||
return Center(child: Text(homeViewModel.errorMessage!));
|
return const Center(
|
||||||
}
|
child: CircularProgressIndicator(
|
||||||
|
color: AppColors.secondary50,
|
||||||
if (homeViewModel.tenderApprovalsStateResponse != null &&
|
|
||||||
homeViewModel.data != null &&
|
|
||||||
homeViewModel.feedbackStats != null) {
|
|
||||||
return SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
DesktopNavigationWidget(
|
|
||||||
currentIndex: 0, // Home index
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 780,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
SizedBox(height: 55),
|
|
||||||
// SizedBox(width: 780, child: NotificationCard()),
|
|
||||||
SizedBox(height: 40.0),
|
|
||||||
_progressBarsRow(homeViewModel),
|
|
||||||
SizedBox(height: 32.0.h()),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 15.0.w()),
|
|
||||||
child: _firstTenderCardsRow(context, homeViewModel),
|
|
||||||
),
|
|
||||||
SizedBox(height: 32.0.h()),
|
|
||||||
_yourTenderText(homeViewModel),
|
|
||||||
SizedBox(height: 8.0.h()),
|
|
||||||
_bottomListView(homeViewModel),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (homeViewModel.errorMessage != null) {
|
||||||
|
return Center(child: Text(homeViewModel.errorMessage!));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (homeViewModel.tenderApprovalsStateResponse != null &&
|
||||||
|
homeViewModel.data != null &&
|
||||||
|
homeViewModel.feedbackStats != null) {
|
||||||
|
return SingleChildScrollView(
|
||||||
|
child: SizedBox(
|
||||||
|
width: 780,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
SizedBox(height: 55),
|
||||||
|
// SizedBox(width: 780, child: NotificationCard()),
|
||||||
|
SizedBox(height: 40.0),
|
||||||
|
_progressBarsRow(homeViewModel),
|
||||||
|
SizedBox(height: 32.0.h()),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 15.0.w()),
|
||||||
|
child: _firstTenderCardsRow(context, homeViewModel),
|
||||||
|
),
|
||||||
|
SizedBox(height: 32.0.h()),
|
||||||
|
_yourTenderText(homeViewModel),
|
||||||
|
SizedBox(height: 8.0.h()),
|
||||||
|
_bottomListView(homeViewModel),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const Center(
|
||||||
|
child: CircularProgressIndicator(
|
||||||
|
color: AppColors.secondary50,
|
||||||
),
|
),
|
||||||
],
|
);
|
||||||
),
|
},
|
||||||
);
|
),
|
||||||
}
|
),
|
||||||
return const Center(
|
],
|
||||||
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,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -44,41 +44,48 @@ 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(
|
||||||
child: Consumer<TendersViewModel>(
|
children: [
|
||||||
builder: (context, viewModel, child) {
|
DesktopNavigationWidget(
|
||||||
if (viewModel.isLoading) {
|
currentIndex: 1, // Tenders index
|
||||||
return Center(
|
),
|
||||||
child: CircularProgressIndicator(color: AppColors.jellyBean),
|
Expanded(
|
||||||
);
|
child: Consumer<TendersViewModel>(
|
||||||
}
|
builder: (context, viewModel, child) {
|
||||||
if (viewModel.errorMessage != null) {
|
if (viewModel.isLoading) {
|
||||||
return Center(child: Text(viewModel.errorMessage!));
|
return Expanded(
|
||||||
}
|
child: Center(
|
||||||
if (viewModel.tendersResponse?.data?.tenders == null ||
|
child: CircularProgressIndicator(
|
||||||
viewModel.tendersResponse!.data!.tenders!.isEmpty) {
|
color: AppColors.jellyBean,
|
||||||
return Center(child: Text(CommonStrings.noData));
|
),
|
||||||
}
|
),
|
||||||
return Column(
|
);
|
||||||
children: [
|
}
|
||||||
DesktopNavigationWidget(
|
if (viewModel.errorMessage != null) {
|
||||||
currentIndex: 1, // Tenders index
|
return Center(child: Text(viewModel.errorMessage!));
|
||||||
),
|
}
|
||||||
SizedBox(
|
if ((viewModel.tendersResponse?.data?.tenders == null ||
|
||||||
width: 740,
|
viewModel.tendersResponse!.data!.tenders!.isEmpty) &&
|
||||||
height: 800,
|
viewModel.isLoading == false) {
|
||||||
child: Padding(
|
return Center(child: Text(CommonStrings.noData));
|
||||||
padding: EdgeInsets.symmetric(vertical: 24.0.h()),
|
}
|
||||||
child: MainTendersSlider(
|
return SingleChildScrollView(
|
||||||
tenders: viewModel.tendersResponse?.data?.tenders ?? [],
|
child: SizedBox(
|
||||||
isDesktop: true,
|
width: 740,
|
||||||
|
height: 800,
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 24.0.h()),
|
||||||
|
child: MainTendersSlider(
|
||||||
|
tenders: viewModel.tendersResponse?.data?.tenders ?? [],
|
||||||
|
isDesktop: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
],
|
},
|
||||||
);
|
),
|
||||||
},
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user