some changes navigation in web and response changes

This commit is contained in:
amirrezaghabeli
2025-08-26 12:22:42 +03:30
parent 1b94f704cb
commit f964186a87
24 changed files with 553 additions and 398 deletions
+56 -25
View File
@@ -1,8 +1,11 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/view_models/tenders_view_model.dart';
import 'package:tm_app/views/shared/desktop_navigation_widget.dart';
import 'package:tm_app/views/tenders/widgets/main_tenders_slider.dart';
class DesktopTendersPage extends StatefulWidget {
@@ -51,34 +54,62 @@ class _DesktopTendersPageState extends State<DesktopTendersPage> {
return SafeArea(
child: Scaffold(
backgroundColor: AppColors.backgroundColor,
body: Center(
child: SingleChildScrollView(
child: Consumer<TendersViewModel>(
builder: (context, viewModel, child) {
if (viewModel.isLoading) {
return Center(
child: CircularProgressIndicator(
color: AppColors.jellyBean,
),
);
body: Column(
children: [
DesktopNavigationWidget(
currentIndex: 1, // Tenders index
onTabChanged: (index) {
// Navigate to different screens based on index
switch (index) {
case 0:
// Navigate to home
Router.neglect(context, () => context.go('/home'));
context.read<HomeViewModel>().init();
break;
case 1:
// Already on tenders
break;
case 2:
// Navigate to profile
// context.go('/profile');
Router.neglect(context, () => context.go('/profile'));
break;
}
if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!));
}
return SizedBox(
width: 740,
height: 800,
child: Padding(
padding: EdgeInsets.symmetric(vertical: 24.0.h()),
child: MainTendersSlider(
tenders: viewModel.tendersResponse?.data?.tenders ?? [],
isDesktop: true,
),
),
);
},
),
),
Expanded(
child: Center(
child: SingleChildScrollView(
child: Consumer<TendersViewModel>(
builder: (context, viewModel, child) {
if (viewModel.isLoading) {
return Center(
child: CircularProgressIndicator(
color: AppColors.jellyBean,
),
);
}
if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!));
}
return SizedBox(
width: 740,
height: 800,
child: Padding(
padding: EdgeInsets.symmetric(vertical: 24.0.h()),
child: MainTendersSlider(
tenders:
viewModel.tendersResponse?.data?.tenders ?? [],
isDesktop: true,
),
),
);
},
),
),
),
),
],
),
),
);
@@ -104,7 +104,7 @@ class TenderActionButtonsRow extends StatelessWidget {
if (tender.id == null) return const SizedBox.shrink();
final approval = viewModel.getTenderApprovalForTender(tender.id!);
final isApproved = approval?.status == 'approved';
final isApproved = approval?.status == 'submitted';
return Tooltip(
message: AppStrings.submit,
@@ -115,7 +115,7 @@ class TenderActionButtonsRow extends StatelessWidget {
viewModel.toggleApprovals(
tenderId: tender.id!,
submissionMode: approval?.submissionMode ?? 'self-apply',
status: 'approved',
status: 'submitted',
);
} else {
showModalBottomSheet(
@@ -127,7 +127,7 @@ class TenderActionButtonsRow extends StatelessWidget {
viewModel.toggleApprovals(
tenderId: tender.id!,
submissionMode: value,
status: 'approved',
status: 'submitted',
);
},
);