fontfamily changes in login and register page

This commit is contained in:
Kalonkarthik 2025-04-11 11:57:39 +05:30
parent 162a1e5fa8
commit 22c1d76d34
5 changed files with 460 additions and 103 deletions

View File

@ -15,10 +15,19 @@ class PrivacyPolicy extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Theme( return Theme(
data: ThemeData( data: ThemeData(
fontFamily: 'Roboto', // Set default font family for this page fontFamily: context.translate(
'Roboto',
'NotoKufi',
), // Set default font family for this page
textTheme: TextTheme( textTheme: TextTheme(
bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81),), bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81), fontFamily: context.translate(
bodyLarge: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w500), 'Roboto',
'NotoKufi',
),),
bodyLarge: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),fontWeight: FontWeight.w500),
), ),
), ),
child: Scaffold( child: Scaffold(
@ -35,6 +44,10 @@ class PrivacyPolicy extends StatelessWidget {
'الشروط والأحكام', 'الشروط والأحكام',
), ),
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize:22, fontSize:22,
color: Colors.black87, color: Colors.black87,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -63,14 +76,20 @@ class PrivacyPolicy extends StatelessWidget {
text: TextSpan( text: TextSpan(
text: context.translate('Welcome to the ' text: context.translate('Welcome to the '
,'مرحبًا بكم في '), ,'مرحبًا بكم في '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto', height: 1.4), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), height: 1.4),
children:<TextSpan>[ children:<TextSpan>[
TextSpan(text: context.translate('Federal Competitiveness and Statistics Centre (FCSC) Mobile Application', TextSpan(text: context.translate('Federal Competitiveness and Statistics Centre (FCSC) Mobile Application',
'تطبيق المركز الاتحادي للتنافسية والإحصاء (FCSC) '), 'تطبيق المركز الاتحادي للتنافسية والإحصاء (FCSC) '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate(' We value your', TextSpan(text:context.translate(' We value your',
'نحن نقدّر خصوصيتك وحماية بياناتك، ونلتزم بحماية معلوماتك الشخصية.',) 'نحن نقدّر خصوصيتك وحماية بياناتك، ونلتزم بحماية معلوماتك الشخصية.',)
@ -80,7 +99,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('and are committed to safeguarding your personal information. This ', TextSpan(text:context.translate('and are committed to safeguarding your personal information. This ',
'كيفية جمع واستخدام ومشاركة وحماية بياناتك عند استخدام هذا التطبيق.', 'كيفية جمع واستخدام ومشاركة وحماية بياناتك عند استخدام هذا التطبيق.',
@ -88,9 +110,12 @@ class PrivacyPolicy extends StatelessWidget {
TextSpan(text:context.translate( ' Privacy Policy', TextSpan(text:context.translate( ' Privacy Policy',
''), ''),
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto'
),), ),),
TextSpan(text:context.translate(' explains how we collect, use, share, and protect your information when using this App.\n By using the App, you consent to the practices described in this', TextSpan(text:context.translate(' explains how we collect, use, share, and protect your information when using this App.\n By using the App, you consent to the practices described in this',
'باستخدام التطبيق، فإنك توافق على الممارسات الموضحة في هذه السياسة. ', 'باستخدام التطبيق، فإنك توافق على الممارسات الموضحة في هذه السياسة. ',
@ -101,7 +126,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
], ],
), ),
@ -109,13 +137,19 @@ class PrivacyPolicy extends StatelessWidget {
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate ('1.Information We Collect', Text(context.translate ('1.Information We Collect',
'1.١. المعلومات التي نقوم بجمعها'), '1.١. المعلومات التي نقوم بجمعها'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
RichText( RichText(
text: TextSpan( text: TextSpan(
text:context.translate( 'When you use the ', text:context.translate( 'When you use the ',
'عند استخدام تطبيق '), 'عند استخدام تطبيق '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'FCSC App, ', TextSpan(text:context.translate( 'FCSC App, ',
' FCSC '), ' FCSC '),
@ -123,7 +157,10 @@ class PrivacyPolicy extends StatelessWidget {
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('we may collect the following types of data:', TextSpan(text:context.translate('we may collect the following types of data:',
'قد نقوم بجمع الأنواع التالية من البيانات: ',)) 'قد نقوم بجمع الأنواع التالية من البيانات: ',))
@ -136,7 +173,10 @@ class PrivacyPolicy extends StatelessWidget {
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),) , ),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column( child: Column(
@ -152,14 +192,20 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'Name, email address, phone number ', TextSpan(text:context.translate( 'Name, email address, phone number ',
'الاسم، البريد الإلكتروني، رقم الهاتف'), 'الاسم، البريد الإلكتروني، رقم الهاتف'),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(when registering an account).', TextSpan(text:context.translate('(when registering an account).',
' (عند التسجيل). '),), ' (عند التسجيل). '),),
@ -180,14 +226,20 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children:<TextSpan>[ children:<TextSpan>[
TextSpan(text: context.translate( 'User credentials ', TextSpan(text: context.translate( 'User credentials ',
'بيانات تسجيل الدخول ',), 'بيانات تسجيل الدخول ',),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(such as username and password).', TextSpan(text:context.translate('(such as username and password).',
'(مثل اسم المستخدم وكلمة المرور).',),) '(مثل اسم المستخدم وكلمة المرور).',),)
@ -208,13 +260,18 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'Demographic data ','البيانات الديموغرافية '), TextSpan(text:context.translate( 'Demographic data ','البيانات الديموغرافية '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042), fontFamily: context.translate(
fontFamily: 'Roboto' 'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(if provided by the user).', TextSpan(text:context.translate('(if provided by the user).',
'(إذا قدمها المستخدم)'),) '(إذا قدمها المستخدم)'),)
@ -233,7 +290,10 @@ class PrivacyPolicy extends StatelessWidget {
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),) , ),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column( child: Column(
@ -249,14 +309,20 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'Device information ', TextSpan(text:context.translate( 'Device information ',
'معلومات الجهاز '), 'معلومات الجهاز '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(IP address, operating system, device type).','(عنوان IP، نظام التشغيل، نوع الجهاز). '),), TextSpan(text:context.translate('(IP address, operating system, device type).','(عنوان IP، نظام التشغيل، نوع الجهاز). '),),
], ],
@ -276,13 +342,19 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('App interactions ',' التفاعلات داخل التطبيق'), TextSpan(text: context.translate('App interactions ',' التفاعلات داخل التطبيق'),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(pages viewed, features used, actions performed).',' (الصفحات التي تمت زيارتها، الميزات المستخدمة، الإجراءات المنفذة).')) TextSpan(text:context.translate('(pages viewed, features used, actions performed).',' (الصفحات التي تمت زيارتها، الميزات المستخدمة، الإجراءات المنفذة).'))
], ],
@ -302,13 +374,19 @@ class PrivacyPolicy extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'Log data ','بيانات السجل '), TextSpan(text:context.translate( 'Log data ','بيانات السجل '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(error reports, login timestamps).','(تقارير الأخطاء، أوقات تسجيل الدخول)'),) TextSpan(text:context.translate('(error reports, login timestamps).','(تقارير الأخطاء، أوقات تسجيل الدخول)'),)
], ],
@ -325,7 +403,10 @@ class PrivacyPolicy extends StatelessWidget {
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),) , ),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column( child: Column(
@ -343,13 +424,19 @@ class PrivacyPolicy extends StatelessWidget {
text: TextSpan( text: TextSpan(
text:context.translate('If enabled, we may collect ', text:context.translate('If enabled, we may collect ',
'في حال تفعيلها، قد نقوم بجمع بيانات الموقع لتحسين بعض الميزات.'), 'في حال تفعيلها، قد نقوم بجمع بيانات الموقع لتحسين بعض الميزات.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate( 'location-based data ',''), TextSpan(text: context.translate( 'location-based data ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(to enhance certain features.',''),) TextSpan(text:context.translate('(to enhance certain features.',''),)
], ],
@ -367,7 +454,10 @@ class PrivacyPolicy extends StatelessWidget {
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),) , ),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column( child: Column(
@ -384,13 +474,19 @@ class PrivacyPolicy extends StatelessWidget {
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text:context.translate('We may use ','قد نستخدم ملفات تعريف الارتباط (Cookies) وأدوات التحليل والتتبع لتحسين وظائف التطبيق وتجربة المستخدم.'), text:context.translate('We may use ','قد نستخدم ملفات تعريف الارتباط (Cookies) وأدوات التحليل والتتبع لتحسين وظائف التطبيق وتجربة المستخدم.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate( 'cookies, analytics tools, and tracking technologies',''), TextSpan(text: context.translate( 'cookies, analytics tools, and tracking technologies',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text: context.translate('(to improve App functionality and user experience.',''),) TextSpan(text: context.translate('(to improve App functionality and user experience.',''),)
], ],
@ -405,21 +501,33 @@ class PrivacyPolicy extends StatelessWidget {
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate('2. How We Use Your Information','2.كيفية استخدام معلوماتك'), Text(context.translate('2. How We Use Your Information','2.كيفية استخدام معلوماتك'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
Text(context.translate('The data we collect is used to:','يتم استخدام البيانات التي نجمعها للأغراض التالية:'), Text(context.translate('The data we collect is used to:','يتم استخدام البيانات التي نجمعها للأغراض التالية:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
), ),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('Provide and improve services- ','تقديم وتحسين الخدمات '), TextSpan(text: context.translate('Provide and improve services- ','تقديم وتحسين الخدمات '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('Deliver insights, statistics, and reports.','توفير الإحصاءات والتقارير والتحليلات.'),), TextSpan(text:context.translate('Deliver insights, statistics, and reports.','توفير الإحصاءات والتقارير والتحليلات.'),),
], ],
@ -429,13 +537,19 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('Personalize user experience ','تخصيص تجربة المستخدم '), TextSpan(text: context.translate('Personalize user experience ','تخصيص تجربة المستخدم '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('Tailor content and recommendations.','تحسين المحتوى والتوصيات بناءً على اهتمامات المستخدم.')), TextSpan(text:context.translate('Tailor content and recommendations.','تحسين المحتوى والتوصيات بناءً على اهتمامات المستخدم.')),
], ],
@ -445,13 +559,19 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate ('Ensure security ','ضمان الأمان '), TextSpan(text: context.translate ('Ensure security ','ضمان الأمان '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text: context.translate('Prevent unauthorized access and detect fraudulent activities.', TextSpan(text: context.translate('Prevent unauthorized access and detect fraudulent activities.',
'منع الوصول غير المصرح به واكتشاف الأنشطة الاحتيالية.',),) 'منع الوصول غير المصرح به واكتشاف الأنشطة الاحتيالية.',),)
@ -462,14 +582,20 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate('Comply with legal requirements ', TextSpan(text:context.translate('Comply with legal requirements ',
'الامتثال للمتطلبات القانونية '), 'الامتثال للمتطلبات القانونية '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('As mandated by UAE laws and regulations.', TextSpan(text:context.translate('As mandated by UAE laws and regulations.',
'وفقًا للوائح والقوانين الإماراتية.'), 'وفقًا للوائح والقوانين الإماراتية.'),
@ -481,13 +607,19 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children:<TextSpan>[ children:<TextSpan>[
TextSpan(text: context.translate('Communicate with users ','التواصل مع المستخدمين '), TextSpan(text: context.translate('Communicate with users ','التواصل مع المستخدمين '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate ('Respond to inquiries, send updates, and support requests.', TextSpan(text:context.translate ('Respond to inquiries, send updates, and support requests.',
'الرد على الاستفسارات وإرسال التحديثات والدعم الفني.',)) 'الرد على الاستفسارات وإرسال التحديثات والدعم الفني.',))
@ -497,18 +629,27 @@ class PrivacyPolicy extends StatelessWidget {
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate('3. How We Share Your Information','3.كيفية مشاركة معلوماتك'), Text(context.translate('3. How We Share Your Information','3.كيفية مشاركة معلوماتك'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: context.translate('FCSC ','لا يقوم FCSC ببيع أو تبادل معلوماتك الشخصية. ومع ذلك، قد نشارك البيانات في الحالات التالية:'), text: context.translate('FCSC ','لا يقوم FCSC ببيع أو تبادل معلوماتك الشخصية. ومع ذلك، قد نشارك البيانات في الحالات التالية:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('does not sell or trade ',''), TextSpan(text: context.translate('does not sell or trade ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text: context.translate('your personal information. However, we may share data in the following cases:',''),) TextSpan(text: context.translate('your personal information. However, we may share data in the following cases:',''),)
], ],
@ -518,21 +659,30 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('Government and Legal Compliance ', TextSpan(text: context.translate('Government and Legal Compliance ',
'التزامات حكومية وقانونية '), 'التزامات حكومية وقانونية '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('If required by ','')), TextSpan(text:context.translate('If required by ','')),
TextSpan(text: context.translate('UAE government authorities ',''), TextSpan(text: context.translate('UAE government authorities ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('or for legal obligations.',''),), TextSpan(text:context.translate('or for legal obligations.',''),),
], ],
@ -542,14 +692,20 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('Third-Party Service Providers ', TextSpan(text: context.translate('Third-Party Service Providers ',
'مقدمو الخدمات الخارجيون '), 'مقدمو الخدمات الخارجيون '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text: context.translate('To support App functionality (e.g., hosting services, analytics providers).','لدعم وظائف التطبيق (مثل خدمات الاستضافة، مزودي التحليلات).')) TextSpan(text: context.translate('To support App functionality (e.g., hosting services, analytics providers).','لدعم وظائف التطبيق (مثل خدمات الاستضافة، مزودي التحليلات).'))
], ],
@ -559,13 +715,19 @@ class PrivacyPolicy extends StatelessWidget {
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0), Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text: context.translate('Security and Fraud Prevention ','الأمان ومنع الاحتيال '), TextSpan(text: context.translate('Security and Fraud Prevention ','الأمان ومنع الاحتيال '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text: context.translate('To investigate and prevent security breaches All third-party vendors are required to', TextSpan(text: context.translate('To investigate and prevent security breaches All third-party vendors are required to',
'للتحقيق في أي خروقات أمنية ومنعها.'), 'للتحقيق في أي خروقات أمنية ومنعها.'),
@ -575,7 +737,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
], ],
), ),
@ -583,20 +748,29 @@ class PrivacyPolicy extends StatelessWidget {
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate('4. Data Storage and Security','4.تخزين البيانات وأمانها'), Text(context.translate('4. Data Storage and Security','4.تخزين البيانات وأمانها'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
Padding( Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate('Data Encryption ','تشفير البيانات '), text: context.translate('Data Encryption ','تشفير البيانات '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: context.translate('We use AES-256 encryption to protect user data.', TextSpan(text: context.translate('We use AES-256 encryption to protect user data.',
@ -609,14 +783,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text:context.translate( 'Secure Servers ','خوادم آمنة '), text:context.translate( 'Secure Servers ','خوادم آمنة '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: context.translate ('All information is stored on government-approved servers with strict access controls.','يتم تخزين جميع المعلومات على خوادم معتمدة من الحكومة بإجراءات صارمة للتحكم في الوصول.'),), TextSpan(text: context.translate ('All information is stored on government-approved servers with strict access controls.','يتم تخزين جميع المعلومات على خوادم معتمدة من الحكومة بإجراءات صارمة للتحكم في الوصول.'),),
@ -628,14 +808,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate('Access Restrictions ', 'قيود الوصول '), text: context.translate('Access Restrictions ', 'قيود الوصول '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: context.translate('Only authorized personnel can access sensitive user data.', TextSpan(text: context.translate('Only authorized personnel can access sensitive user data.',
@ -648,14 +834,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children:<TextSpan>[ children:<TextSpan>[
TextSpan( TextSpan(
text:context.translate('Retention Policy ','سياسة الاحتفاظ بالبيانات '), text:context.translate('Retention Policy ','سياسة الاحتفاظ بالبيانات '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: context.translate('We retain personal data only as long as necessary for legal and operational purposes.', TextSpan(text: context.translate('We retain personal data only as long as necessary for legal and operational purposes.',
@ -667,24 +859,36 @@ class PrivacyPolicy extends StatelessWidget {
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate ('5. User Rights and Choices','5.حقوق المستخدم وخياراته'), Text(context.translate ('5. User Rights and Choices','5.حقوق المستخدم وخياراته'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
Text(context.translate('Users have the following rights regarding their personal data',''), Text(context.translate('Users have the following rights regarding their personal data',''),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
), ),
Padding( Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate ('Access & Review ','الوصول والمراجعة '), text: context.translate ('Access & Review ','الوصول والمراجعة '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate( 'You can request a copy of the personal data stored.', TextSpan(text:context.translate( 'You can request a copy of the personal data stored.',
@ -698,14 +902,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate('Correction & Deletion ','التعديل والحذف '), text: context.translate('Correction & Deletion ','التعديل والحذف '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate('You may request corrections or removal of your data (subject to legal retention policies).', TextSpan(text:context.translate('You may request corrections or removal of your data (subject to legal retention policies).',
@ -718,14 +928,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate('Opt-Out of Marketing ','إلغاء الاشتراك في التسويق '), text: context.translate('Opt-Out of Marketing ','إلغاء الاشتراك في التسويق '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate( 'You can choose to opt-out of promotional communications.', TextSpan(text:context.translate( 'You can choose to opt-out of promotional communications.',
@ -739,14 +955,20 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: context.translate ('Disable Location Services ','إيقاف خدمات الموقع '), text: context.translate ('Disable Location Services ','إيقاف خدمات الموقع '),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate ( 'Location tracking can be disabled via device settings.','يمكن تعطيل تتبع الموقع عبر إعدادات الجهاز.'), TextSpan(text:context.translate ( 'Location tracking can be disabled via device settings.','يمكن تعطيل تتبع الموقع عبر إعدادات الجهاز.'),
@ -759,13 +981,19 @@ class PrivacyPolicy extends StatelessWidget {
padding: EdgeInsets.only(left: 10.0, bottom: 3.0), padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children:<TextSpan>[ children:<TextSpan>[
TextSpan( TextSpan(
text: context.translate( 'To exercise these rights, contact us at ',''), text: context.translate( 'To exercise these rights, contact us at ',''),
style: TextStyle( style: TextStyle(
color: Color(0xFF898C81), color: Color(0xFF898C81),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan( TextSpan(
@ -773,7 +1001,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: '.'), TextSpan(text: '.'),
@ -783,52 +1014,76 @@ class PrivacyPolicy extends StatelessWidget {
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate('6. Third-Party Links and Services','6.روابط وخدمات الجهات الخارجية'), Text(context.translate('6. Third-Party Links and Services','6.روابط وخدمات الجهات الخارجية'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
RichText( RichText(
text: TextSpan( text: TextSpan(
text:context.translate('The App may contain ', text:context.translate('The App may contain ',
'قد يحتوي التطبيق على روابط لمواقع إلكترونية أو خدمات خارجية (مثل بوابات الحكومة الإماراتية). لا تتحمل FCSC أي مسؤولية عن ممارسات الخصوصية الخاصة بالجهات الخارجية. يجب على المستخدمين مراجعة سياسات الخصوصية الخاصة بهم.'), 'قد يحتوي التطبيق على روابط لمواقع إلكترونية أو خدمات خارجية (مثل بوابات الحكومة الإماراتية). لا تتحمل FCSC أي مسؤولية عن ممارسات الخصوصية الخاصة بالجهات الخارجية. يجب على المستخدمين مراجعة سياسات الخصوصية الخاصة بهم.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan(text:context.translate( 'links to external websites or services ',''), TextSpan(text:context.translate( 'links to external websites or services ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('(e.g., UAE government portals). FCSC is ','',),), TextSpan(text:context.translate('(e.g., UAE government portals). FCSC is ','',),),
TextSpan(text:context.translate( 'not responsible ',''), TextSpan(text:context.translate( 'not responsible ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
TextSpan(text:context.translate('for third-party privacy practices. Users should review their respective ',''),), TextSpan(text:context.translate('for third-party privacy practices. Users should review their respective ',''),),
TextSpan(text:context.translate( 'Privacy Policies.',''), TextSpan(text:context.translate( 'Privacy Policies.',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),), ),),
], ],
), ),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text( context.translate("7. Children's Privacy",'7.خصوصية الأطفال'), Text( context.translate("7. Children's Privacy",'7.خصوصية الأطفال'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: context.translate('The App is not ','التطبيق غير مخصص للأطفال دون سن ١٣ عامًا. نحن لا نجمع بيانات من القاصرين عن قصد. يمكن للوالدين أو الأوصياء طلب إزالة أي بيانات تخص الأطفال عن طريق التواصل مع FCSC.'), text: context.translate('The App is not ','التطبيق غير مخصص للأطفال دون سن ١٣ عامًا. نحن لا نجمع بيانات من القاصرين عن قصد. يمكن للوالدين أو الأوصياء طلب إزالة أي بيانات تخص الأطفال عن طريق التواصل مع FCSC.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text:context.translate( 'intended for children under 13 years. ',''), text:context.translate( 'intended for children under 13 years. ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text: context.translate('We do not knowingly collect data from minors. Parents or guardians may request the ', TextSpan(text: context.translate('We do not knowingly collect data from minors. Parents or guardians may request the ',
@ -839,7 +1094,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate( 'by contacting FCSC.',''),), TextSpan(text:context.translate( 'by contacting FCSC.',''),),
@ -847,21 +1105,30 @@ class PrivacyPolicy extends StatelessWidget {
), ),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text(context.translate('8. Changes to This Privacy Policy','التغييرات على سياسة الخصوصية هذه'), Text(context.translate('8. Changes to This Privacy Policy','8.التغييرات على سياسة الخصوصية هذه'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: context.translate('We may update this Privacy Policy periodically to reflect changes in ', text: context.translate('We may update this Privacy Policy periodically to reflect changes in ',
'قد نقوم بتحديث سياسة الخصوصية هذه بشكل دوري لتعكس التغييرات في القوانين أو التكنولوجيا أو ملاحظات المستخدمين. ستكون أحدث نسخة متاحة دائمًا داخل التطبيق.'), 'قد نقوم بتحديث سياسة الخصوصية هذه بشكل دوري لتعكس التغييرات في القوانين أو التكنولوجيا أو ملاحظات المستخدمين. ستكون أحدث نسخة متاحة دائمًا داخل التطبيق.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text:context.translate( 'laws, technology, or user feedback. ',''), text:context.translate( 'laws, technology, or user feedback. ',''),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate( 'The ',''),), TextSpan(text:context.translate( 'The ',''),),
@ -870,7 +1137,10 @@ class PrivacyPolicy extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto', fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
), ),
), ),
TextSpan(text:context.translate( 'in the App.',''),), TextSpan(text:context.translate( 'in the App.',''),),
@ -878,10 +1148,16 @@ class PrivacyPolicy extends StatelessWidget {
), ),
), ),
Text(context.translate('9. Contact Information','9.معلومات الاتصال'), Text(context.translate('9. Contact Information','9.معلومات الاتصال'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) , style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: context.translate(
'Roboto',
'NotoKufi',
), fontWeight: FontWeight.w600),) ,
SizedBox(height: 5), SizedBox(height: 5),
Text( context.translate('For privacy-related inquiries, you may contact:' ,'للاستفسارات المتعلقة بالخصوصية، يمكنك التواصل معنا عبر:'), Text( context.translate('For privacy-related inquiries, you may contact:' ,'للاستفسارات المتعلقة بالخصوصية، يمكنك التواصل معنا عبر:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
), ),
SizedBox(height: 20), SizedBox(height: 20),
Center(child: fcscBanner), Center(child: fcscBanner),

View File

@ -312,7 +312,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
), ),
child: Text( child: Text(
context.translate('Ok', 'حسنًا'), context.translate('Ok', 'حسنًا'),
style: TextStyle(color: Colors.white, fontSize: 16), style: TextStyle(color: Colors.white, fontSize: 16, fontFamily: context.translate(
'Roboto',
'NotoKufi',
),),
), ),
), ),
], ],
@ -443,6 +446,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
'تسجيلك في انتظار التحقق.'), 'تسجيلك في انتظار التحقق.'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042)), color: Color(0xFF414042)),
@ -454,6 +461,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
'يرجى التحقق من البريد الخاص بك للمضي قدما.'), 'يرجى التحقق من البريد الخاص بك للمضي قدما.'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 14, fontSize: 14,
color: Color(0xFF898C81), color: Color(0xFF898C81),
), ),
@ -473,6 +484,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
context.translate('Go to Login', context.translate('Go to Login',
'اذهب إلى تسجيل الدخول'), 'اذهب إلى تسجيل الدخول'),
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Colors.white, // Text color color: Colors.white, // Text color
), ),
), ),
@ -509,6 +524,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
'آسف ${_usernameController.text}!'), 'آسف ${_usernameController.text}!'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xFF414042)), color: Color(0xFF414042)),
@ -520,6 +539,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
'فشلت عملية التسجيل الخاصة بك. لمزيد من المساعدة، يرجى الاتصال بالدعم.'), 'فشلت عملية التسجيل الخاصة بك. لمزيد من المساعدة، يرجى الاتصال بالدعم.'),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 14, fontSize: 14,
color: Color(0xFF898C81), color: Color(0xFF898C81),
), ),
@ -571,6 +594,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
AppLocalizations.of(context)! AppLocalizations.of(context)!
.register_title, .register_title,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 32, fontSize: 32,
fontWeight: FontWeight.w400), fontWeight: FontWeight.w400),
), ),
@ -579,6 +606,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
AppLocalizations.of(context)! AppLocalizations.of(context)!
.register_details, .register_details,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: fontSize:
context.translate(18.0, 14.0), context.translate(18.0, 14.0),
color: const Color(0xff898C81), color: const Color(0xff898C81),
@ -669,6 +700,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
), ),
counterText: '', counterText: '',
hintStyle: TextStyle( hintStyle: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFFC3C6CB), color: Color(0xFFC3C6CB),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
@ -762,6 +797,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
), ),
counterText: '', counterText: '',
hintStyle: TextStyle( hintStyle: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFFC3C6CB), color: Color(0xFFC3C6CB),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
@ -891,6 +930,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
counterText: '', counterText: '',
hintStyle: TextStyle( hintStyle: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFFC3C6CB), color: Color(0xFFC3C6CB),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
@ -1007,6 +1050,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
), ),
counterText: '', counterText: '',
hintStyle: TextStyle( hintStyle: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFFC3C6CB), color: Color(0xFFC3C6CB),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
@ -1070,6 +1117,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
.agree, .agree,
// text: 'I agree to ', // text: 'I agree to ',
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: fontWeight:
FontWeight.w500, FontWeight.w500,
fontSize: registerLocale fontSize: registerLocale
@ -1093,6 +1144,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
.terms_conditions, .terms_conditions,
// text: 'Terms & Conditions', // text: 'Terms & Conditions',
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: fontSize:
registerLocale registerLocale
?.languageCode == ?.languageCode ==
@ -1118,6 +1173,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
.of(context)! .of(context)!
.t_and, .t_and,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color( color: Color(
0xFF898C81), // Change to your desired color 0xFF898C81), // Change to your desired color
), ),
@ -1132,6 +1191,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
.of(context)! .of(context)!
.privacy_policy, .privacy_policy,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: fontWeight:
FontWeight FontWeight
.bold, .bold,
@ -1141,8 +1204,6 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
'ar' 'ar'
? 12 ? 12
: 14, : 14,
fontFamily:
'Roboto',
color: Color( color: Color(
0xFF985400), 0xFF985400),
// decoration: // decoration:
@ -1158,6 +1219,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
.of(context)! .of(context)!
.conditions, .conditions,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: fontWeight:
FontWeight.w500, FontWeight.w500,
fontSize: registerLocale fontSize: registerLocale
@ -1199,6 +1264,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
context.translate( context.translate(
'Required', 'مطلوب'), 'Required', 'مطلوب'),
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
color: Color(0xFFb22222), color: Color(0xFFb22222),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
@ -1240,6 +1309,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
context)! context)!
.register_title, .register_title,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: registerLocale fontSize: registerLocale
?.languageCode == ?.languageCode ==
'ar' 'ar'
@ -1264,6 +1337,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
AppLocalizations.of(context)! AppLocalizations.of(context)!
.account_confirmation, .account_confirmation,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: fontSize:
registerLocale?.languageCode == registerLocale?.languageCode ==
@ -1302,6 +1379,10 @@ class _RegisterScreenState extends ConsumerState<RegisterScreen> {
context)! context)!
.login_title, .login_title,
style: TextStyle( style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16, fontSize: 16,
color: Colors.white), color: Colors.white),
), ),

View File

@ -933,7 +933,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
TextSpan( TextSpan(
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
..onTap = () => ..onTap = () =>
context.push('/terms&conditions'), context.push('/termsandconditions'),
text: AppLocalizations.of(context)! text: AppLocalizations.of(context)!
.terms_conditions, .terms_conditions,
// text: 'Terms & Conditions', // text: 'Terms & Conditions',

View File

@ -394,7 +394,7 @@ class LoginRoute extends HookConsumerWidget {
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'Roboto', 'NotoKufi',
), ),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: locale?.languageCode == 'ar' ? 12 : 14, fontSize: locale?.languageCode == 'ar' ? 12 : 14,
@ -570,7 +570,7 @@ class LoginRoute extends HookConsumerWidget {
TextStyle( TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'Roboto', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 14 : 16, fontSize: locale?.languageCode == 'ar' ? 14 : 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -597,7 +597,7 @@ class LoginRoute extends HookConsumerWidget {
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'Roboto', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 12 : 18, fontSize: locale?.languageCode == 'ar' ? 12 : 18,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -691,7 +691,7 @@ class LoginRoute extends HookConsumerWidget {
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'Roboto', 'NotoKufi',
), ),
fontSize: context.translate(18.0, 14.0), fontSize: context.translate(18.0, 14.0),
color: const Color(0xff898C81), color: const Color(0xff898C81),
@ -710,7 +710,7 @@ class LoginRoute extends HookConsumerWidget {
style: TextStyle( style: TextStyle(
fontFamily: context.translate( fontFamily: context.translate(
'Roboto', 'Roboto',
'Roboto', 'NotoKufi',
), ),
fontSize: locale?.languageCode == 'ar' ? 12 : 14, fontSize: locale?.languageCode == 'ar' ? 12 : 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,

View File

@ -1040,7 +1040,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
TapGestureRecognizer() TapGestureRecognizer()
..onTap = () => ..onTap = () =>
context.push( context.push(
'/terms&conditions'), '/termsandconditions'),
), ),
TextSpan( TextSpan(
text: AppLocalizations text: AppLocalizations