UI changes added
This commit is contained in:
parent
ec156e49dc
commit
53f1e10721
@ -15,8 +15,8 @@
|
|||||||
"agree": "أوافق على الشروط والأحكام وسياسة الخصوصية للمركز الإتحادي للتنافسية والإحصاء",
|
"agree": "أوافق على الشروط والأحكام وسياسة الخصوصية للمركز الإتحادي للتنافسية والإحصاء",
|
||||||
"t_and": "",
|
"t_and": "",
|
||||||
"conditions": "",
|
"conditions": "",
|
||||||
"terms_conditions": "",
|
"terms_conditions": "الشروط والأحكام",
|
||||||
"privacy_policy":"",
|
"privacy_policy":"سياسة الخصوصية",
|
||||||
"account_confirmation": "هل لديك حساب؟ سجل الدخول",
|
"account_confirmation": "هل لديك حساب؟ سجل الدخول",
|
||||||
"login_title": "تسجيل الدخول",
|
"login_title": "تسجيل الدخول",
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
"enter_your_email": "Enter your email",
|
"enter_your_email": "Enter your email",
|
||||||
"enter_your_password": "Enter your password",
|
"enter_your_password": "Enter your password",
|
||||||
"register_Confirm_password": "Confirm password",
|
"register_Confirm_password": "Confirm password",
|
||||||
"agree": "I agree to the",
|
"agree": "I agree to the ",
|
||||||
"t_and": " and ",
|
"t_and": " and ",
|
||||||
"conditions": " of FCSC",
|
"conditions": " of FCSC",
|
||||||
"terms_conditions": "Terms & Conditions",
|
"terms_conditions": "Terms & Conditions",
|
||||||
|
|||||||
@ -83,11 +83,12 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.circular(30.0),
|
borderRadius: BorderRadius.circular(30.0),
|
||||||
border: Border.all(width: 1)),
|
border: Border.all(width: 1,color: Color(0xFFAA8E83)),),
|
||||||
child: TextField(
|
child: TextField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: "Search",
|
hintText: "Search",
|
||||||
prefixIcon: Icon(Icons.search),
|
prefixIcon: Icon(Icons.search,
|
||||||
|
color: Color(0xFFAA8E83),),
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
|
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
|
||||||
|
|||||||
@ -474,7 +474,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
: Padding(
|
: Padding(
|
||||||
padding: const EdgeInsets.only(top: 5.0,bottom: 20, left: 20,right: 20),
|
padding: const EdgeInsets.only(top: 5.0,bottom: 20, left: 30,right: 30),
|
||||||
|
|
||||||
child: Form(
|
child: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
@ -503,12 +503,12 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
? AppLocalizations.of(context)!.register_name
|
? AppLocalizations.of(context)!.register_name
|
||||||
: null,
|
: null,
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.all(8.0), // Adjust the padding as needed
|
padding: const EdgeInsets.only(bottom: 1.0,top:1.0,right:10.0,left:15.0 ), // Adjust the padding as needed
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
MiscIconAssetPath.person,
|
MiscIconAssetPath.person,
|
||||||
color: Color(0xFF90B0D5),
|
color: Color(0xFF90B0D5),
|
||||||
width: 24,
|
width: 25,
|
||||||
height: 24,
|
height: 15,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -520,7 +520,8 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
// border: OutlineInputBorder(),
|
// border: OutlineInputBorder(),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFF90B0D5), width: 2), // Enabled border
|
borderSide: BorderSide(color: MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
|
width: 1), // Enabled border
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -528,7 +529,11 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFFD83731), width: 1), // Error border
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Error border
|
||||||
|
),
|
||||||
|
focusedErrorBorder: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Match the error color
|
||||||
),
|
),
|
||||||
counterText: '',
|
counterText: '',
|
||||||
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
||||||
@ -550,18 +555,19 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
: null,
|
: null,
|
||||||
// _showHints[1] ? 'Enter your email' : null,
|
// _showHints[1] ? 'Enter your email' : null,
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.all(8.0), // Adjust the padding as needed
|
padding: const EdgeInsets.only(bottom: 1.0,top:1.0,right:10.0,left:15.0 ), // Adjust the padding as needed
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
MiscIconAssetPath.vector,
|
MiscIconAssetPath.vector,
|
||||||
color: Color(0xFF90B0D5),
|
color: Color(0xFF90B0D5),
|
||||||
width: 24,
|
width: 25,
|
||||||
height: 24,
|
height: 15,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// border: OutlineInputBorder(),
|
// border: OutlineInputBorder(),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFF90B0D5), width: 2), // Enabled border
|
borderSide: BorderSide(color: MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -569,7 +575,11 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFFD83731), width: 1), // Error border
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Error border
|
||||||
|
),
|
||||||
|
focusedErrorBorder: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Match the error color
|
||||||
),
|
),
|
||||||
counterText: '',
|
counterText: '',
|
||||||
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
||||||
@ -594,12 +604,12 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
: null,
|
: null,
|
||||||
// _showHints[2] ? 'Enter your password' : null,
|
// _showHints[2] ? 'Enter your password' : null,
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.all(8.0), // Adjust the padding as needed
|
padding: const EdgeInsets.only(bottom: 1.0,top:1.0,right:10.0,left:15.0 ), // Adjust the padding as needed
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
MiscIconAssetPath.lock,
|
MiscIconAssetPath.lock,
|
||||||
color: Color(0xFF90B0D5),
|
color: Color(0xFF90B0D5),
|
||||||
width: 24,
|
width: 25,
|
||||||
height: 24,
|
height: 15,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// prefixIcon: Icon(
|
// prefixIcon: Icon(
|
||||||
@ -634,7 +644,8 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
// border: OutlineInputBorder(),
|
// border: OutlineInputBorder(),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFF90B0D5), width: 2), // Enabled border
|
borderSide: BorderSide(color: MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -642,8 +653,13 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFFD83731), width: 1), // Error border
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Error border
|
||||||
),
|
),
|
||||||
|
focusedErrorBorder: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Match the error color
|
||||||
|
),
|
||||||
|
|
||||||
counterText: '',
|
counterText: '',
|
||||||
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
||||||
),
|
),
|
||||||
@ -663,12 +679,12 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
: null,
|
: null,
|
||||||
// _showHints[3] ? 'Confirm password' : null,
|
// _showHints[3] ? 'Confirm password' : null,
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.all(8.0), // Adjust the padding as needed
|
padding: const EdgeInsets.only(bottom: 1.0,top:1.0,right:10.0,left:15.0 ), // Adjust the padding as needed
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
MiscIconAssetPath.lock,
|
MiscIconAssetPath.lock,
|
||||||
color: Color(0xFF90B0D5),
|
color: Color(0xFF90B0D5),
|
||||||
width: 24,
|
width: 25,
|
||||||
height: 24,
|
height: 15,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
@ -694,7 +710,8 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
// ),
|
// ),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFF90B0D5), width: 2), // Enabled border
|
borderSide: BorderSide(color: MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
||||||
|
width: 1),
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -702,7 +719,11 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(color: Color(0xFFD83731), width: 1), // Error border
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Error border
|
||||||
|
),
|
||||||
|
focusedErrorBorder: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
borderSide: BorderSide(color: Color(0xFFb22222), width: 1), // Match the error color
|
||||||
),
|
),
|
||||||
counterText: '',
|
counterText: '',
|
||||||
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
hintStyle: TextStyle(color: Color(0xFFC3C6CB)),
|
||||||
@ -727,8 +748,8 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: showError ? Colors.red : Color(0xFF92722A),
|
color: showError ? Color(0xFFD83731) : Color(0xFF92722A),
|
||||||
width: 1.5,
|
width: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
@ -741,7 +762,12 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
text: AppLocalizations.of(context)!
|
text: AppLocalizations.of(context)!
|
||||||
.terms_conditions,
|
.terms_conditions,
|
||||||
// text: 'Terms & Conditions',
|
// text: 'Terms & Conditions',
|
||||||
style: TextStyle( color: MyTheme.topicColor(IndicatorTopic.economy).shade600,),
|
style: TextStyle(fontWeight: FontWeight.bold,
|
||||||
|
color: Color(0xFF648CBA),
|
||||||
|
// Makes the text bold
|
||||||
|
decoration: TextDecoration.underline,
|
||||||
|
decorationColor: Color(0xFF648CBA),
|
||||||
|
decorationThickness: 1),
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: AppLocalizations.of(context)!
|
text: AppLocalizations.of(context)!
|
||||||
@ -749,7 +775,11 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: AppLocalizations.of(context)!
|
text: AppLocalizations.of(context)!
|
||||||
.privacy_policy,
|
.privacy_policy,
|
||||||
style: TextStyle( color: MyTheme.topicColor(IndicatorTopic.economy).shade600,),
|
style: TextStyle(fontWeight: FontWeight.bold,
|
||||||
|
color: Color(0xFF648CBA),
|
||||||
|
decoration: TextDecoration.underline,
|
||||||
|
decorationColor: Color(0xFF648CBA),
|
||||||
|
decorationThickness: 1),
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: AppLocalizations.of(context)!
|
text: AppLocalizations.of(context)!
|
||||||
@ -769,7 +799,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
child: Text(
|
child: Text(
|
||||||
'Please agree to terms and conditions.',
|
'Please agree to terms and conditions.',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.red[700],
|
color: Color(0xFFb22222),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -778,7 +808,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: screenwidth / 1.3,
|
width: screenwidth / 1,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: isRegistering ? null : _registerUser,
|
onPressed: isRegistering ? null : _registerUser,
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
@ -807,15 +837,15 @@ class _RegisterScreenState extends State<RegisterScreen> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 15),
|
||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context)!.account_confirmation,
|
AppLocalizations.of(context)!.account_confirmation,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 16, color: Colors.grey[600]),
|
fontSize: 16, color: Colors.grey[600]),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 15),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: screenwidth / 1.3,
|
width: screenwidth / 1,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
context.go('/');
|
context.go('/');
|
||||||
|
|||||||
@ -1296,14 +1296,21 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
selectedFiltersStorage.clear();
|
selectedFiltersStorage.clear();
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Color(0xFF92722A),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
),
|
||||||
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
vertical: 12), // Added padding
|
horizontal: 0.0, vertical: 14.2), // Added padding
|
||||||
child: Text(
|
child: Text(
|
||||||
context.translate('Clear', 'واضح'),
|
context.translate('Clear', 'واضح'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 16,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
overflow:
|
overflow:
|
||||||
@ -1311,12 +1318,6 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
maxLines: 1, // Ensures single line
|
maxLines: 1, // Ensures single line
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
backgroundColor: Color(0xFF92722A),
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(width: 16),
|
SizedBox(width: 16),
|
||||||
@ -1334,9 +1335,15 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
selectedFilters);
|
selectedFilters);
|
||||||
selectedFiltersStorage = List.from(selectedFilters);
|
selectedFiltersStorage = List.from(selectedFilters);
|
||||||
},
|
},
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Color(0xFF92722A),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
),
|
||||||
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
vertical: 12), // Added padding
|
horizontal: 0.0, vertical: 16.0), // Added padding
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
fit: BoxFit
|
fit: BoxFit
|
||||||
.scaleDown, // Ensures text resizes if necessary
|
.scaleDown, // Ensures text resizes if necessary
|
||||||
@ -1345,7 +1352,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
'Apply Filter', 'تطبيق الفلتر'),
|
'Apply Filter', 'تطبيق الفلتر'),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 16,
|
fontSize: 12,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
),
|
),
|
||||||
overflow:
|
overflow:
|
||||||
@ -1354,12 +1361,6 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
backgroundColor: Color(0xFF92722A),
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -74,6 +74,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
// Regular expression to validate Full Name (no special characters)
|
// Regular expression to validate Full Name (no special characters)
|
||||||
final RegExp _nameRegExp = RegExp(r"^[a-zA-Z\s]+$");
|
final RegExp _nameRegExp = RegExp(r"^[a-zA-Z\s]+$");
|
||||||
late Future<RecordModel> userDetails;
|
late Future<RecordModel> userDetails;
|
||||||
|
bool _isHoveringDate = false;
|
||||||
|
bool _isHoveringDropdown = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@ -368,7 +370,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
child: Form(
|
child: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(20.0),
|
padding: const EdgeInsets.only(top: 20.0,bottom: 20.0, left: 25,right: 25),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
// CircleAvatar(
|
// CircleAvatar(
|
||||||
@ -539,7 +541,10 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
TextFormField(
|
MouseRegion(
|
||||||
|
onEnter: (_) => setState(() => _isHoveringDate = true),
|
||||||
|
onExit: (_) => setState(() => _isHoveringDate = false),
|
||||||
|
child: TextFormField(
|
||||||
controller: _dateController,
|
controller: _dateController,
|
||||||
focusNode: _focusNodes[3],
|
focusNode: _focusNodes[3],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
@ -549,12 +554,22 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
hintText: _showHints[3] ? 'DD/MM/YYYY' : null,
|
hintText: _showHints[3] ? 'DD/MM/YYYY' : null,
|
||||||
//_showHints[3] ? 'Select your Date of Birth' : null,
|
//_showHints[3] ? 'Select your Date of Birth' : null,
|
||||||
hintStyle: TextStyle(color: Colors.grey),
|
hintStyle: TextStyle(color: Colors.grey),
|
||||||
suffixIcon: const Icon(Icons.arrow_drop_down_sharp),
|
|
||||||
|
suffixIcon: Container(
|
||||||
|
width: 45,
|
||||||
|
padding: EdgeInsets.only(right: 1),
|
||||||
|
alignment: Alignment.center, // Center the icon vertically
|
||||||
|
child: Icon(
|
||||||
|
Icons.keyboard_arrow_down_sharp,
|
||||||
|
color: _isHoveringDate ? Colors.black : Colors.grey,
|
||||||
|
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
readOnly: true,
|
readOnly: true,
|
||||||
onTap: _pickDate,
|
onTap: _pickDate,
|
||||||
validator: _validateDob,
|
validator: _validateDob,
|
||||||
),
|
),),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
@ -567,7 +582,10 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
DropdownButtonFormField<String>(
|
MouseRegion(
|
||||||
|
onEnter: (_) => setState(() => _isHoveringDropdown = true),
|
||||||
|
onExit: (_) => setState(() => _isHoveringDropdown = false),
|
||||||
|
child: DropdownButtonFormField<String>(
|
||||||
value: _selectedCountry,
|
value: _selectedCountry,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
@ -575,6 +593,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
labelText: 'Select',
|
labelText: 'Select',
|
||||||
),
|
),
|
||||||
|
icon: Icon(Icons.keyboard_arrow_down_sharp,
|
||||||
|
color: _isHoveringDropdown ? Colors.black : Colors.grey ),
|
||||||
items: _countries
|
items: _countries
|
||||||
.map((item) => DropdownMenuItem<String>(
|
.map((item) => DropdownMenuItem<String>(
|
||||||
value: item,
|
value: item,
|
||||||
@ -587,7 +607,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
validator: _validateDropdown,
|
validator: _validateDropdown,
|
||||||
),
|
),),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
@ -600,8 +620,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
side: BorderSide(
|
side: BorderSide(
|
||||||
color: showError ? Colors.red : Colors.grey,
|
color: showError ? Color(0xFFb22222) : Color(0xFF92722A),
|
||||||
width: 1.5,
|
width: 1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
@ -620,8 +640,11 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: 'Terms & Conditions',
|
text: 'Terms & Conditions',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
color: Color(0xFF648CBA),
|
||||||
decoration: TextDecoration.underline,
|
decoration: TextDecoration.underline,
|
||||||
|
fontWeight: FontWeight.bold, // Makes the text bold
|
||||||
|
decorationColor: Color(0xFF648CBA),
|
||||||
|
decorationThickness: 1,
|
||||||
),
|
),
|
||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
@ -635,8 +658,12 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: 'Privacy Policy',
|
text: 'Privacy Policy',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
color: Color(0xFF648CBA),
|
||||||
decoration: TextDecoration.underline,
|
decoration: TextDecoration.underline,
|
||||||
|
fontWeight: FontWeight.bold, // Makes the text bold
|
||||||
|
decorationColor: Color(0xFF648CBA),
|
||||||
|
decorationThickness: 1,
|
||||||
|
|
||||||
),
|
),
|
||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
@ -668,7 +695,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
child: Text(
|
child: Text(
|
||||||
'Please agree to terms and conditions',
|
'Please agree to terms and conditions',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.red[700],
|
color: Color(0xFFb22222),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -685,53 +712,30 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
context.go('/createNewPw/$userId/$email');
|
context.go('/createNewPw/$userId/$email');
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
"Change Password",
|
'Change Password',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
color: Color(0xFF648CBA),
|
||||||
decoration: TextDecoration.underline),
|
fontSize: 14,
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
fontFamily: 'Roboto',
|
||||||
|
// decoration: TextDecoration.underline),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
ElevatedButton.icon(
|
// ElevatedButton.icon(
|
||||||
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if ((_formKey.currentState?.validate() ?? false) &&
|
if ((_formKey.currentState?.validate() ?? false) && (isChecked)) {
|
||||||
(isChecked)) {
|
|
||||||
_formKey.currentState?.save();
|
_formKey.currentState?.save();
|
||||||
showConfirmationDialog(context);
|
showConfirmationDialog(context);
|
||||||
} else {
|
} else {
|
||||||
setState(() {
|
setState(() {
|
||||||
showError =
|
showError = !isChecked; // Show error if the checkbox is not checked
|
||||||
!isChecked; // Show error if the checkbox is not checked
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// if ((_formKey.currentState?.validate() ?? false) && (isChecked)) {
|
|
||||||
// _formKey.currentState?.save();
|
|
||||||
// showConfirmationDialog(context);
|
|
||||||
// // if (isChecked) {
|
|
||||||
// // _formKey.currentState?.save();
|
|
||||||
// // // _confirmSaveProfile();
|
|
||||||
// // showConfirmationDialog(context);
|
|
||||||
// // }
|
|
||||||
// else {
|
|
||||||
// setState(() {
|
|
||||||
// showError = !isChecked; // Show error if the checkbox is not checked
|
|
||||||
// });
|
|
||||||
|
|
||||||
// ScaffoldMessenger.of(context).showSnackBar(
|
|
||||||
// SnackBar(content: Text('Please accept the terms and conditions.',style: TextStyle(color: Colors.white),)),
|
|
||||||
// );
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
},
|
},
|
||||||
icon: Icon(
|
|
||||||
Icons.save,
|
|
||||||
color: Colors.white,
|
|
||||||
),
|
|
||||||
label: Text(
|
|
||||||
'Save',
|
|
||||||
style: TextStyle(color: Colors.white),
|
|
||||||
),
|
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Color(0xFF92722A),
|
backgroundColor: Color(0xFF92722A),
|
||||||
minimumSize: Size(double.infinity, 50),
|
minimumSize: Size(double.infinity, 50),
|
||||||
@ -739,7 +743,22 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center, // Center the content
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Save',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
),
|
),
|
||||||
|
SizedBox(width: 8), // Add space between text and icon
|
||||||
|
Icon(
|
||||||
|
Icons.save_outlined,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -25,13 +25,13 @@ class ThemedFormField extends HookWidget {
|
|||||||
final isObscured = useState<bool>(true);
|
final isObscured = useState<bool>(true);
|
||||||
final boxDecoration = BoxDecoration(
|
final boxDecoration = BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
boxShadow: [
|
// boxShadow: [
|
||||||
BoxShadow(
|
// BoxShadow(
|
||||||
offset: const Offset(0, 1),
|
// offset: const Offset(0, 1),
|
||||||
blurRadius: 2,
|
// blurRadius: 2,
|
||||||
color: Colors.black.withOpacity(0.1),
|
// color: Colors.black.withOpacity(0.1),
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
);
|
);
|
||||||
final obscureBtn = IconButton(
|
final obscureBtn = IconButton(
|
||||||
onPressed: () => isObscured.value = !isObscured.value,
|
onPressed: () => isObscured.value = !isObscured.value,
|
||||||
|
|||||||
@ -177,7 +177,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: MyTheme.topicColor(IndicatorTopic.economy).shade600,
|
color: Color(0xFF985400),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -390,7 +390,8 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
validator: (text) {
|
validator: (text) {
|
||||||
if (text == null || text.isEmpty) {
|
if (text == null || text.isEmpty) {
|
||||||
return context.translate('Required', 'مطلوب');
|
return context.translate('Required', 'مطلوب');
|
||||||
} else if (text.length < 8) {
|
}
|
||||||
|
else if (text.length < 8) {
|
||||||
return 'The password must be at least 8 characters';
|
return 'The password must be at least 8 characters';
|
||||||
}
|
}
|
||||||
return FieldValidator.password(minLength: 8)(text);
|
return FieldValidator.password(minLength: 8)(text);
|
||||||
@ -402,6 +403,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
imgPath: MiscIconAssetPath.lock,
|
imgPath: MiscIconAssetPath.lock,
|
||||||
controller: pwCtl,
|
controller: pwCtl,
|
||||||
isObscurable: true,
|
isObscurable: true,
|
||||||
|
|
||||||
),
|
),
|
||||||
// 6.verticalSpace,
|
// 6.verticalSpace,
|
||||||
Align(
|
Align(
|
||||||
@ -441,7 +443,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize: 18,
|
fontSize: context.translate(18.0, 14.0),
|
||||||
color: const Color(0xff898C81),
|
color: const Color(0xff898C81),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -480,7 +482,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
'سجل الان',
|
'سجل الان',
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: MyTheme.topicColor(IndicatorTopic.economy).shade600,
|
color: Color(0xFF985400),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -576,7 +578,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
dontHaveAnAccountRegisterBtn,
|
dontHaveAnAccountRegisterBtn,
|
||||||
20.verticalSpace,
|
20.verticalSpace,
|
||||||
// continueAsGuestBtn,
|
// continueAsGuestBtn,
|
||||||
25.verticalSpace,
|
95.verticalSpace,
|
||||||
fcscBanner,
|
fcscBanner,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@ -76,6 +76,8 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
dynamic collectionId;
|
dynamic collectionId;
|
||||||
dynamic role;
|
dynamic role;
|
||||||
|
|
||||||
|
bool _isHoveringDropdown = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@ -426,13 +428,15 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
|
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
|
||||||
|
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
child: Form(
|
child: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(20.0),
|
// padding: const EdgeInsets.all(20.0),
|
||||||
|
padding: const EdgeInsets.only(top: 20.0,bottom: 20.0, left: 25,right: 25),
|
||||||
child: isPageLoad
|
child: isPageLoad
|
||||||
? Center(
|
? Center(
|
||||||
child: CircularProgressIndicator(),
|
child: CircularProgressIndicator(),
|
||||||
@ -720,8 +724,16 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
),
|
),
|
||||||
// hintText: _showHints[3] ? 'Select your Date of Birth' : null,
|
// hintText: _showHints[3] ? 'Select your Date of Birth' : null,
|
||||||
hintStyle: TextStyle(color: Colors.grey),
|
hintStyle: TextStyle(color: Colors.grey),
|
||||||
suffixIcon:
|
suffixIcon: Container(
|
||||||
const Icon(Icons.arrow_drop_down_sharp),
|
width: 45,
|
||||||
|
padding: EdgeInsets.only(right: 1),
|
||||||
|
alignment: Alignment.center, // Center the icon vertically
|
||||||
|
child: Icon(
|
||||||
|
Icons.keyboard_arrow_down_sharp,
|
||||||
|
color: Colors.grey,
|
||||||
|
|
||||||
|
),
|
||||||
|
),
|
||||||
enabled: !_isProfileCompleted,
|
enabled: !_isProfileCompleted,
|
||||||
),
|
),
|
||||||
readOnly: true,
|
readOnly: true,
|
||||||
@ -742,7 +754,10 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
DropdownButtonFormField<String>(
|
MouseRegion(
|
||||||
|
onEnter: (_) => setState(() => _isHoveringDropdown = true),
|
||||||
|
onExit: (_) => setState(() => _isHoveringDropdown = false),
|
||||||
|
child: DropdownButtonFormField<String>(
|
||||||
value: _selectedCountry,
|
value: _selectedCountry,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
@ -750,6 +765,8 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
),
|
),
|
||||||
labelText: 'Select',
|
labelText: 'Select',
|
||||||
),
|
),
|
||||||
|
icon: Icon(Icons.keyboard_arrow_down_sharp,
|
||||||
|
color: _isHoveringDropdown ? Colors.black : Colors.grey ),
|
||||||
items: _countries
|
items: _countries
|
||||||
.map(
|
.map(
|
||||||
(item) => DropdownMenuItem<String>(
|
(item) => DropdownMenuItem<String>(
|
||||||
@ -764,7 +781,7 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
validator: _validateDropdown,
|
validator: _validateDropdown,
|
||||||
),
|
),),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
if (!_isProfileCompleted) // Conditional rendering
|
if (!_isProfileCompleted) // Conditional rendering
|
||||||
Column(
|
Column(
|
||||||
@ -809,7 +826,8 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
)!
|
)!
|
||||||
.terms_conditions,
|
.terms_conditions,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
// color: Colors.blue,
|
||||||
|
color: Color(0xFF648CBA),
|
||||||
decoration:
|
decoration:
|
||||||
TextDecoration
|
TextDecoration
|
||||||
.underline,
|
.underline,
|
||||||
@ -835,7 +853,8 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
)!
|
)!
|
||||||
.privacy_policy,
|
.privacy_policy,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
// color: Colors.blue,
|
||||||
|
color: Color(0xFF648CBA),
|
||||||
decoration:
|
decoration:
|
||||||
TextDecoration
|
TextDecoration
|
||||||
.underline,
|
.underline,
|
||||||
@ -898,25 +917,47 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
AppLocalizations.of(context)!
|
AppLocalizations.of(context)!
|
||||||
.change_password,
|
.change_password,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.blue,
|
color: Color(0xFF648CBA),
|
||||||
decoration: TextDecoration.underline,
|
fontSize: 14,
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
fontFamily: 'Roboto',
|
||||||
|
// decoration: TextDecoration.underline
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
ElevatedButton.icon(
|
// ElevatedButton.icon(
|
||||||
|
// onPressed: () {
|
||||||
|
// showConfirmationDialog(context);
|
||||||
|
// },
|
||||||
|
// icon: Icon(
|
||||||
|
// Icons.save,
|
||||||
|
// color: Colors.white,
|
||||||
|
// ),
|
||||||
|
// label: Text(
|
||||||
|
// AppLocalizations.of(context)!.save,
|
||||||
|
// style: TextStyle(color: Colors.white),
|
||||||
|
// ),
|
||||||
|
// style: ElevatedButton.styleFrom(
|
||||||
|
// backgroundColor: Color(0xFF92722A),
|
||||||
|
// minimumSize: Size(double.infinity, 50),
|
||||||
|
// shape: RoundedRectangleBorder(
|
||||||
|
// borderRadius: BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
if ((_formKey.currentState?.validate() ?? false) && (isChecked)) {
|
||||||
|
_formKey.currentState?.save();
|
||||||
showConfirmationDialog(context);
|
showConfirmationDialog(context);
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
showError = !isChecked; // Show error if the checkbox is not checked
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
icon: Icon(
|
|
||||||
Icons.save,
|
|
||||||
color: Colors.white,
|
|
||||||
),
|
|
||||||
label: Text(
|
|
||||||
AppLocalizations.of(context)!.save,
|
|
||||||
style: TextStyle(color: Colors.white),
|
|
||||||
),
|
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Color(0xFF92722A),
|
backgroundColor: Color(0xFF92722A),
|
||||||
minimumSize: Size(double.infinity, 50),
|
minimumSize: Size(double.infinity, 50),
|
||||||
@ -924,7 +965,22 @@ class _EditProfileState extends State<EditProfile> {
|
|||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center, // Center the content
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Save',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
),
|
),
|
||||||
|
SizedBox(width: 8), // Add space between text and icon
|
||||||
|
Icon(
|
||||||
|
Icons.save_outlined,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import 'package:pocketbase/pocketbase.dart';
|
|||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
||||||
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/bottom_bar_asset_icon_path.dart';
|
||||||
|
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
||||||
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
@ -124,7 +125,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
text: AppLocalizations.of(context)!.tour_navBar,
|
text: AppLocalizations.of(context)!.tour_navBar,
|
||||||
alignment: ContentAlign.top,
|
alignment: ContentAlign.top,
|
||||||
space: 0,
|
space: 0,
|
||||||
gap: 105,
|
gap: 100,
|
||||||
),
|
),
|
||||||
TargetContent(
|
TargetContent(
|
||||||
align: ContentAlign.top,
|
align: ContentAlign.top,
|
||||||
@ -816,22 +817,51 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
type: BottomNavigationBarType.fixed,
|
type: BottomNavigationBarType.fixed,
|
||||||
items: [
|
items: [
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.home),
|
icon: Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 4), // Adjust this for spacing
|
||||||
|
child: Image.asset(
|
||||||
|
BottomBarAssetIconPath.home,
|
||||||
|
color: _getSelectedIndex(currentRoute) == 0 ? Colors.black : Color(0xFF989898),
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),),
|
||||||
// label: 'Home',
|
// label: 'Home',
|
||||||
label: AppLocalizations.of(context)!.nav_home,
|
label: AppLocalizations.of(context)!.nav_home,
|
||||||
),
|
),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.map),
|
// icon: Icon(Icons.map),
|
||||||
|
icon:Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 4), // Adjust this for spacing
|
||||||
|
child: Image.asset(
|
||||||
|
BottomBarAssetIconPath.uaeMap,
|
||||||
|
color: _getSelectedIndex(currentRoute) == 1 ? Colors.black : Color(0xFF989898),
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),),
|
||||||
// label: 'UAE Numbers'
|
// label: 'UAE Numbers'
|
||||||
label: AppLocalizations.of(context)!.nav_uae,
|
label: AppLocalizations.of(context)!.nav_uae,
|
||||||
),
|
),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.bar_chart),
|
icon: Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 4), // Adjust this for spacing
|
||||||
|
child: Image.asset(
|
||||||
|
BottomBarAssetIconPath.ranking,
|
||||||
|
color: _getSelectedIndex(currentRoute) == 2 ? Colors.black : Color(0xFF989898),
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),),
|
||||||
// label: 'Competitiveness',
|
// label: 'Competitiveness',
|
||||||
label: AppLocalizations.of(context)!.nav_competitiveness,
|
label: AppLocalizations.of(context)!.nav_competitiveness,
|
||||||
),
|
),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.public),
|
icon: Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 4), // Adjust this for spacing
|
||||||
|
child: Image.asset(
|
||||||
|
BottomBarAssetIconPath.globe,
|
||||||
|
color: _getSelectedIndex(currentRoute) == 2 ? Colors.black : Color(0xFF989898),
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),),
|
||||||
// label: 'Country Profile',
|
// label: 'Country Profile',
|
||||||
label: AppLocalizations.of(context)!.country_profile,
|
label: AppLocalizations.of(context)!.country_profile,
|
||||||
),
|
),
|
||||||
@ -839,6 +869,12 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
key: bottomNavKey,
|
key: bottomNavKey,
|
||||||
selectedItemColor: Colors.black,
|
selectedItemColor: Colors.black,
|
||||||
unselectedItemColor: Colors.grey,
|
unselectedItemColor: Colors.grey,
|
||||||
|
selectedLabelStyle: TextStyle(
|
||||||
|
fontSize: 10, // Font size for unselected label
|
||||||
|
),
|
||||||
|
unselectedLabelStyle: TextStyle(
|
||||||
|
fontSize: 10, // Font size for unselected label
|
||||||
|
),
|
||||||
showUnselectedLabels: true,
|
showUnselectedLabels: true,
|
||||||
),
|
),
|
||||||
body: widget.body,
|
body: widget.body,
|
||||||
|
|||||||
52
pubspec.lock
52
pubspec.lock
@ -5,23 +5,23 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
|
sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "72.0.0"
|
version: "76.0.0"
|
||||||
_macros:
|
_macros:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: dart
|
description: dart
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.3.2"
|
version: "0.3.3"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
|
sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.7.0"
|
version: "6.11.0"
|
||||||
analyzer_plugin:
|
analyzer_plugin:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -210,10 +210,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.18.0"
|
version: "1.19.0"
|
||||||
connectivity_plus:
|
connectivity_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -306,10 +306,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: custom_lint_visitor
|
name: custom_lint_visitor
|
||||||
sha256: "8aeb3b6ae2bb765e7716b93d1d10e8356d04e0ff6d7592de6ee04e0dd7d6587d"
|
sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0+6.7.0"
|
version: "1.0.0+6.11.0"
|
||||||
dart_style:
|
dart_style:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -433,10 +433,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: fl_chart
|
name: fl_chart
|
||||||
sha256: "74959b99b92b9eebeed1a4049426fd67c4abc3c5a0f4d12e2877097d6a11ae08"
|
sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.69.2"
|
version: "0.70.2"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -837,18 +837,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.7"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "3.0.8"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -877,10 +877,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: macros
|
name: macros
|
||||||
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
|
sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.2-main.4"
|
version: "0.1.3-main.0"
|
||||||
mailer:
|
mailer:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1268,7 +1268,7 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.99"
|
version: "0.0.0"
|
||||||
smart_api_client:
|
smart_api_client:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1352,10 +1352,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.1"
|
version: "1.12.0"
|
||||||
state_notifier:
|
state_notifier:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1384,10 +1384,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.3.0"
|
||||||
syncfusion_flutter_charts:
|
syncfusion_flutter_charts:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1424,10 +1424,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.7.3"
|
||||||
the_validator:
|
the_validator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1592,10 +1592,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.5"
|
version: "14.3.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -22,7 +22,7 @@ dependencies:
|
|||||||
riverpod_annotation: ^2.3.3
|
riverpod_annotation: ^2.3.3
|
||||||
cupertino_icons: ^1.0.6
|
cupertino_icons: ^1.0.6
|
||||||
|
|
||||||
fl_chart: ^0.69.2
|
fl_chart: ^0.70.2
|
||||||
tutorial_coach_mark: ^1.2.12
|
tutorial_coach_mark: ^1.2.12
|
||||||
marquee: ^2.2.3
|
marquee: ^2.2.3
|
||||||
url_launcher: ^6.3.1
|
url_launcher: ^6.3.1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user