diff --git a/assets/icons/clock.svg b/assets/icons/clock.svg
new file mode 100644
index 0000000..e095156
--- /dev/null
+++ b/assets/icons/clock.svg
@@ -0,0 +1,4 @@
+
diff --git a/lib/core/constants/assets.dart b/lib/core/constants/assets.dart
index f0fb605..ddcb9f8 100644
--- a/lib/core/constants/assets.dart
+++ b/lib/core/constants/assets.dart
@@ -81,4 +81,5 @@ class AssetsManager {
static const arrowDown = 'assets/icons/arrow-down.svg';
static const arrowUp = 'assets/icons/arrow-up.svg';
static const uploadFile = 'assets/icons/upload_file.svg';
+ static const clock = 'assets/icons/clock.svg';
}
diff --git a/lib/core/routes/app_routes.dart b/lib/core/routes/app_routes.dart
index 334439c..b129eea 100644
--- a/lib/core/routes/app_routes.dart
+++ b/lib/core/routes/app_routes.dart
@@ -58,9 +58,17 @@ final GoRouter appRouter = GoRouter(
path.startsWith('/forgot-password') ||
location.startsWith('/forgot-password');
final isPublic = isSplash || isLogin || isForgotFlow;
+
+ // If user has token and tries to access login page, redirect to home
+ if (hasToken && isLogin) {
+ return '/home';
+ }
+
+ // If user doesn't have token and tries to access protected routes, redirect to splash
if (!hasToken && !isPublic) {
return '/splash';
}
+
return null;
},
);
diff --git a/lib/views/detail/strings/tender_details_strings.dart b/lib/views/detail/strings/tender_details_strings.dart
index 61b36c8..5a32bd6 100644
--- a/lib/views/detail/strings/tender_details_strings.dart
+++ b/lib/views/detail/strings/tender_details_strings.dart
@@ -39,4 +39,7 @@ class TenderDetailsStrings {
'Last day to prepare proposal is ';
static const String meetingTimeSuccessfullySet =
'meeting time successfully set';
+ static const String requestSuccessfullyRegistered =
+ 'Your request has been successfully registered.';
+ static const String confirmAndClose = 'Confirm and close';
}
diff --git a/lib/views/detail/widgets/meeting_time_bottom_sheet.dart b/lib/views/detail/widgets/meeting_time_bottom_sheet.dart
index 953f8b6..a175a14 100644
--- a/lib/views/detail/widgets/meeting_time_bottom_sheet.dart
+++ b/lib/views/detail/widgets/meeting_time_bottom_sheet.dart
@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:tm_app/core/utils/size_config.dart';
-import '../../../core/routes/app_routes.dart';
import '../../../core/theme/colors.dart';
import '../strings/tender_details_strings.dart';
+import 'meeting_time_successful_registered_bottom_sheet.dart';
class MeetingTimeBottomSheet extends StatefulWidget {
const MeetingTimeBottomSheet({required this.onConfirm, super.key});
@@ -41,13 +41,38 @@ class _MeetingTimeBottomSheetState extends State {
),
child: Column(
children: [
- Text(
- TenderDetailsStrings.meetingTime,
- style: TextStyle(
- fontSize: 20.0.sp(),
- fontWeight: FontWeight.w600,
- color: AppColors.grey70,
- ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(color: AppColors.grey60, width: 2.0),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
),
SizedBox(height: 15.0.h()),
ListView.builder(
@@ -75,9 +100,14 @@ class _MeetingTimeBottomSheetState extends State {
SizedBox(height: 8.0.h()),
InkWell(
onTap: () {
- widget.onConfirm(type);
+ // widget.onConfirm(type);
context.pop();
- const CompletionOfDocumentsRouteData().push(context);
+ showModalBottomSheet(
+ context: context,
+ builder: (context) {
+ return const MeetingTimeSuccessfulRegisteredBottomSheet();
+ },
+ );
},
child: Container(
width: double.infinity,
diff --git a/lib/views/detail/widgets/meeting_time_dialog.dart b/lib/views/detail/widgets/meeting_time_dialog.dart
index 3db5a6a..480ffa3 100644
--- a/lib/views/detail/widgets/meeting_time_dialog.dart
+++ b/lib/views/detail/widgets/meeting_time_dialog.dart
@@ -1,12 +1,11 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
-import 'package:provider/provider.dart';
-import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
-import 'package:tm_app/view_models/auth_view_model.dart';
import 'package:tm_app/views/detail/strings/tender_details_strings.dart';
+import 'meeting_time_successful_registered_dialog.dart';
+
class MeetingTimeDialog extends StatefulWidget {
const MeetingTimeDialog({required this.onConfirm, super.key});
final ValueChanged onConfirm;
@@ -29,7 +28,6 @@ class _MeetingTimeDialogState extends State {
@override
Widget build(BuildContext context) {
- final userRole = context.watch().userRole;
return Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
@@ -40,7 +38,7 @@ class _MeetingTimeDialogState extends State {
child: Wrap(
children: [
Container(
- // width: double.infinity,
+ width: 560.0,
padding: EdgeInsets.fromLTRB(
24.0.w(),
24.0.h(),
@@ -54,15 +52,45 @@ class _MeetingTimeDialogState extends State {
),
child: Column(
children: [
- Text(
- TenderDetailsStrings.meetingTime,
- style: TextStyle(
- fontSize: 20.0.sp(),
- fontWeight: FontWeight.w600,
- color: AppColors.grey70,
- ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: AppColors.grey60,
+ width: 2.0,
+ ),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
),
- SizedBox(height: 15.0.h()),
+ SizedBox(height: 16.0.h()),
+ Divider(color: AppColors.grey20),
+ SizedBox(height: 8.0.h()),
ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
@@ -86,32 +114,37 @@ class _MeetingTimeDialogState extends State {
),
SizedBox(height: 8.0.h()),
SizedBox(height: 8.0.h()),
- Material(
- color: Colors.transparent,
- child: InkWell(
- onTap: () {
- widget.onConfirm(type);
- context.pop();
- userRole == Role.admin
- ? const CompletionOfDocumentsRouteData().push(context)
- : const FinalCompletionOfDocumentsRouteData().push(
- context,
- );
- },
- child: Container(
- width: double.infinity,
- height: 56.0.h(),
- decoration: BoxDecoration(
- color: AppColors.primary20,
- borderRadius: BorderRadius.circular(100),
- ),
- alignment: Alignment.center,
- child: Text(
- TenderDetailsStrings.apply,
- style: TextStyle(
- fontSize: 14.0.sp(),
- fontWeight: FontWeight.w500,
- color: AppColors.mainBlue,
+ Align(
+ alignment: Alignment.centerRight,
+ child: Material(
+ color: Colors.transparent,
+ child: InkWell(
+ borderRadius: BorderRadius.circular(100),
+ onTap: () {
+ // widget.onConfirm(type);
+ context.pop();
+ showDialog(
+ context: context,
+ builder: (context) {
+ return const MeetingTimeSuccessfulRegisteredDialog();
+ },
+ );
+ },
+ child: Container(
+ width: 150,
+ height: 56.0.h(),
+ decoration: BoxDecoration(
+ color: AppColors.primary20,
+ borderRadius: BorderRadius.circular(100),
+ ),
+ alignment: Alignment.center,
+ child: Text(
+ TenderDetailsStrings.apply,
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w500,
+ color: AppColors.mainBlue,
+ ),
),
),
),
diff --git a/lib/views/detail/widgets/meeting_time_successful_registered_bottom_sheet.dart b/lib/views/detail/widgets/meeting_time_successful_registered_bottom_sheet.dart
new file mode 100644
index 0000000..d7281ea
--- /dev/null
+++ b/lib/views/detail/widgets/meeting_time_successful_registered_bottom_sheet.dart
@@ -0,0 +1,190 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/svg.dart';
+import 'package:go_router/go_router.dart';
+import 'package:tm_app/core/constants/assets.dart';
+import 'package:tm_app/core/routes/app_routes.dart';
+import 'package:tm_app/core/theme/colors.dart';
+import 'package:tm_app/core/utils/size_config.dart';
+import 'package:tm_app/views/login/widgets/widgets.dart';
+
+import '../../../core/utils/app_toast.dart';
+import '../strings/tender_details_strings.dart';
+
+class MeetingTimeSuccessfulRegisteredBottomSheet extends StatelessWidget {
+ const MeetingTimeSuccessfulRegisteredBottomSheet({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Wrap(
+ children: [
+ Container(
+ width: double.infinity,
+ padding: EdgeInsets.symmetric(
+ horizontal: 24.0.w(),
+ vertical: 24.0.h(),
+ ),
+ decoration: BoxDecoration(
+ color: AppColors.backgroundColor,
+ borderRadius: const BorderRadius.only(
+ topLeft: Radius.circular(16.0),
+ topRight: Radius.circular(16.0),
+ ),
+ ),
+ alignment: Alignment.center,
+ child: Column(
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(color: AppColors.grey60, width: 2.0),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
+ ),
+ SizedBox(height: 16.0.h()),
+ Divider(color: AppColors.grey20),
+ SizedBox(height: 24.0.h()),
+ Container(
+ width: 64.0.w(),
+ height: 64.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ color: AppColors.green30,
+ ),
+ alignment: Alignment.center,
+ child: Icon(Icons.check, color: AppColors.white, size: 32.0),
+ ),
+ SizedBox(height: 40.0.h()),
+ Text(
+ TenderDetailsStrings.requestSuccessfullyRegistered,
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 22.0.sp(),
+ fontWeight: FontWeight.w500,
+ color: AppColors.grey80,
+ ),
+ ),
+ SizedBox(height: 40.0.h()),
+ Container(
+ width: double.infinity,
+ height: 66.0.h(),
+ decoration: BoxDecoration(
+ color: AppColors.green0,
+ borderRadius: BorderRadius.circular(4),
+ border: Border.all(color: AppColors.green10),
+ ),
+ alignment: Alignment.center,
+ child: Row(
+ children: [
+ SizedBox(width: 16.0.w()),
+ Container(
+ width: 32.0.w(),
+ height: 32.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: AppColors.green30,
+ width: 2.0.w(),
+ ),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.check,
+ color: AppColors.green30,
+ size: 16.0,
+ ),
+ ),
+ SizedBox(width: 12.0.w()),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w500,
+ color: AppColors.grey80,
+ ),
+ ),
+ SizedBox(height: 8.0.h()),
+ Row(
+ children: [
+ SvgPicture.asset(AssetsManager.clock),
+ SizedBox(width: 4.0.w()),
+ Text(
+ 'Sat 2025-06-14',
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w400,
+ color: AppColors.grey60,
+ ),
+ ),
+ SizedBox(width: 12.0.w()),
+ SvgPicture.asset(AssetsManager.calendar),
+ SizedBox(width: 4.0.w()),
+ Text(
+ '12:00',
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w400,
+ color: AppColors.grey60,
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ SizedBox(height: 24.0.h()),
+
+ BaseButton(
+ isEnabled: true,
+ width: double.infinity,
+ height: 56.0.h(),
+ onPressed: () {
+ AppToast.success(
+ context,
+ TenderDetailsStrings.meetingTimeSuccessfullySet,
+ );
+ const CompletionOfDocumentsRouteData().push(context);
+ },
+ textColor: AppColors.primaryColor,
+ backgroundColor: AppColors.primary20,
+ text: TenderDetailsStrings.confirmAndClose,
+ ),
+ SizedBox(height: 24.0.h()),
+ ],
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/views/detail/widgets/meeting_time_successful_registered_dialog.dart b/lib/views/detail/widgets/meeting_time_successful_registered_dialog.dart
new file mode 100644
index 0000000..e5d5e08
--- /dev/null
+++ b/lib/views/detail/widgets/meeting_time_successful_registered_dialog.dart
@@ -0,0 +1,205 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/svg.dart';
+import 'package:go_router/go_router.dart';
+import 'package:provider/provider.dart';
+import 'package:tm_app/core/utils/size_config.dart';
+
+import '../../../core/constants/assets.dart';
+import '../../../core/routes/app_routes.dart';
+import '../../../core/theme/colors.dart';
+import '../../../core/utils/app_toast.dart';
+import '../../../view_models/auth_view_model.dart';
+import '../../shared/base_button.dart';
+import '../strings/tender_details_strings.dart';
+
+class MeetingTimeSuccessfulRegisteredDialog extends StatelessWidget {
+ const MeetingTimeSuccessfulRegisteredDialog({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ final userRole = context.watch().userRole;
+ return Dialog(
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(16),
+ side: BorderSide.none,
+ ),
+ insetPadding: const EdgeInsets.symmetric(horizontal: 150),
+ child: Wrap(
+ children: [
+ Container(
+ width: 550,
+ padding: EdgeInsets.symmetric(
+ horizontal: 24.0.w(),
+ vertical: 24.0.h(),
+ ),
+ decoration: BoxDecoration(
+ color: AppColors.backgroundColor,
+ borderRadius: BorderRadius.circular(16),
+ ),
+ alignment: Alignment.center,
+ child: Column(
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: AppColors.grey60,
+ width: 2.0,
+ ),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
+ ),
+ SizedBox(height: 16.0.h()),
+ Divider(color: AppColors.grey20),
+ SizedBox(height: 24.0.h()),
+ Container(
+ width: 64.0.w(),
+ height: 64.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ color: AppColors.green30,
+ ),
+ alignment: Alignment.center,
+ child: Icon(Icons.check, color: AppColors.white, size: 32.0),
+ ),
+ SizedBox(height: 40.0.h()),
+ Text(
+ TenderDetailsStrings.requestSuccessfullyRegistered,
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 22.0.sp(),
+ fontWeight: FontWeight.w500,
+ color: AppColors.grey80,
+ ),
+ ),
+ SizedBox(height: 40.0.h()),
+ Container(
+ width: double.infinity,
+ height: 66.0.h(),
+ decoration: BoxDecoration(
+ color: AppColors.green0,
+ borderRadius: BorderRadius.circular(4),
+ border: Border.all(color: AppColors.green10),
+ ),
+ alignment: Alignment.center,
+ child: Row(
+ children: [
+ SizedBox(width: 16.0.w()),
+ Container(
+ width: 32.0.w(),
+ height: 32.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: AppColors.green30,
+ width: 2.0.w(),
+ ),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.check,
+ color: AppColors.green30,
+ size: 16.0,
+ ),
+ ),
+ SizedBox(width: 12.0.w()),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ TenderDetailsStrings.meetingTime,
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w500,
+ color: AppColors.grey80,
+ ),
+ ),
+ SizedBox(height: 8.0.h()),
+ Row(
+ children: [
+ SvgPicture.asset(AssetsManager.clock),
+ SizedBox(width: 4.0.w()),
+ Text(
+ 'Sat 2025-06-14',
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w400,
+ color: AppColors.grey60,
+ ),
+ ),
+ SizedBox(width: 12.0.w()),
+ SvgPicture.asset(AssetsManager.calendar),
+ SizedBox(width: 4.0.w()),
+ Text(
+ '12:00',
+ style: TextStyle(
+ fontSize: 14.0.sp(),
+ fontWeight: FontWeight.w400,
+ color: AppColors.grey60,
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ SizedBox(height: 24.0.h()),
+
+ BaseButton(
+ isEnabled: true,
+ width: double.infinity,
+ height: 56.0.h(),
+ onPressed: () {
+ context.pop();
+ AppToast.success(
+ context,
+ TenderDetailsStrings.meetingTimeSuccessfullySet,
+ );
+ userRole == Role.admin
+ ? const CompletionOfDocumentsRouteData().push(context)
+ : const FinalCompletionOfDocumentsRouteData().push(
+ context,
+ );
+ },
+ textColor: AppColors.primaryColor,
+ backgroundColor: AppColors.primary20,
+ text: TenderDetailsStrings.confirmAndClose,
+ ),
+ SizedBox(height: 24.0.h()),
+ ],
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/views/detail/widgets/tender_detail_action.dart b/lib/views/detail/widgets/tender_detail_action.dart
index 515c707..e2a8e08 100644
--- a/lib/views/detail/widgets/tender_detail_action.dart
+++ b/lib/views/detail/widgets/tender_detail_action.dart
@@ -88,11 +88,11 @@ class _TenderDetailActionsState extends State {
builder: (_) {
return MeetingTimeBottomSheet(
onConfirm: (value) {
- AppToast.success(
- context,
- TenderDetailsStrings
- .meetingTimeSuccessfullySet,
- );
+ // AppToast.success(
+ // context,
+ // TenderDetailsStrings
+ // .meetingTimeSuccessfullySet,
+ // );
},
);
},
@@ -225,13 +225,7 @@ class _TenderDetailActionsState extends State {
context: context,
builder: (context) {
return MeetingTimeDialog(
- onConfirm: (value) {
- AppToast.success(
- context,
- TenderDetailsStrings
- .meetingTimeSuccessfullySet,
- );
- },
+ onConfirm: (value) {},
);
},
);
diff --git a/lib/views/shared/select_submission_bottom_sheet.dart b/lib/views/shared/select_submission_bottom_sheet.dart
index c2562cb..59dc5db 100644
--- a/lib/views/shared/select_submission_bottom_sheet.dart
+++ b/lib/views/shared/select_submission_bottom_sheet.dart
@@ -27,7 +27,7 @@ class _SelectSubmissionBottomSheetState
Container(
width: double.infinity,
// height: 272.0.h(),
- padding: EdgeInsets.fromLTRB(24.0.w(), 12.0.h(), 24.0.w(), 33.0.h()),
+ padding: EdgeInsets.fromLTRB(24.0.w(), 24.0.h(), 24.0.w(), 33.0.h()),
decoration: BoxDecoration(
color: AppColors.backgroundColor,
borderRadius: const BorderRadius.only(
@@ -37,23 +37,41 @@ class _SelectSubmissionBottomSheetState
),
child: Column(
children: [
- Align(
- alignment: AlignmentDirectional.centerStart,
- child: IconButton(
- onPressed: () {
- context.pop();
- },
- icon: const Icon(Icons.close),
- ),
- ),
- Text(
- CommonStrings.selectSubmission,
- style: TextStyle(
- fontSize: 20.0.sp(),
- fontWeight: FontWeight.w600,
- color: AppColors.grey70,
- ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ CommonStrings.selectSubmission,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(color: AppColors.grey60, width: 2.0),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
),
+ SizedBox(height: 16.0.h()),
+ Divider(color: AppColors.grey20),
SizedBox(height: 8.0.h()),
_submissionType(
title: CommonStrings.selfApply,
diff --git a/lib/views/shared/select_submission_dialog.dart b/lib/views/shared/select_submission_dialog.dart
index 08593ba..7c92e23 100644
--- a/lib/views/shared/select_submission_dialog.dart
+++ b/lib/views/shared/select_submission_dialog.dart
@@ -33,15 +33,43 @@ class _SelectSubmissionDialogState extends State {
borderRadius: BorderRadius.circular(16),
),
child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
- CommonStrings.selectSubmission,
- style: TextStyle(
- fontSize: 20.0.sp(),
- fontWeight: FontWeight.w600,
- color: AppColors.grey70,
- ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ CommonStrings.selectSubmission,
+ style: TextStyle(
+ fontSize: 20.0.sp(),
+ fontWeight: FontWeight.w600,
+ color: AppColors.grey70,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ context.pop();
+ },
+ splashColor: Colors.transparent,
+ child: Container(
+ width: 24.0.w(),
+ height: 24.0.w(),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(color: AppColors.grey60, width: 2.0),
+ ),
+ alignment: Alignment.center,
+ child: Icon(
+ Icons.close,
+ color: AppColors.grey60,
+ size: 16.0,
+ ),
+ ),
+ ),
+ ],
),
+ SizedBox(height: 16.0.h()),
+ Divider(color: AppColors.grey20),
SizedBox(height: 8.0.h()),
_submissionType(
title: CommonStrings.selfApply,
@@ -68,59 +96,6 @@ class _SelectSubmissionDialogState extends State {
child: Row(
children: [
const Spacer(),
- // InkWell(
- // onTap: () {
- // context.pop();
- // },
- // child: Container(
- // width: 150,
- // height: 56.0,
- // decoration: BoxDecoration(
- // color: AppColors.red10,
- // borderRadius: BorderRadius.circular(100),
- // ),
- // alignment: Alignment.center,
- // child: Text(
- // CommonStrings.cancel,
- // style: TextStyle(
- // fontSize: 14.0.sp(),
- // fontWeight: FontWeight.w500,
- // color: AppColors.red20,
- // ),
- // ),
- // ),
- // ),
- InkWell(
- highlightColor: Colors.transparent,
- splashColor: Colors.transparent,
- onTap: () {
- context.pop();
- },
- child: Container(
- width: 150,
- height: 56.0,
- decoration: BoxDecoration(
- color: Colors.transparent,
- borderRadius: BorderRadius.circular(100),
- border: Border.all(
- color: AppColors.errorColor,
- width: 2.0,
- ),
- ),
- alignment: Alignment.center,
- child: Text(
- CommonStrings.cancel,
- style: TextStyle(
- fontSize: 14.0.sp(),
- fontWeight: FontWeight.w500,
- color: AppColors.errorColor,
- ),
- ),
- ),
- ),
-
- SizedBox(width: 10.0.w()),
-
InkWell(
onTap: () {
widget.onConfirm(type);