strings check
This commit is contained in:
@@ -3,11 +3,8 @@ class CommonStrings {
|
|||||||
|
|
||||||
// Truly shared strings across multiple features
|
// Truly shared strings across multiple features
|
||||||
static const String noData = 'No data';
|
static const String noData = 'No data';
|
||||||
|
static const String selectSubmission = 'Select Submission';
|
||||||
|
static const String selfApply = 'Self-apply';
|
||||||
|
static const String partnership = 'Partnership';
|
||||||
static const String confirm = 'Confirm';
|
static const String confirm = 'Confirm';
|
||||||
static const String submit = 'Submit';
|
|
||||||
static const String cancel = 'Cancel';
|
|
||||||
static const String loading = 'Loading...';
|
|
||||||
static const String error = 'Error';
|
|
||||||
static const String success = 'Success';
|
|
||||||
static const String retry = 'Retry';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:tm_app/views/shared/base_button.dart';
|
|||||||
import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart';
|
import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart';
|
||||||
|
|
||||||
import '../../../core/constants/tender_approval_status.dart';
|
import '../../../core/constants/tender_approval_status.dart';
|
||||||
|
import '../../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../../data/services/model/tender_data/tender_data.dart';
|
import '../../../data/services/model/tender_data/tender_data.dart';
|
||||||
import '../../shared/select_submission_dialog.dart';
|
import '../../shared/select_submission_dialog.dart';
|
||||||
import '../strings/tender_details_strings.dart';
|
import '../strings/tender_details_strings.dart';
|
||||||
@@ -52,7 +53,8 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
TenderApprovalStatus.submitted.value) {
|
TenderApprovalStatus.submitted.value) {
|
||||||
viewModel.submitTenderApproval(
|
viewModel.submitTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode:
|
||||||
|
TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
@@ -97,7 +99,7 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
viewModel.rejectTenderApproval(
|
viewModel.rejectTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -133,7 +135,7 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
viewModel.rejectTenderApproval(
|
viewModel.rejectTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
width: 120.0.w(),
|
width: 120.0.w(),
|
||||||
@@ -162,7 +164,7 @@ class TenderDetailActions extends StatelessWidget {
|
|||||||
TenderApprovalStatus.submitted.value) {
|
TenderApprovalStatus.submitted.value) {
|
||||||
viewModel.submitTenderApproval(
|
viewModel.submitTenderApproval(
|
||||||
tenderId: detail.id!,
|
tenderId: detail.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
(MediaQuery.sizeOf(context).width > 600)
|
(MediaQuery.sizeOf(context).width > 600)
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
children: [
|
children: [
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Text(
|
Text(
|
||||||
'Page',
|
LikedTendersStrings.page,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 13.0.sp(),
|
fontSize: 13.0.sp(),
|
||||||
fontWeight: FontWeight.w300,
|
fontWeight: FontWeight.w300,
|
||||||
@@ -165,7 +165,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: const Text('Select Page'),
|
title: const Text(
|
||||||
|
LikedTendersStrings.selectPage,
|
||||||
|
),
|
||||||
content: SizedBox(
|
content: SizedBox(
|
||||||
width: 200,
|
width: 200,
|
||||||
height: 300,
|
height: 300,
|
||||||
@@ -174,7 +176,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final pageNumber = index + 1;
|
final pageNumber = index + 1;
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text('Page $pageNumber'),
|
title: Text(
|
||||||
|
'${LikedTendersStrings.page} $pageNumber',
|
||||||
|
),
|
||||||
onTap:
|
onTap:
|
||||||
() => Navigator.pop(
|
() => Navigator.pop(
|
||||||
context,
|
context,
|
||||||
@@ -223,7 +227,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
|
|
||||||
SizedBox(width: 5.0.w()),
|
SizedBox(width: 5.0.w()),
|
||||||
Text(
|
Text(
|
||||||
'Of',
|
LikedTendersStrings.of,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.0.sp(),
|
fontSize: 14.0.sp(),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
children: [
|
children: [
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Text(
|
Text(
|
||||||
'Page',
|
LikedTendersStrings.page,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 13.0.sp(),
|
fontSize: 13.0.sp(),
|
||||||
fontWeight: FontWeight.w300,
|
fontWeight: FontWeight.w300,
|
||||||
@@ -175,7 +175,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: const Text('Select Page'),
|
title: const Text(
|
||||||
|
LikedTendersStrings.selectPage,
|
||||||
|
),
|
||||||
content: SizedBox(
|
content: SizedBox(
|
||||||
width: 200,
|
width: 200,
|
||||||
height: 300,
|
height: 300,
|
||||||
@@ -184,7 +186,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final pageNumber = index + 1;
|
final pageNumber = index + 1;
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text('Page $pageNumber'),
|
title: Text(
|
||||||
|
'${LikedTendersStrings.page} $pageNumber',
|
||||||
|
),
|
||||||
onTap:
|
onTap:
|
||||||
() => Navigator.pop(
|
() => Navigator.pop(
|
||||||
context,
|
context,
|
||||||
@@ -233,7 +237,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
|
|
||||||
SizedBox(width: 5.0.w()),
|
SizedBox(width: 5.0.w()),
|
||||||
Text(
|
Text(
|
||||||
'Of',
|
LikedTendersStrings.of,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.0.sp(),
|
fontSize: 14.0.sp(),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
|
|||||||
@@ -12,5 +12,8 @@ class LikedTendersStrings {
|
|||||||
static const startDate = 'YYYY/MM/DD';
|
static const startDate = 'YYYY/MM/DD';
|
||||||
static const endDate = 'YYYY/MM/DD';
|
static const endDate = 'YYYY/MM/DD';
|
||||||
static const approvedTenders = 'Approved tenders';
|
static const approvedTenders = 'Approved tenders';
|
||||||
static const noLikedTenders = 'You haven’t liked any tenders yet.';
|
static const noLikedTenders = 'You haven’t liked any tenders yet!';
|
||||||
|
static const page = 'Page';
|
||||||
|
static const selectPage = 'Select Page';
|
||||||
|
static const of = 'Of';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
|
|||||||
import 'package:tm_app/view_models/liked_tenders_view_model.dart';
|
import 'package:tm_app/view_models/liked_tenders_view_model.dart';
|
||||||
import 'package:tm_app/views/home/strings/home_strings.dart';
|
import 'package:tm_app/views/home/strings/home_strings.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart';
|
import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart';
|
||||||
import '../../shared/select_submission_bottom_sheet.dart';
|
import '../../shared/select_submission_bottom_sheet.dart';
|
||||||
import '../../shared/select_submission_dialog.dart';
|
import '../../shared/select_submission_dialog.dart';
|
||||||
@@ -178,7 +179,7 @@ class LikedListItem extends StatelessWidget {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
viewModel.rejectTenderApproval(
|
viewModel.rejectTenderApproval(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
@@ -211,7 +212,7 @@ class LikedListItem extends StatelessWidget {
|
|||||||
if (viewModel.isTenderSubmitted(tender.id!)) {
|
if (viewModel.isTenderSubmitted(tender.id!)) {
|
||||||
viewModel.submitTenderApproval(
|
viewModel.submitTenderApproval(
|
||||||
tenderId: tender.id!,
|
tenderId: tender.id!,
|
||||||
submissionMode: 'self-apply',
|
submissionMode: TenderSubmissionMode.selfApply.value,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
(kIsWeb && MediaQuery.sizeOf(context).width > 600)
|
(kIsWeb && MediaQuery.sizeOf(context).width > 600)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tm_app/core/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
|
|
||||||
import '../../../core/constants/assets.dart';
|
import '../../../core/constants/assets.dart';
|
||||||
|
import '../../../core/routes/app_routes.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
import '../../../core/utils/size_config.dart';
|
import '../../../core/utils/size_config.dart';
|
||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
@@ -31,7 +31,7 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.loggedInUser != null) {
|
if (viewModel.loggedInUser != null) {
|
||||||
Router.neglect(context, () => context.go('/home'));
|
Router.neglect(context, () => HomeRouteData().go(context));
|
||||||
} else if (viewModel.errorMessage != null) {
|
} else if (viewModel.errorMessage != null) {
|
||||||
AppToast.error(context, viewModel.errorMessage!);
|
AppToast.error(context, viewModel.errorMessage!);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tm_app/core/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
|
|
||||||
import '../../../core/constants/assets.dart';
|
import '../../../core/constants/assets.dart';
|
||||||
|
import '../../../core/routes/app_routes.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
import '../../../core/utils/size_config.dart';
|
import '../../../core/utils/size_config.dart';
|
||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
@@ -29,7 +29,7 @@ class _LoginMobilePageState extends State<LoginMobilePage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.loggedInUser != null) {
|
if (viewModel.loggedInUser != null) {
|
||||||
Router.neglect(context, () => context.go('/home'));
|
Router.neglect(context, () => HomeRouteData().go(context));
|
||||||
}
|
}
|
||||||
if (viewModel.errorMessage != null) {
|
if (viewModel.errorMessage != null) {
|
||||||
AppToast.error(context, viewModel.errorMessage!);
|
AppToast.error(context, viewModel.errorMessage!);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
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/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
|
|
||||||
import '../../../core/constants/assets.dart';
|
import '../../../core/constants/assets.dart';
|
||||||
|
import '../../../core/routes/app_routes.dart';
|
||||||
import '../../../core/utils/app_toast.dart';
|
import '../../../core/utils/app_toast.dart';
|
||||||
import '../../../core/utils/size_config.dart';
|
import '../../../core/utils/size_config.dart';
|
||||||
import '../../../view_models/auth_view_model.dart';
|
import '../../../view_models/auth_view_model.dart';
|
||||||
@@ -29,7 +29,7 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
|
|||||||
|
|
||||||
void _viewModelListener() {
|
void _viewModelListener() {
|
||||||
if (viewModel.loggedInUser != null) {
|
if (viewModel.loggedInUser != null) {
|
||||||
Router.neglect(context, () => context.go('/home'));
|
Router.neglect(context, () => HomeRouteData().go(context));
|
||||||
}
|
}
|
||||||
if (viewModel.errorMessage != null) {
|
if (viewModel.errorMessage != null) {
|
||||||
AppToast.error(context, viewModel.errorMessage!);
|
AppToast.error(context, viewModel.errorMessage!);
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_svg/svg.dart';
|
|
||||||
import 'package:tm_app/core/constants/assets.dart';
|
|
||||||
|
|
||||||
import '../../core/utils/size_config.dart';
|
|
||||||
|
|
||||||
class TenderBottomNavigation extends StatefulWidget {
|
|
||||||
const TenderBottomNavigation({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<TenderBottomNavigation> createState() => _TenderBottomNavigationState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _TenderBottomNavigationState extends State<TenderBottomNavigation> {
|
|
||||||
int activeTab = 0;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Container(
|
|
||||||
height: 72.0.h(),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFE3E3E3),
|
|
||||||
border: Border.fromBorderSide(BorderSide(color: Color(0xFFE3E3E3))),
|
|
||||||
),
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
_bottomNavigationItem(
|
|
||||||
text: 'Home',
|
|
||||||
isActive: activeTab == 0,
|
|
||||||
onTap: () {
|
|
||||||
setState(() {
|
|
||||||
activeTab = 0;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
iconPath: 'assets/icons/home.svg',
|
|
||||||
activeIconPath: AssetsManager.homeActive,
|
|
||||||
),
|
|
||||||
_bottomNavigationItem(
|
|
||||||
text: 'Tenders',
|
|
||||||
isActive: activeTab == 1,
|
|
||||||
onTap: () {
|
|
||||||
setState(() {
|
|
||||||
activeTab = 1;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
iconPath: 'assets/icons/task_square.svg',
|
|
||||||
activeIconPath: 'assets/icons/task-square_active.svg',
|
|
||||||
),
|
|
||||||
_bottomNavigationItem(
|
|
||||||
text: 'Profile',
|
|
||||||
isActive: activeTab == 2,
|
|
||||||
onTap: () {
|
|
||||||
setState(() {
|
|
||||||
activeTab = 2;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
iconPath: 'assets/icons/profile-circle.svg',
|
|
||||||
activeIconPath: 'assets/icons/profile-circle_active.svg',
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _bottomNavigationItem({
|
|
||||||
required String text,
|
|
||||||
required bool isActive,
|
|
||||||
required VoidCallback onTap,
|
|
||||||
required String iconPath,
|
|
||||||
required String activeIconPath,
|
|
||||||
}) {
|
|
||||||
return InkWell(
|
|
||||||
onTap: onTap,
|
|
||||||
child: SizedBox(
|
|
||||||
width: 64.0.w(),
|
|
||||||
height: 72.0.h(),
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.only(top: 12.0.h(), bottom: 14.0.h()),
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
SvgPicture.asset(isActive ? activeIconPath : iconPath),
|
|
||||||
Text(
|
|
||||||
text,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 12.0.sp(),
|
|
||||||
fontWeight: FontWeight.w400,
|
|
||||||
color: isActive ? Color(0xFF0164FF) : Color(0xFF777777),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
|
|
||||||
|
import '../../core/constants/common_strings.dart';
|
||||||
import '../../core/constants/tender_submision_mode.dart';
|
import '../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../core/theme/colors.dart';
|
import '../../core/theme/colors.dart';
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ class _SelectSubmissionBottomSheetState
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'Select Submission',
|
CommonStrings.selectSubmission,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20.0.sp(),
|
fontSize: 20.0.sp(),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
@@ -46,7 +47,7 @@ class _SelectSubmissionBottomSheetState
|
|||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'self-apply',
|
title: CommonStrings.selfApply,
|
||||||
isSelected: type == TenderSubmissionMode.selfApply.value,
|
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 0;
|
selectedType = 0;
|
||||||
@@ -56,7 +57,7 @@ class _SelectSubmissionBottomSheetState
|
|||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'Partnership',
|
title: CommonStrings.partnership,
|
||||||
isSelected: type == TenderSubmissionMode.partnership.value,
|
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 1;
|
selectedType = 1;
|
||||||
@@ -79,7 +80,7 @@ class _SelectSubmissionBottomSheetState
|
|||||||
),
|
),
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text(
|
child: Text(
|
||||||
'Confirm',
|
CommonStrings.confirm,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.0.sp(),
|
fontSize: 14.0.sp(),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
|
|
||||||
|
import '../../core/constants/common_strings.dart';
|
||||||
import '../../core/constants/tender_submision_mode.dart';
|
import '../../core/constants/tender_submision_mode.dart';
|
||||||
import '../../core/theme/colors.dart';
|
import '../../core/theme/colors.dart';
|
||||||
|
|
||||||
@@ -34,7 +35,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'Select Submission',
|
CommonStrings.selectSubmission,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20.0.sp(),
|
fontSize: 20.0.sp(),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
@@ -43,7 +44,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
|||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'Self-apply',
|
title: CommonStrings.selfApply,
|
||||||
isSelected: type == TenderSubmissionMode.selfApply.value,
|
isSelected: type == TenderSubmissionMode.selfApply.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 0;
|
selectedType = 0;
|
||||||
@@ -53,7 +54,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
|||||||
),
|
),
|
||||||
SizedBox(height: 8.0.h()),
|
SizedBox(height: 8.0.h()),
|
||||||
_submissionType(
|
_submissionType(
|
||||||
title: 'Partnership',
|
title: CommonStrings.partnership,
|
||||||
isSelected: type == TenderSubmissionMode.partnership.value,
|
isSelected: type == TenderSubmissionMode.partnership.value,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
selectedType = 1;
|
selectedType = 1;
|
||||||
@@ -78,7 +79,7 @@ class _SelectSubmissionDialogState extends State<SelectSubmissionDialog> {
|
|||||||
),
|
),
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text(
|
child: Text(
|
||||||
'Confirm',
|
CommonStrings.confirm,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14.0.sp(),
|
fontSize: 14.0.sp(),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
|||||||
@@ -15,4 +15,7 @@ class YourTendersStrings {
|
|||||||
static const approvedTenders = 'Approved tenders';
|
static const approvedTenders = 'Approved tenders';
|
||||||
static const noTenders = 'No data available';
|
static const noTenders = 'No data available';
|
||||||
static const selectPublicationRangeDate = 'Select publication date range';
|
static const selectPublicationRangeDate = 'Select publication date range';
|
||||||
|
static const noLikedTenders = 'You haven’t liked any tenders yet !';
|
||||||
|
static const noDislikedTenders = 'You haven’t disliked any tenders yet !';
|
||||||
|
static const noTendersSubmitted = 'You haven’t submitted any tenders yet !';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ import 'package:tm_app/core/theme/colors.dart';
|
|||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
|
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
|
||||||
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||||
|
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
|
||||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||||
|
|
||||||
|
import '../../../core/constants/tender_feedback.dart';
|
||||||
|
|
||||||
class LikedDislikedTendersList extends StatefulWidget {
|
class LikedDislikedTendersList extends StatefulWidget {
|
||||||
final LikedTendersResponse data;
|
final LikedTendersResponse data;
|
||||||
final String status;
|
final String status;
|
||||||
@@ -54,7 +57,9 @@ class _LikedDislikedTendersListState extends State<LikedDislikedTendersList> {
|
|||||||
if (data.data?.feedback == null || data.data!.feedback!.isEmpty) {
|
if (data.data?.feedback == null || data.data!.feedback!.isEmpty) {
|
||||||
return Center(
|
return Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
'No ${widget.status} found',
|
widget.status == TenderFeedback.liked.value
|
||||||
|
? YourTendersStrings.noLikedTenders
|
||||||
|
: YourTendersStrings.noDislikedTenders,
|
||||||
style: TextStyle(fontSize: 16.0.sp(), color: AppColors.grey70),
|
style: TextStyle(fontSize: 16.0.sp(), color: AppColors.grey70),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:tm_app/core/theme/colors.dart';
|
import 'package:tm_app/core/theme/colors.dart';
|
||||||
import 'package:tm_app/core/utils/size_config.dart';
|
import 'package:tm_app/core/utils/size_config.dart';
|
||||||
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||||
|
import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart';
|
||||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||||
|
|
||||||
import '../../../data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
import '../../../data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||||
@@ -55,12 +56,16 @@ class _TendersSubmittedState extends State<TendersSubmitted> {
|
|||||||
return Consumer<YourTendersViewModel>(
|
return Consumer<YourTendersViewModel>(
|
||||||
builder: (context, viewModel, child) {
|
builder: (context, viewModel, child) {
|
||||||
if (widget.approvedTenders.data == null) {
|
if (widget.approvedTenders.data == null) {
|
||||||
return const Center(child: Text('No submitted projects yet.'));
|
return const Center(
|
||||||
|
child: Text(YourTendersStrings.noTendersSubmitted),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final tenders = widget.approvedTenders.data!.tenders ?? [];
|
final tenders = widget.approvedTenders.data!.tenders ?? [];
|
||||||
if (tenders.isEmpty) {
|
if (tenders.isEmpty) {
|
||||||
return const Center(child: Text('No submitted projects yet.'));
|
return const Center(
|
||||||
|
child: Text(YourTendersStrings.noTendersSubmitted),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final itemCount =
|
final itemCount =
|
||||||
|
|||||||
Reference in New Issue
Block a user