This commit is contained in:
@@ -200,7 +200,9 @@ class TendersRouteData extends GoRouteData with _$TendersRouteData {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, GoRouterState state) {
|
Widget build(BuildContext context, GoRouterState state) {
|
||||||
return tendersProvider(child: const TendersScreen());
|
return tendersProvider(
|
||||||
|
child: TendersScreen(initialTab: state.uri.queryParameters['tab']),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tm_app/core/constants/assets.dart';
|
import 'package:tm_app/core/constants/assets.dart';
|
||||||
import 'package:tm_app/core/routes/app_routes.dart';
|
import 'package:tm_app/core/routes/app_routes.dart';
|
||||||
@@ -67,7 +68,7 @@ class DesktopHomePage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
_yourTenderText(homeViewModel),
|
_yourTenderText(context, homeViewModel),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_bottomListView(homeViewModel),
|
_bottomListView(homeViewModel),
|
||||||
],
|
],
|
||||||
@@ -195,21 +196,28 @@ class DesktopHomePage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _yourTenderText(HomeViewModel homeViewModel) {
|
Widget _yourTenderText(BuildContext context, HomeViewModel homeViewModel) {
|
||||||
final isYourTenders =
|
final isYourTenders =
|
||||||
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
||||||
return ConstrainedBox(
|
return ConstrainedBox(
|
||||||
constraints: const BoxConstraints(maxWidth: 740),
|
constraints: const BoxConstraints(maxWidth: 740),
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: AlignmentDirectional.centerStart,
|
alignment: AlignmentDirectional.centerStart,
|
||||||
child: Text(
|
child: GestureDetector(
|
||||||
isYourTenders
|
behavior: HitTestBehavior.opaque,
|
||||||
? HomeStrings.yourTenders
|
onTap:
|
||||||
: HomeStrings.recommendedTenders,
|
isYourTenders
|
||||||
style: TextStyle(
|
? null
|
||||||
fontSize: 18.0.sp(),
|
: () => context.go('/tenders?tab=recommended'),
|
||||||
fontWeight: FontWeight.w700,
|
child: Text(
|
||||||
color: AppColors.grey80,
|
isYourTenders
|
||||||
|
? HomeStrings.yourTenders
|
||||||
|
: HomeStrings.recommendedTenders,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0.sp(),
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
color: AppColors.grey80,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tm_app/core/constants/assets.dart';
|
import 'package:tm_app/core/constants/assets.dart';
|
||||||
import 'package:tm_app/core/routes/app_routes.dart';
|
import 'package:tm_app/core/routes/app_routes.dart';
|
||||||
@@ -50,7 +51,7 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_secondTenderCardsRow(homeViewModel, context),
|
_secondTenderCardsRow(homeViewModel, context),
|
||||||
SizedBox(height: 40.0.h()),
|
SizedBox(height: 40.0.h()),
|
||||||
_yourTenderText(homeViewModel),
|
_yourTenderText(context, homeViewModel),
|
||||||
_bottomListView(homeViewModel),
|
_bottomListView(homeViewModel),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -169,19 +170,24 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _yourTenderText(HomeViewModel homeViewModel) {
|
Widget _yourTenderText(BuildContext context, HomeViewModel homeViewModel) {
|
||||||
final isYourTenders =
|
final isYourTenders =
|
||||||
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
||||||
child: Text(
|
child: GestureDetector(
|
||||||
isYourTenders
|
behavior: HitTestBehavior.opaque,
|
||||||
? HomeStrings.yourTenders
|
onTap:
|
||||||
: HomeStrings.recommendedTenders,
|
isYourTenders ? null : () => context.go('/tenders?tab=recommended'),
|
||||||
style: TextStyle(
|
child: Text(
|
||||||
fontSize: 18.0.sp(),
|
isYourTenders
|
||||||
fontWeight: FontWeight.w700,
|
? HomeStrings.yourTenders
|
||||||
color: AppColors.grey80,
|
: HomeStrings.recommendedTenders,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0.sp(),
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
color: AppColors.grey80,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tm_app/core/routes/app_routes.dart';
|
import 'package:tm_app/core/routes/app_routes.dart';
|
||||||
import 'package:tm_app/core/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
@@ -65,7 +66,7 @@ class TabletHomePage extends StatelessWidget {
|
|||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_secondTenderCardsRow(homeViewModel, context),
|
_secondTenderCardsRow(homeViewModel, context),
|
||||||
SizedBox(height: 32.0.h()),
|
SizedBox(height: 32.0.h()),
|
||||||
_yourTenderText(homeViewModel),
|
_yourTenderText(context, homeViewModel),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_bottomListView(homeViewModel),
|
_bottomListView(homeViewModel),
|
||||||
],
|
],
|
||||||
@@ -201,15 +202,22 @@ class TabletHomePage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _yourTenderText(HomeViewModel homeViewModel) {
|
Widget _yourTenderText(BuildContext context, HomeViewModel homeViewModel) {
|
||||||
final isYourTenders =
|
final isYourTenders =
|
||||||
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
(homeViewModel.data?.data?.tenders?.isNotEmpty ?? false);
|
||||||
return Text(
|
return GestureDetector(
|
||||||
isYourTenders ? HomeStrings.yourTenders : HomeStrings.recommendedTenders,
|
behavior: HitTestBehavior.opaque,
|
||||||
style: TextStyle(
|
onTap:
|
||||||
fontSize: 18.0.sp(),
|
isYourTenders ? null : () => context.go('/tenders?tab=recommended'),
|
||||||
fontWeight: FontWeight.w700,
|
child: Text(
|
||||||
color: AppColors.grey80,
|
isYourTenders
|
||||||
|
? HomeStrings.yourTenders
|
||||||
|
: HomeStrings.recommendedTenders,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0.sp(),
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
color: AppColors.grey80,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ import '../../../core/utils/app_toast.dart';
|
|||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
|
|
||||||
class DesktopTendersPage extends StatefulWidget {
|
class DesktopTendersPage extends StatefulWidget {
|
||||||
const DesktopTendersPage({super.key});
|
const DesktopTendersPage({required this.initialSelectedTab, super.key});
|
||||||
|
|
||||||
|
final int initialSelectedTab;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<DesktopTendersPage> createState() => _DesktopTendersPageState();
|
State<DesktopTendersPage> createState() => _DesktopTendersPageState();
|
||||||
@@ -36,10 +38,19 @@ class _DesktopTendersPageState extends State<DesktopTendersPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
viewModel = context.read<TendersViewModel>();
|
viewModel = context.read<TendersViewModel>();
|
||||||
viewModel.addListener(_viewModelListener);
|
viewModel.addListener(_viewModelListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(covariant DesktopTendersPage oldWidget) {
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
if (oldWidget.initialSelectedTab != widget.initialSelectedTab) {
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.feedbackErrorMessage != null) {
|
if (viewModel.feedbackErrorMessage != null) {
|
||||||
AppToast.error(context, viewModel.feedbackErrorMessage!);
|
AppToast.error(context, viewModel.feedbackErrorMessage!);
|
||||||
@@ -276,4 +287,3 @@ class _ActionButtons extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ import '../widgets/recommended_tenders_view.dart';
|
|||||||
import '../widgets/tenders_tab_bar.dart';
|
import '../widgets/tenders_tab_bar.dart';
|
||||||
|
|
||||||
class MobileTendersPage extends StatefulWidget {
|
class MobileTendersPage extends StatefulWidget {
|
||||||
const MobileTendersPage({super.key});
|
const MobileTendersPage({required this.initialSelectedTab, super.key});
|
||||||
|
|
||||||
|
final int initialSelectedTab;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<MobileTendersPage> createState() => _MobileTendersPageState();
|
State<MobileTendersPage> createState() => _MobileTendersPageState();
|
||||||
@@ -28,10 +30,19 @@ class _MobileTendersPageState extends State<MobileTendersPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
viewModel = context.read<TendersViewModel>();
|
viewModel = context.read<TendersViewModel>();
|
||||||
viewModel.addListener(_viewModelListener);
|
viewModel.addListener(_viewModelListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(covariant MobileTendersPage oldWidget) {
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
if (oldWidget.initialSelectedTab != widget.initialSelectedTab) {
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.feedbackErrorMessage != null) {
|
if (viewModel.feedbackErrorMessage != null) {
|
||||||
AppToast.error(context, viewModel.feedbackErrorMessage!);
|
AppToast.error(context, viewModel.feedbackErrorMessage!);
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ import '../widgets/recommended_tenders_view.dart';
|
|||||||
import '../widgets/tenders_tab_bar.dart';
|
import '../widgets/tenders_tab_bar.dart';
|
||||||
|
|
||||||
class TabletTendersPage extends StatefulWidget {
|
class TabletTendersPage extends StatefulWidget {
|
||||||
const TabletTendersPage({super.key});
|
const TabletTendersPage({required this.initialSelectedTab, super.key});
|
||||||
|
|
||||||
|
final int initialSelectedTab;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<TabletTendersPage> createState() => _TabletTendersPageState();
|
State<TabletTendersPage> createState() => _TabletTendersPageState();
|
||||||
@@ -28,9 +30,18 @@ class _TabletTendersPageState extends State<TabletTendersPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
viewModel = context.read<TendersViewModel>();
|
viewModel = context.read<TendersViewModel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(covariant TabletTendersPage oldWidget) {
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
if (oldWidget.initialSelectedTab != widget.initialSelectedTab) {
|
||||||
|
_selectedTab = widget.initialSelectedTab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final GlobalKey<ScaffoldState> key = GlobalKey();
|
final GlobalKey<ScaffoldState> key = GlobalKey();
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import 'm_tenders_page.dart';
|
|||||||
import 't_tenders_page.dart';
|
import 't_tenders_page.dart';
|
||||||
|
|
||||||
class TendersScreen extends StatefulWidget {
|
class TendersScreen extends StatefulWidget {
|
||||||
const TendersScreen({super.key});
|
const TendersScreen({this.initialTab, super.key});
|
||||||
|
|
||||||
|
final String? initialTab;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<TendersScreen> createState() => _TendersScreenState();
|
State<TendersScreen> createState() => _TendersScreenState();
|
||||||
@@ -48,10 +50,11 @@ class _TendersScreenState extends State<TendersScreen> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SizeConfig.init(context);
|
SizeConfig.init(context);
|
||||||
return const ResponsiveBuilder(
|
final initialSelectedTab = widget.initialTab == 'recommended' ? 1 : 0;
|
||||||
mobile: MobileTendersPage(),
|
return ResponsiveBuilder(
|
||||||
tablet: TabletTendersPage(),
|
mobile: MobileTendersPage(initialSelectedTab: initialSelectedTab),
|
||||||
desktop: DesktopTendersPage(),
|
tablet: TabletTendersPage(initialSelectedTab: initialSelectedTab),
|
||||||
|
desktop: DesktopTendersPage(initialSelectedTab: initialSelectedTab),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user