notification,T&C,Privacy Policy added & bug fix code

This commit is contained in:
Juki-shiba 2025-02-11 14:42:38 +05:30
parent 8bf645c65b
commit fb69475fe4
23 changed files with 3429 additions and 1773 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -302,6 +302,7 @@ import 'package:uae_stat/presentation/Screens/charts/chart.dart';
import 'package:uae_stat/presentation/Screens/charts/screens/chart_screen.dart';
import 'package:uae_stat/presentation/Screens/demo_home2.dart';
import 'package:uae_stat/presentation/Screens/online_offline_verification/internet_check.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/notification/notification.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/user_guide/AboutTheApp/AboutFCSC.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/user_guide/AboutTheApp/getStarted.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/user_guide/KeyFeatures/AppFeatures.dart';
@ -360,7 +361,8 @@ final GoRouter router = GoRouter(
GoRoute(
path: '/',
//builder: (context, state) => LoginRoute(),
builder: (context, state) => SessionCheckScreen(),
// builder: (context, state) => SessionCheckScreen(),
builder: (context, state) => MyHomePage(),
),
// GoRoute(
// path: '/',
@ -474,6 +476,13 @@ final GoRouter router = GoRouter(
return ProfileScreen(userId: userId);
},
),
GoRoute(
path: '/notification',
builder: (context, state) {
// final userId = state.pathParameters['userId']!;
return NotificationPage();
},
),
GoRoute(
path: '/user-guide',
builder: (context, state) => Userguide(),

View File

@ -0,0 +1,887 @@
import 'package:flutter/material.dart';
import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
class PrivacyPolicy extends StatelessWidget {
const PrivacyPolicy({super.key});
@override
Widget build(BuildContext context) {
return Theme(
data: ThemeData(
fontFamily: 'Roboto', // Set default font family for this page
textTheme: TextTheme(
bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81),),
bodyLarge: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w500),
),
),
child: Scaffold(
appBar: AppBar(
title:Text(context.translate(
'Privacy Policy',
'الشروط والأحكام',
),
style: TextStyle(
fontSize:22,
color: Colors.black87,
fontWeight: FontWeight.w600,
// fontWeight: FontWeight.w500,
),
),
backgroundColor: Colors.white,
bottom: PreferredSize(
preferredSize: Size.fromHeight(1), // Height of the line
child: Container(
color: Colors.grey.shade300, // Line color
height: 1, // Line thickness
),
),
),
body: Container(
height: double.infinity,
color: Colors.white,
padding: EdgeInsets.all(16),
child:SingleChildScrollView(
child:Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
RichText(
text: TextSpan(
text: context.translate('Welcome to the '
,'مرحبًا بكم في '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto', height: 1.4),
children:<TextSpan>[
TextSpan(text: context.translate('Federal Competitiveness and Statistics Centre (FCSC) Mobile Application',
'تطبيق المركز الاتحادي للتنافسية والإحصاء (FCSC) '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate(' We value your',
'نحن نقدّر خصوصيتك وحماية بياناتك، ونلتزم بحماية معلوماتك الشخصية.',)
),
TextSpan(text:context.translate( ' privacy and data protection ',
'توضح هذه سياسة الخصوصية ',),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('and are committed to safeguarding your personal information. This ',
'كيفية جمع واستخدام ومشاركة وحماية بياناتك عند استخدام هذا التطبيق.',
)),
TextSpan(text:context.translate( ' Privacy Policy',
''),
style: TextStyle(
fontWeight: FontWeight.w500,
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( ' Privacy Policy ',
'',),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
],
),
),
SizedBox(height: 10),
Text(context.translate ('1.Information We Collect',
'1.١. المعلومات التي نقوم بجمعها'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
RichText(
text: TextSpan(
text:context.translate( 'When you use the ',
'عند استخدام تطبيق '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'FCSC App, ',
' FCSC '),
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('we may collect the following types of data:',
'قد نقوم بجمع الأنواع التالية من البيانات: ',))
],
),
),
SizedBox(height: 5),
Text(context.translate('1.1 Personal Information','1.1المعلومات الشخصية'),
style:TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'Name, email address, phone number ',
'الاسم، البريد الإلكتروني، رقم الهاتف'),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(when registering an account).',
' (عند التسجيل). '),),
],
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children:<TextSpan>[
TextSpan(text: context.translate( 'User credentials ',
'بيانات تسجيل الدخول ',),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(such as username and password).',
'(مثل اسم المستخدم وكلمة المرور).',),)
],
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'Demographic data ','البيانات الديموغرافية '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(if provided by the user).',
'(إذا قدمها المستخدم)'),)
],
),
),
),
],
),
],
),
),
Text(context.translate('1.2 Usage Data','1.2بيانات الاستخدام'),
style:TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'Device information ',
'معلومات الجهاز '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(IP address, operating system, device type).','(عنوان IP، نظام التشغيل، نوع الجهاز). '),),
],
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('App interactions ',' التفاعلات داخل التطبيق'),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(pages viewed, features used, actions performed).',' (الصفحات التي تمت زيارتها، الميزات المستخدمة، الإجراءات المنفذة).'))
],
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'Log data ','بيانات السجل '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(error reports, login timestamps).','(تقارير الأخطاء، أوقات تسجيل الدخول)'),)
],
),
),
),
],
),
],
),
),
Text(context.translate('1.3 Location Data','1.3بيانات الموقع الجغرافي'),
style:TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text:context.translate('If enabled, we may collect ',
'في حال تفعيلها، قد نقوم بجمع بيانات الموقع لتحسين بعض الميزات.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate( 'location-based data ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(to enhance certain features.',''),)
],
),
),
),
],
),
],
),
),
Text(context.translate('1.4 Cookies and Tracking Technologies','1.4ملفات تعريف الارتباط والتقنيات التتبعية'),
style:TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),) ,
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0 ,),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text:context.translate('We may use ','قد نستخدم ملفات تعريف الارتباط (Cookies) وأدوات التحليل والتتبع لتحسين وظائف التطبيق وتجربة المستخدم.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate( 'cookies, analytics tools, and tracking technologies',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: context.translate('(to improve App functionality and user experience.',''),)
],
),
),
),
],
),
],
),
),
SizedBox(height: 10),
Text(context.translate('2. How We Use Your Information','2.كيفية استخدام معلوماتك'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
Text(context.translate('The data we collect is used to:','يتم استخدام البيانات التي نجمعها للأغراض التالية:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Provide and improve services- ','تقديم وتحسين الخدمات '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('Deliver insights, statistics, and reports.','توفير الإحصاءات والتقارير والتحليلات.'),),
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Personalize user experience ','تخصيص تجربة المستخدم '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('Tailor content and recommendations.','تحسين المحتوى والتوصيات بناءً على اهتمامات المستخدم.')),
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate ('Ensure security ','ضمان الأمان '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: context.translate('Prevent unauthorized access and detect fraudulent activities.',
'منع الوصول غير المصرح به واكتشاف الأنشطة الاحتيالية.',),)
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate('Comply with legal requirements ',
'الامتثال للمتطلبات القانونية '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('As mandated by UAE laws and regulations.',
'وفقًا للوائح والقوانين الإماراتية.'),
)
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children:<TextSpan>[
TextSpan(text: context.translate('Communicate with users ','التواصل مع المستخدمين '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate ('Respond to inquiries, send updates, and support requests.',
'الرد على الاستفسارات وإرسال التحديثات والدعم الفني.',))
],
),
),
),
SizedBox(height: 10),
Text(context.translate('3. How We Share Your Information','3.كيفية مشاركة معلوماتك'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
RichText(
text: TextSpan(
text: context.translate('FCSC ','لا يقوم FCSC ببيع أو تبادل معلوماتك الشخصية. ومع ذلك، قد نشارك البيانات في الحالات التالية:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('does not sell or trade ',''),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: context.translate('your personal information. However, we may share data in the following cases:',''),)
],
),
),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Government and Legal Compliance ',
'التزامات حكومية وقانونية '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('If required by ','')),
TextSpan(text: context.translate('UAE government authorities ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('or for legal obligations.',''),),
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Third-Party Service Providers ',
'مقدمو الخدمات الخارجيون '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: context.translate('To support App functionality (e.g., hosting services, analytics providers).','لدعم وظائف التطبيق (مثل خدمات الاستضافة، مزودي التحليلات).'))
],
),
),
),
Padding(padding: EdgeInsets.only(left: 10.0,bottom: 5.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Security and Fraud Prevention ','الأمان ومنع الاحتيال '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: context.translate('To investigate and prevent security breaches All third-party vendors are required to',
'للتحقيق في أي خروقات أمنية ومنعها.'),
),
TextSpan(text: context.translate(' adhere to strict confidentiality agreements. ','جميع مزودي الخدمات الخارجيين مطالبون بالالتزام باتفاقيات سرية صارمة.'),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
],
),
),
),
SizedBox(height: 10),
Text(context.translate('4. Data Storage and Security','4.تخزين البيانات وأمانها'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate('Data Encryption ','تشفير البيانات '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: context.translate('We use AES-256 encryption to protect user data.',
' نستخدم تشفير AES-256 لحماية بيانات المستخدم.'),),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text:context.translate( 'Secure Servers ','خوادم آمنة '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: context.translate ('All information is stored on government-approved servers with strict access controls.','يتم تخزين جميع المعلومات على خوادم معتمدة من الحكومة بإجراءات صارمة للتحكم في الوصول.'),),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate('Access Restrictions ', 'قيود الوصول '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: context.translate('Only authorized personnel can access sensitive user data.',
'لا يُسمح بالوصول إلى البيانات إلا للموظفين المخولين فقط.'),),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children:<TextSpan>[
TextSpan(
text:context.translate('Retention Policy ','سياسة الاحتفاظ بالبيانات '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: context.translate('We retain personal data only as long as necessary for legal and operational purposes.',
'نحتفظ بالبيانات الشخصية فقط للمدة اللازمة للأغراض القانونية والتشغيلية',
),),
],
),
),
),
SizedBox(height: 10),
Text(context.translate ('5. User Rights and Choices','5.حقوق المستخدم وخياراته'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
Text(context.translate('Users have the following rights regarding their personal data',''),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate ('Access & Review ','الوصول والمراجعة '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate( 'You can request a copy of the personal data stored.',
'يمكنك طلب نسخة من بياناتك الشخصية المخزنة.',),
),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate('Correction & Deletion ','التعديل والحذف '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate('You may request corrections or removal of your data (subject to legal retention policies).',
' يمكنك طلب تصحيح أو إزالة بياناتك (وفقًا لسياسات الاحتفاظ القانونية).'),),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate('Opt-Out of Marketing ','إلغاء الاشتراك في التسويق '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate( 'You can choose to opt-out of promotional communications.',
'يمكنك اختيار إلغاء الاشتراك في الرسائل الترويجية.'),
),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text: context.translate ('Disable Location Services ','إيقاف خدمات الموقع '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate ( 'Location tracking can be disabled via device settings.','يمكن تعطيل تتبع الموقع عبر إعدادات الجهاز.'),
),
],
),
),
),
Padding(
padding: EdgeInsets.only(left: 10.0, bottom: 3.0),
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children:<TextSpan>[
TextSpan(
text: context.translate( 'To exercise these rights, contact us at ',''),
style: TextStyle(
color: Color(0xFF898C81),
fontFamily: 'Roboto',
),
),
TextSpan(
text: '[Insert Official FCSC Email]',
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: '.'),
],
),
),
),
SizedBox(height: 10),
Text(context.translate('6. Third-Party Links and Services','6.روابط وخدمات الجهات الخارجية'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
RichText(
text: TextSpan(
text:context.translate('The App may contain ',
'قد يحتوي التطبيق على روابط لمواقع إلكترونية أو خدمات خارجية (مثل بوابات الحكومة الإماراتية). لا تتحمل FCSC أي مسؤولية عن ممارسات الخصوصية الخاصة بالجهات الخارجية. يجب على المستخدمين مراجعة سياسات الخصوصية الخاصة بهم.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'links to external websites or services ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('(e.g., UAE government portals). FCSC is ','',),),
TextSpan(text:context.translate( 'not responsible ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate('for third-party privacy practices. Users should review their respective ',''),),
TextSpan(text:context.translate( 'Privacy Policies.',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
],
),
),
SizedBox(height: 10),
Text( context.translate("7. Children's Privacy",'7.خصوصية الأطفال'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
RichText(
text: TextSpan(
text: context.translate('The App is not ','التطبيق غير مخصص للأطفال دون سن ١٣ عامًا. نحن لا نجمع بيانات من القاصرين عن قصد. يمكن للوالدين أو الأوصياء طلب إزالة أي بيانات تخص الأطفال عن طريق التواصل مع FCSC.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text:context.translate( 'intended for children under 13 years. ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text: context.translate('We do not knowingly collect data from minors. Parents or guardians may request the ',
''),
),
TextSpan(
text:context.translate( 'removal of any childs data ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate( 'by contacting FCSC.',''),),
],
),
),
SizedBox(height: 10),
Text(context.translate('8. Changes to This Privacy Policy','التغييرات على سياسة الخصوصية هذه'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
RichText(
text: TextSpan(
text: context.translate('We may update this Privacy Policy periodically to reflect changes in ',
'قد نقوم بتحديث سياسة الخصوصية هذه بشكل دوري لتعكس التغييرات في القوانين أو التكنولوجيا أو ملاحظات المستخدمين. ستكون أحدث نسخة متاحة دائمًا داخل التطبيق.'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(
text:context.translate( 'laws, technology, or user feedback. ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate( 'The ',''),),
TextSpan(
text:context.translate( 'latest version will always be available ',''),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(text:context.translate( 'in the App.',''),),
],
),
),
Text(context.translate('9. Contact Information','9.معلومات الاتصال'),
style: TextStyle(fontSize: 17, color: Color(0xFF414042), fontFamily: 'Roboto', fontWeight: FontWeight.w600),) ,
SizedBox(height: 5),
Text( context.translate('For privacy-related inquiries, you may contact:' ,'للاستفسارات المتعلقة بالخصوصية، يمكنك التواصل معنا عبر:'),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
),
SizedBox(height: 20),
],
)
),
),
)
,);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,713 @@
import 'package:flutter/material.dart';
import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
class TermsOfUse extends StatelessWidget {
const TermsOfUse({super.key});
@override
Widget build(BuildContext context) {
return Theme(
data: ThemeData(
fontFamily: 'Roboto', // Set default font family for this page
textTheme: TextTheme(
bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81),),
bodyLarge: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w500),
),
),
child: Scaffold(
appBar: AppBar(
title:Text(context.translate(
'Terms & Conditions',
'الشروط والأحكام',
),
style: TextStyle(
fontSize:22,
color: Colors.black87,
fontWeight: FontWeight.w600,
// fontWeight: FontWeight.w500,
),
),
backgroundColor: Colors.white,
bottom: PreferredSize(
preferredSize: Size.fromHeight(1), // Height of the line
child: Container(
color: Colors.grey.shade300, // Line color
height: 1, // Line thickness
),
),
),
body: Container(
height: double.infinity,
color: Colors.white,
padding: EdgeInsets.all(16),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
context.translate(
'Welcome to UAE.Stat Terms of Use'
, 'مؤسسة المشاع الإبداعي نَسْبُ الـمُصنَّف 4.0 رخصة عمومية دولية'),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
),
SizedBox(height: 7),
RichText(
text: TextSpan(
text: context.translate(
'The data and information available through UAE.Stat are subject to ',
'يخضع المحتوى والبيانات المتاحة من خلال UAE.Stat',
),
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto',
height: 1.4,
),
children: [
TextSpan(
text: context.translate(
'Creative Commons Attribution ',
'لرخصة المشاع الإبداعي نَسْبُ المُصنَّف ',
),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto',
),
),
TextSpan(
text: context.translate(
'(CC BY 4.0)',
'(CC BY 4.0)،',
),
style: TextStyle(
color: Color(0xFF414042), // No bold
fontFamily: 'Roboto',
),
),
TextSpan(
text: context.translate(
' This means that the content of this site can be used and reused freely for commercial and non-commercial purposes.You are free to: ',
'مما يعني أنه يمكن استخدامه وإعادة استخدامه بحرية للأغراض التجارية وغير التجارية.يُسمح لك بـ:',
),
),
],
),
),
SizedBox(height: 10),
Text(context.translate(
'1.Terms of Use',
'1.الشروط والأحكام',
),
style: TextStyle(
fontSize:20,
color: Colors.black87,
fontWeight: FontWeight.w600,
// fontWeight: FontWeight.w500,
),
),
SizedBox(height: 5),
Text(
context.translate('You are free to:', 'يُسمح لك بـ:'),
style: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w500),
),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Share ',
'المشاركة '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate(' Copy and redistribute the material in any medium or format.',
'نسخ وإعادة توزيع المحتوى بأي وسيلة أو صيغة.',
))
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text:context.translate( 'Adapt ',
'التعديل '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:context.translate( 'Remix, transform, and build upon the material for any purpose, even commercially.',
'إعادة مزج، تعديل، أو البناء على المحتوى لأي غرض، بما في ذلك الأغراض التجارية.'),
)
],
),
),
),
],
),
],
),
),
Text( context.translate(
'The licensor cannot revoke these freedoms as long as you follow the license terms',
'لا يمكن للمرخِّص إلغاء هذه الحريات طالما أنك تتبع شروط الترخيص.')),
SizedBox(height: 8),
Text(
context.translate(
'2.License Terms'
, '2.شروط الترخيص',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Text(
context.translate('Under the following terms:', 'وفقًا للشروط التالية:'),
style: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w500),
),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Attribution ',' نَسْب المُصنَّف'),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
' Copy and redistribute the material in any medium or format.',
'يجب أن توفر الإسناد المناسب، وتضع رابط الترخيص، وتُوضِّح أي تعديلات أُجريت على المحتوى.',
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('No additional restrictions ','عدم فرض قيود إضافية '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'You may not impose legal or technological measures that restrict others from using the content as permitted.',
'لا يجوز فرض قيود قانونية أو تكنولوجية تحد من إمكانية استخدام المحتوى كما هو مسموح به في الترخيص.'
),
),
],
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'3.License Scope'
, '3.نطاق الترخيص',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Text(
context.translate('The Licensor grants you:', 'يمنحك المرخِّص:'),
style: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w400),
),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Text(
context.translate('A worldwide, royalty-free, non-exclusive, irrevocable license to:',
'ترخيصًا عالميًا، خاليًا من الإتاوات، غير حصري، وغير قابل للإلغاء لـ:'),
style: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w400),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Reproduce and share ','نسخ ومشاركة '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'the licensed material.',
'المواد المرخَّصة',
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('Modify and create ','تعديل وإنشاء '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'adapted material.',
'مواد مشتقة من المحتوى',
),
),
],
),
),
),
],
),
],
),
),
Text(context.translate('This license applies to all media formats, including future technologies.',
'ينطبق هذا الترخيص على جميع الوسائط والصيغ، بما في ذلك التقنيات المستقبلية.',),
style: TextStyle(fontSize: 16, color:Color(0xFF414042), fontFamily: 'Roboto',fontWeight: FontWeight.w400),
),
SizedBox(height: 8),
Text(
context.translate(
'4.Restrictions & Endorsement'
, '4.القيود والمصادقة',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('No Endorsement ','عدم المصادقة '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'You may not imply that the licensor endorses you or your use of the content.',
'لا يجوز لك الإيحاء بأن المرخِّص يدعمك أو يدعم استخدامك للمحتوى.',
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('No Patent or Trademark Rights ','التجارية '),
style: TextStyle(
fontWeight: FontWeight.w500,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'This license does not grant any patent or trademark rights.',
'لا يمنحك هذا الترخيص أي حقوق على براءات الاختراع أو العلامات التجارية.',
),
),
],
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'5.Liability Disclaimer'
, '5.إخلاء المسؤولية',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('The content is provided ','دون أي ضمانات '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('"as is" ', '"كما هو" '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'without any warranties.',
'يتم توفير المحتوى.'
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('The Licensor is ','دون أي ضمانات '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('not responsible ', 'أي مسؤولية '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'for any damages resulting from the use of the content.',
'عن أي أضرار تنتج عن استخدام المحتوى.'
),
),
],
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'6.Termination of License'
, '7.إنهاء الترخيص',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('If you ','إذا '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('violate the license terms ', 'انتهكت شروط الترخيص، '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
', your rights under this license terminate automatically.',
'فستنتهي حقوقك تلقائيًا.'
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('Rights may be reinstated ','يمكن استعادة الحقوق '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('if the violation is corrected within 30 days.', 'إذا تم تصحيح الانتهاك خلال 30 يومًا. '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
],
),
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
context.translate(
'7.Other Terms'
, '7.شروط إضافية',),
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),),
SizedBox(height: 5),
Padding(padding: EdgeInsets.only(left: 10,top: 5, bottom: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('The Licensor is not bound by ','لا يكون المرخِّص ملزمًا '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('any additional terms ', 'بأي شروط إضافية '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'unless explicitly agreed.',
' ما لم يتم الاتفاق عليها صراحةً.'
),
),
],
),
),
),
],
),
SizedBox(height: 3),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: context.translate('If any provision is ','لا يكون المرخِّص ملزمًا '),
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: <TextSpan>[
TextSpan(text: context.translate('unenforceable,', 'أي شرط غير قابل للتنفيذ، '),
style: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(
text: context.translate(
'the rest of the terms remain in effect.',
' تبقى بقية الشروط سارية المفعول.'
),
),
],
),
),
),
],
),
],
),
),
SizedBox(height: 10),
],
),
),
),
)
,);
}
}

View File

@ -764,6 +764,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
style: TextStyle(color: Color(0xFF898C81)),
children: [
TextSpan(
recognizer:TapGestureRecognizer()
..onTap = () => context.push('/terms&conditions'),
text: AppLocalizations.of(
context,
)!
@ -776,10 +778,6 @@ class _ProfileScreenState extends State<ProfileScreen> {
decorationColor: Color(0xFF985400),
decorationThickness: 1,
),
recognizer: TapGestureRecognizer()
..onTap = () {
// Add action for Terms & Conditions tap
},
),
TextSpan(
text: AppLocalizations.of(
@ -789,6 +787,9 @@ class _ProfileScreenState extends State<ProfileScreen> {
style: TextStyle(color: Color(0xFF898C81)),
),
TextSpan(
recognizer: TapGestureRecognizer()
..onTap = () => context.push('/privacy_policy'),
text: AppLocalizations.of(
context,
)!
@ -801,10 +802,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
decorationColor: Color(0xFF985400),
decorationThickness: 1,
),
recognizer: TapGestureRecognizer()
..onTap = () {
// Add action for Privacy Policy tap
},
),
TextSpan(
text: AppLocalizations.of(

View File

@ -857,11 +857,8 @@ class _EditProfileState extends State<EditProfile> {
TextDecoration
.underline,
),
recognizer:
TapGestureRecognizer()
..onTap = () {
// Add action for Terms & Conditions tap
},
recognizer:TapGestureRecognizer()
..onTap = () => context.push('/terms&conditions'),
),
TextSpan(
text: AppLocalizations
@ -887,11 +884,9 @@ class _EditProfileState extends State<EditProfile> {
TextDecoration
.underline,
),
recognizer:
TapGestureRecognizer()
..onTap = () {
// Add action for Privacy Policy tap
},
recognizer: TapGestureRecognizer()
..onTap = () => context.push('/privacy_policy'),
),
TextSpan(
text: AppLocalizations

View File

@ -0,0 +1,169 @@
import 'package:flutter/material.dart';
import '../../custom_drawer_routes.dart';
class NotificationPage extends StatefulWidget {
@override
_NotificationPageState createState() => _NotificationPageState();
}
class _NotificationPageState extends State<NotificationPage> {
// Example notification data
List<Map<String, dynamic>> notifications = [
{"title": "Social datasets are updated", "date": "04 Nov 2024 08:25 PM", "category": "Social"},
{"title": "New feature updated", "date": "04 Nov 2024 08:25 PM", "category": "App updates"},
];
// Current selected tab index
int selectedTabIndex = 0;
// Tab categories
final List<String> tabs = ["All updates", "App updates", "Social", "Economy", "Environment", "Favourites"];
@override
Widget build(BuildContext context) {
// Filter notifications based on the selected tab
List<Map<String, dynamic>> filteredNotifications = selectedTabIndex == 0
? notifications
: notifications.where((notification) => notification["category"] == tabs[selectedTabIndex]).toList();
return BaseScaffold(
title: Text('Notification'),
body: Column(
children: [
TabBarHeader(
tabs: tabs,
selectedIndex: selectedTabIndex,
onTabSelected: (index) {
setState(() {
selectedTabIndex = index;
});
},
),
Expanded(
child: selectedTabIndex == 1
? Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
'assets/backgrounds/Notification/Update_notific.png',
height: 200,
),
SizedBox(height: 16),
Text(
filteredNotifications.isNotEmpty
? filteredNotifications[0]['title']
: 'No updates available.',
style: TextStyle(fontSize: 16, color: Colors.grey),
textAlign: TextAlign.center,
),
],
),
)
: filteredNotifications.isEmpty
? Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.info_outline, size: 100, color: Colors.grey[400]),
SizedBox(height: 16),
Text(
'No notifications available.',
style: TextStyle(fontSize: 16, color: Colors.grey),
),
],
),
)
: ListView.builder(
itemCount: filteredNotifications.length,
itemBuilder: (context, index) {
final notification = filteredNotifications[index];
return NotificationTile(
title: notification["title"]!,
date: notification["date"]!,
category: notification["category"]!,
);
},
),
),
],
),
);
}
}
class TabBarHeader extends StatelessWidget {
final List<String> tabs;
final int selectedIndex;
final ValueChanged<int> onTabSelected;
const TabBarHeader({
required this.tabs,
required this.selectedIndex,
required this.onTabSelected,
});
@override
Widget build(BuildContext context) {
return Container(
color: Colors.grey[200],
padding: const EdgeInsets.symmetric(vertical: 8),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: tabs.asMap().entries.map((entry) {
int index = entry.key;
String text = entry.value;
return Row(
children: [
TextButton(
onPressed: () => onTabSelected(index),
style: ButtonStyle(
foregroundColor: MaterialStateProperty.resolveWith((states) {
return selectedIndex == index ? Color(0xFF985400) : Colors.grey[700];
}),
),
child: Text(text),
),
if (index < tabs.length - 1) buildDivider(),
],
);
}).toList(),
),
),
);
}
Widget buildDivider() {
return Container(
height: 20,
child: const VerticalDivider(
color: Colors.grey,
thickness: 1,
width: 16,
),
);
}
}
class NotificationTile extends StatelessWidget {
final String title;
final String date;
final String category;
const NotificationTile({
required this.title,
required this.date,
required this.category,
});
@override
Widget build(BuildContext context) {
return ListTile(
leading: Icon(Icons.circle, size: 12, color: category == "Social" ? Colors.red : Colors.grey),
title: Text(title, style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Text(date),
);
}
}

View File

@ -20,17 +20,14 @@ class aboutFCSC extends StatelessWidget {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Getting Started',
style: TextStyle(
fontFamily: 'Roboto',
fontSize: 22,
color: Color(0xFF7DAFBC),
// fontWeight: FontWeight.normal,
fontWeight: FontWeight.w500,
),
title: Text(
'Getting Started',
style: TextStyle(
fontFamily: 'Roboto',
fontSize: 22,
color: Color(0xFF7DAFBC),
// fontWeight: FontWeight.normal,
fontWeight: FontWeight.w500,
),
),
body: Container(
@ -65,7 +62,7 @@ class aboutFCSC extends StatelessWidget {
text: TextSpan(
text: 'The ',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto', height: 1.4,),
children: const <TextSpan>[
TextSpan(
text:

View File

@ -27,16 +27,13 @@ class GetStarted extends StatelessWidget {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Getting Started',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Getting Started',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(
@ -49,96 +46,43 @@ class GetStarted extends StatelessWidget {
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
'How to Get Started',
style: TextStyle(
fontSize: 20,
child: Text('How to Get Started',
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
),),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 0.36,
width:MediaQuery.of(context).size.width,
height:MediaQuery.of(context).size.height * 0.36,
child: Image.asset(
'assets/user_guide/getStarted.png',
fit: BoxFit.contain,
),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'1. Download the app from the App Store or Google Play Store.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
Text(
'1. Download the app from the App Store or Google Play Store.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'2. Log in to unlock advanced features or continue as a guest.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'3. Log in to unlock advanced features or continue as a guest.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
SizedBox(height: 2,),
Text(
'2. Log in to access advanced features',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.1,
height:MediaQuery.of(context).size.height * 0.12,
),
Align(
alignment: Alignment.bottomCenter,
child: fcscBanner,
),
SizedBox(
height: 25,
),
SizedBox(height: 25,),
],
),
),

View File

@ -47,157 +47,160 @@ class AppFeatures extends StatelessWidget {
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
'App Features',
style: TextStyle(
fontSize: 20,
child: Text('App Features',
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
),),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 0.36,
width:MediaQuery.of(context).size.width,
height:MediaQuery.of(context).size.height * 0.36,
child: Image.asset(
'assets/user_guide/appFeatures.png',
fit: BoxFit.contain,
),
),
Text(
'1.Comprehensive Statistics:',
style: TextStyle(
fontSize: 16,
Text('1. Comprehensive Statistics:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 6.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text:
'Access detailed datasets across categories such as Economy, Environment, Social, ',
style: TextStyle(
color: Color(0xFF898C81),
fontSize: 16,
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Economy, Environment, Social, ',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
Padding(
padding: const EdgeInsets.only(left:7.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 6.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Access detailed datasets across categories such as ',
style: TextStyle(
color:Color(0xFF898C81),
fontSize: 16,
fontFamily: 'Roboto'
),
children: const <TextSpan>[
TextSpan(text: 'Economy, Environment, Social, ',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text: 'and more.'),
],
),
),
TextSpan(text: 'and more.'),
],
),
),
],
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Explore statistics presented as smart metrics, graphs, and charts for better understanding.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Explore statistics presented as smart metrics, graphs, and charts for better understanding.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
],
),
),
SizedBox(height: 8),
Text(
' 2. Drilldown Navigation:',
style: TextStyle(
fontSize: 16,
Text('2. Drilldown Navigation:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
Padding(
padding: const EdgeInsets.only(left:7.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Start with high-level categories and drill down to specific KPIs and metrics for deeper insights.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Start with high-level categories and drill down to specific KPIs and metrics for deeper insights.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
],
),
),
SizedBox(height: 8),
Text(
'3. Interactive Visualizations:',
style: TextStyle(
fontSize: 16,
Text('3. Interactive Visualizations:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
Padding(
padding: const EdgeInsets.only(left:7.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'View trends and relationships with interactive graphs and charts, including bar graphs, line charts, and more.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(
height: 25,
],
),
),
SizedBox(height: 25,),
Align(
alignment: Alignment.bottomCenter,
child: fcscBanner,
),
SizedBox(
height: 25,
),
SizedBox(height: 25,),
],
),
),

View File

@ -25,16 +25,13 @@ class ChangeMyPassword extends StatelessWidget {
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'App Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'App Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(
@ -47,18 +44,17 @@ class ChangeMyPassword extends StatelessWidget {
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
'How to Change My Password',
style: TextStyle(
fontSize: 20,
child: Text('How to Change My Password',
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
),),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 0.36,
width:MediaQuery.of(context).size.width,
height:MediaQuery.of(context).size.height * 0.36,
child: Image.asset(
'assets/user_guide/changePassword.png',
fit: BoxFit.contain,
@ -68,281 +64,279 @@ class ChangeMyPassword extends StatelessWidget {
'Changing your password helps keep your account secure. Follow these steps to update your password:',
),
SizedBox(height: 12),
Text(
'Steps to Change Password',
style: TextStyle(
fontSize: 22,
Text('Steps to Change Password',
style:TextStyle(
fontSize:22,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Text(
'1. Access the Change Password Page:',
style: TextStyle(
fontSize: 16,
Text('1. Access the Change Password Page:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'From the Profile page, tap on the ',
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: '"Change Password"',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'From the Profile page, tap on the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: '"Change Password"',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' link at the bottom.',)
],
),
),
TextSpan(
text: ' link at the bottom.',
)
],
),
),
],
),
),
],
],
),
),
SizedBox(height: 8),
Text(
'2. Enter Old Password:',
style: TextStyle(
fontSize: 16,
Text('2. Enter Old Password:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Enter your current password in the first field.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(height: 8),
Text(
'3. Set a New Password:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Enter your new password in the second field.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Re-enter the new password in the third field for confirmation.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(height: 8),
Text(
'4. Password Requirements:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Your new password must be different from the previously used password.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(height: 8),
Text(
'5. Save Your Password:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap the ',
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Save ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Enter your current password in the first field.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
TextSpan(
text: 'button',
)
],
),
),
],
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'A confirmation message will appear: “Password has been successfully updated.”',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
],
),
),
SizedBox(height: 8),
Text(
'6. Re-Login:',
style: TextStyle(
fontSize: 16,
Text('3. Set a New Password:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Enter your new password in the second field.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Log in again using your new password to continue using the app',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Re-enter the new password in the third field for confirmation.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
),
],
],
),
),
SizedBox(
height: 25,
SizedBox(height: 8),
Text('4. Password Requirements:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Your new password must be different from the previously used password.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
],
),
),
SizedBox(height: 8),
Text('5. Save Your Password:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Save ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:'button',)
],
),
),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'A confirmation message will appear: “Password has been successfully updated.”',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
],
),
),
SizedBox(height: 8),
Text('6. Re-Login:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left:8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Log in again using your new password to continue using the app',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
],
),
),
SizedBox(height: 25,),
Align(
alignment: Alignment.bottomCenter,
child: fcscBanner,
),
SizedBox(
height: 25,
),
SizedBox(height: 25,),
],
),
),
),

View File

@ -25,16 +25,13 @@ class EditMyProfile extends StatelessWidget {
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'App Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'App Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(
@ -47,18 +44,17 @@ class EditMyProfile extends StatelessWidget {
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
'How to Edit My Profile',
style: TextStyle(
fontSize: 20,
child: Text('How to Edit My Profile',
style:
TextStyle(
fontSize:20,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
),),
),
SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 0.36,
width:MediaQuery.of(context).size.width,
height:MediaQuery.of(context).size.height * 0.36,
child: Image.asset(
'assets/user_guide/editProfile.png',
fit: BoxFit.contain,
@ -68,413 +64,369 @@ class EditMyProfile extends StatelessWidget {
'Editing your profile allows you to update specific information while ensuring that critical details remain secure. Follow the steps below to update your profile:',
),
SizedBox(height: 12),
Text(
'Steps to Edit Profile',
style: TextStyle(
fontSize: 22,
Text('Steps to Edit Profile',
style:TextStyle(
fontSize:22,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Text(
'1. Access the Profile Page:',
style: TextStyle(
fontSize: 16,
Text('1. Access the Profile Page:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap on the ',
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: '"Profile"',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
' option from the navigation bar at the top left corner of the screen.',
)
],
),
)),
],
),
SizedBox(height: 8),
Text(
'2. Editable Fields:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Full Name:',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
' Tap the text box to enter your name (up to 40 alphanumeric characters).',
)
],
),
)),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Date of Birth: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
' Use the calendar dropdown to select your date of birth.',
)
],
),
)),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Country/Region: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
' Choose your current location from the dropdown menu.',
),
],
),
)),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'User Image: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
'Tap on the avatar icon to upload or change your profile picture.',
),
],
),
)),
],
),
SizedBox(height: 8),
Text(
'3. Non-Editable Fields:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Username ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text: 'and ',
),
TextSpan(
text: 'Email Id: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text:
'These fields cannot be edited to ensure the integrity of your account.',
),
],
),
)),
],
),
SizedBox(height: 8),
Text(
'4. Agree to Terms and Conditions:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Ensure that the checkbox for "I agree to Terms & Conditions and Privacy Policy" is selected before saving changes.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(height: 8),
Text(
'4. Save Your Changes:',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap the ',
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Save',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text: ' button at the bottom of the screen.',
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [ Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap on the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: '"Profile"',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' option from the navigation bar at the top left corner of the screen.',)
],
),
)
],
),
),
),
],
],
),],
),
),
SizedBox(height: 8),
Text('2. Editable Fields:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Full Name:',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' Tap the text box to enter your name (up to 40 alphanumeric characters).',)
],
),
)
),
],
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'A confirmation dialog will appear with the message: “Are you sure you want to save this page? Once saved, you will not be able to change your name or date of birth.”',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Date of Birth: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' Use the calendar dropdown to select your date of birth.',)
],
),
)
),
],
),
),
],
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Country/Region: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' Choose your current location from the dropdown menu.',),
],
),
)
),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'User Image: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:'Tap on the avatar icon to upload or change your profile picture.',),
],
),
)
),
],
),
],
),
),
SizedBox(height: 8),
Text('3. Non-Editable Fields:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Username ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:'and ',),
TextSpan(text: 'Email Id: ',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:'These fields cannot be edited to ensure the integrity of your account.',),
],
),
)
),
],
),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Select ',
style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(
text: 'Confirm',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
],
),
),
SizedBox(height: 8),
Text('4. Agree to Terms and Conditions:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'Ensure that the checkbox for "I agree to Terms & Conditions and Privacy Policy" is selected before saving changes.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
TextSpan(
text: ' to save the changes',
),
TextSpan(
text: ' Cancel',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'),
),
TextSpan(
text: ' to go back.',
),
],
),
),
],
),
),
],
],
),
),
SizedBox(
height: 25,
SizedBox(height: 8),
Text('5. Save Your Changes:',
style:TextStyle(
fontSize:16,
color: Color(0xFF414042),
fontWeight: FontWeight.w600,
),
),
SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: RichText(
text: TextSpan(
text: 'Tap the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Save',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' button at the bottom of the screen.',)
],
),
),
),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'A confirmation dialog will appear with the message: “Are you sure you want to save this page? Once saved, you will not be able to change your name or date of birth.”',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),
),
],
),
SizedBox(height: 8),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(top : 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
), // Bullet point
SizedBox(width: 8), // Space between bullet and text
Expanded(
child:RichText(
text: TextSpan(
text: 'Select ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
children: const <TextSpan>[
TextSpan(text: 'Confirm',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' to save the changes',),
TextSpan(text: ' Cancel',
style: TextStyle(
fontWeight: FontWeight.w600,
color: Color(0xFF414042),
fontFamily: 'Roboto'
),),
TextSpan(text:' to go back.',),
],
),
),
),
],
),
],
),
),
SizedBox(height: 25,),
Align(
alignment: Alignment.bottomCenter,
child: fcscBanner,
),
SizedBox(
height: 25,
),
SizedBox(height: 25,),
],
),
),
),

View File

@ -25,16 +25,13 @@ class HowUseTheApp extends StatelessWidget {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(

View File

@ -28,16 +28,13 @@ class Purpose extends StatelessWidget {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(

View File

@ -28,16 +28,13 @@ class StayUpdate extends StatelessWidget {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(
@ -82,7 +79,7 @@ class StayUpdate extends StatelessWidget {
SizedBox(width: 8), // Space between bullet and text
Expanded(
child: Text(
'The app regularly updates datasets and features to reflect the latest information. Notifications will alertyou about new data or improvements.',
'The app regularly updates datasets and features to reflect the latest information. Notifications will alert you about new data or improvements.',
textAlign: TextAlign.justify, // Align the text
softWrap: true,
),

View File

@ -48,7 +48,7 @@ class WhoUseTheApp extends StatelessWidget {
Align(
alignment: Alignment.topLeft,
child: Text(
'Who Use the App',
'Who can use the App?',
style: TextStyle(
fontSize: 20,
color: Color(0xFF414042),

View File

@ -20,17 +20,14 @@ class aboutTheApp extends StatelessWidget {
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Getting Started',
style: TextStyle(
fontSize: 22,
fontFamily: 'Roboto',
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Getting Started',
style: TextStyle(
fontSize: 22,
fontFamily: 'Roboto',
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(

View File

@ -17,16 +17,13 @@ class _FAQPageState extends State<FAQPage> {
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
' FAQs',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
' FAQs',
style: TextStyle(
fontSize: 22,
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: SafeArea(

View File

@ -21,17 +21,14 @@ class UsingFeatures extends StatelessWidget {
bottomColor: Colors.white,
appbarColor: Colors.white,
mycenterTitle: true,
title: Padding(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
fontFamily: 'Roboto',
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
title: Text(
'Key Features',
style: TextStyle(
fontSize: 22,
fontFamily: 'Roboto',
color: Color(0xFF7DAFBC),
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w500,
),
),
body: Container(
@ -78,7 +75,7 @@ class UsingFeatures extends StatelessWidget {
},
// tileColor: Colors.white,
title: Text(
'Who can use The App',
'Who can use The App?',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),
@ -107,7 +104,7 @@ class UsingFeatures extends StatelessWidget {
},
// tileColor: Colors.white,
title: Text(
'Purpose of the App ?',
'Purpose of the App',
style: TextStyle(
fontSize: 16,
color: Color(0xFF414042),

View File

@ -778,6 +778,11 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
),
),
if (userId != 'guest')
ListTile(
leading: Icon(Icons.notifications_none),
title: const Text('Notification'),
onTap: () => context.go('/notification'),
),
ListTile(
leading: Image.asset(
DrawerAssetIconPath.feedback,

View File

@ -123,6 +123,7 @@ flutter:
- assets/icons/drawer/feedback.png
- assets/icons/drawer/manageusr.png
- assets/feedback/disappointed.png
- assets/backgrounds/Notification/
- assets/feedback/frowning.png
- assets/feedback/neutral.png
- assets/feedback/smiling.png