back button changes

This commit is contained in:
venbaittech 2025-02-07 12:30:59 +05:30
parent e198cfaa7c
commit ffb2a6baf3
24 changed files with 2266 additions and 1951 deletions

View File

@ -301,7 +301,6 @@ 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/charts/screens/chart_screen.dart';
import 'package:uae_stat/presentation/Screens/demo_home2.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/Screens/online_offline_verification/internet_check.dart';
import 'package:uae_stat/presentation/routes/auth_routes/pocketbase_service.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/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/AboutTheApp/getStarted.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/user_guide/KeyFeatures/AppFeatures.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/user_guide/KeyFeatures/AppFeatures.dart';
@ -335,7 +334,6 @@ import '../presentation/routes/drawer_routes/Drawer Items/user_guide/faq_page.da
import '../presentation/routes/drawer_routes/Drawer Items/user_guide/features.dart'; import '../presentation/routes/drawer_routes/Drawer Items/user_guide/features.dart';
import '../presentation/routes/drawer_routes/Drawer Items/manage_users.dart'; import '../presentation/routes/drawer_routes/Drawer Items/manage_users.dart';
final pbService = PocketBaseService();
final FlutterSecureStorage _secureStorage = const FlutterSecureStorage(); final FlutterSecureStorage _secureStorage = const FlutterSecureStorage();
Future<String?> _checkSession() async { Future<String?> _checkSession() async {
@ -534,8 +532,7 @@ GoRoute(
name: 'getStarted', name: 'getStarted',
builder: (context, state) => GetStarted(), builder: (context, state) => GetStarted(),
), ),
] ]),
),
GoRoute( GoRoute(
path: '/faq', path: '/faq',
name: 'faq', name: 'faq',

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
class Competitiveness extends StatelessWidget { class Competitiveness extends StatelessWidget {
@ -8,16 +9,23 @@ class Competitiveness extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width; double mywidth = MediaQuery.of(context).size.width;
return BaseScaffold( return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
title: Center( title: Center(
child: SizedBox( child: SizedBox(
height: myheight / 5, height: myheight / 5,
width: mywidth / 3, width: mywidth / 3,
child: Image(image: AssetImage('assets/logos/uae_stat.png')))), child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
body: CompetitivenessState(context), body: CompetitivenessState(context),
),
); );
} }
Widget CompetitivenessState(BuildContext context) {return Center(child: Text("Competitiveness"));}
Widget CompetitivenessState(BuildContext context) {
return Center(child: Text("Competitiveness"));
}
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
@ -9,16 +10,23 @@ class CountryProfile extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width; double mywidth = MediaQuery.of(context).size.width;
return BaseScaffold( return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
title: Center( title: Center(
child: SizedBox( child: SizedBox(
height: myheight / 5, height: myheight / 5,
width: mywidth / 3, width: mywidth / 3,
child: Image(image: AssetImage('assets/logos/uae_stat.png')))), child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
body: CountryProfileWidget(), body: CountryProfileWidget(),
),
); );
} }
} }
class CountryProfileWidget extends StatelessWidget { class CountryProfileWidget extends StatelessWidget {
const CountryProfileWidget({super.key}); const CountryProfileWidget({super.key});
@ -28,99 +36,20 @@ class CountryProfileWidget extends StatelessWidget {
} }
} }
class HorizontalBarChart extends StatelessWidget { class HorizontalBarChart extends StatelessWidget {
final List<String> xAxisData = ['2019', '2020', '2021', '2022', '2023']; final List<String> xAxisData = ['2019', '2020', '2021', '2022', '2023'];
final List<double> yAxisData = [2, 4, 1, 5, 3]; final List<double> yAxisData = [2, 4, 1, 5, 3];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
return Scaffold( return Scaffold(
appBar: AppBar(title: Text('Horizontal Bar Chart')), // appBar: AppBar(title: Text('Horizontal Bar Chart')),
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
child: child: Center(
Container( child: Text('Coming Soon'),
height: myheight/4, )),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
boxShadow: [
BoxShadow(
color: Colors.black12,
blurRadius: 8,
offset: Offset(0, 4),
),
],
),
child:
Padding(
padding: const EdgeInsets.only(top: 16,left: 8.0,right: 8.0,bottom: 8.0),
child: BarChart(
BarChartData(
alignment: BarChartAlignment.spaceAround,
maxY: 8,
barTouchData: BarTouchData(enabled: false),
titlesData: FlTitlesData(
leftTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
interval: 2,
getTitlesWidget: (value, meta) {
return Padding(
padding: const EdgeInsets.only(right: 8.0),
child: Text('${value.toInt()}K'),
);
},
reservedSize: 60,
),
),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
getTitlesWidget: (value, meta) {
return Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Text(xAxisData[value.toInt()]),
);
},
reservedSize: 40,
),
),
topTitles: AxisTitles(
sideTitles: SideTitles(showTitles: false), // Hides top titles
),
rightTitles: AxisTitles(
sideTitles: SideTitles(showTitles: false), // Hides right titles
),
),
gridData: FlGridData(show: false),
borderData: FlBorderData(show: false),
barGroups: List.generate(
xAxisData.length,
(index) => BarChartGroupData(
x: index,
barRods: [
BarChartRodData(
toY: yAxisData[index],
color: Colors.blueAccent,
//colors: [Colors.blueAccent],
borderRadius: BorderRadius.circular(4),
width: 20,
),
],
),
),
),
),
),
),
),
); );
} }
} }
@ -129,14 +58,6 @@ void main() {
runApp(MaterialApp(home: HorizontalBarChart())); runApp(MaterialApp(home: HorizontalBarChart()));
} }
// void main() { // void main() {
// runApp(MaterialApp(home: HorizontalBarChart())); // runApp(MaterialApp(home: HorizontalBarChart()));
// } // }

View File

@ -12,16 +12,33 @@ import 'package:http/http.dart' as http;
class UaeNumbers extends StatelessWidget { class UaeNumbers extends StatelessWidget {
const UaeNumbers({super.key}); const UaeNumbers({super.key});
@override
// Widget build(BuildContext context) {
// double myheight = MediaQuery.of(context).size.height;
// double mywidth = MediaQuery.of(context).size.width;
// return BaseScaffold(
// title: Text("UAE Numbers"),
// body:
// //EconomicDashboard(),
// //EconomyExpandTile()
// uaenumberWidget());
// }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
double mywidth = MediaQuery.of(context).size.width; double mywidth = MediaQuery.of(context).size.width;
return BaseScaffold(
return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
title: Text("UAE Numbers"), title: Text("UAE Numbers"),
body: body: uaenumberWidget(),
//EconomicDashboard(), ),
//EconomyExpandTile() );
uaenumberWidget());
} }
} }
@ -83,12 +100,15 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(30.0), borderRadius: BorderRadius.circular(30.0),
border: Border.all(width: 1,color: Color(0xFFAA8E83)),), border: Border.all(width: 1, color: Color(0xFFAA8E83)),
),
child: TextField( child: TextField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Search", hintText: "Search",
prefixIcon: Icon(Icons.search, prefixIcon: Icon(
color: Color(0xFFAA8E83),), Icons.search,
color: Color(0xFFAA8E83),
),
border: InputBorder.none, border: InputBorder.none,
contentPadding: contentPadding:
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0), EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
@ -297,7 +317,6 @@ class CustomExpandableTile extends StatefulWidget {
final bool isExpanded; final bool isExpanded;
final ValueChanged<int> onTap; final ValueChanged<int> onTap;
const CustomExpandableTile({ const CustomExpandableTile({
required this.title, required this.title,
required this.titleBackgroundColor, required this.titleBackgroundColor,
@ -305,7 +324,6 @@ class CustomExpandableTile extends StatefulWidget {
required this.index, required this.index,
required this.isExpanded, required this.isExpanded,
required this.onTap, required this.onTap,
}); });
@override @override
@ -330,7 +348,6 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
children: [ children: [
GestureDetector( GestureDetector(
onTap: () => widget.onTap(widget.index), onTap: () => widget.onTap(widget.index),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.titleBackgroundColor, color: widget.titleBackgroundColor,

View File

@ -20,7 +20,6 @@ import 'package:uae_stat/presentation/components/lang_toggle.dart';
import 'package:uae_stat/presentation/components/my_bottom_nav_bar.dart'; import 'package:uae_stat/presentation/components/my_bottom_nav_bar.dart';
import 'package:uae_stat/presentation/components/space.dart'; import 'package:uae_stat/presentation/components/space.dart';
import 'package:uae_stat/presentation/components/themed_text_field.dart'; import 'package:uae_stat/presentation/components/themed_text_field.dart';
import 'package:uae_stat/presentation/routes/auth_routes/pocketbase_service.dart';
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart'; import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../../Screens/auth_verification/registration.dart'; import '../../Screens/auth_verification/registration.dart';
@ -32,7 +31,6 @@ import '../../components/my_toggle.dart';
class LoginRoute extends HookConsumerWidget { class LoginRoute extends HookConsumerWidget {
final pb = PocketBase('https://pb.venbait.in'); final pb = PocketBase('https://pb.venbait.in');
final FlutterSecureStorage _secureStorage = const FlutterSecureStorage(); final FlutterSecureStorage _secureStorage = const FlutterSecureStorage();
final _pbService = PocketBaseService();
// final _pb = PocketBase('http://127.0.0.1:8090'); // final _pb = PocketBase('http://127.0.0.1:8090');
// final bool isLoginScreen; // Pass `true` if this is the login screen // final bool isLoginScreen; // Pass `true` if this is the login screen
// LoginRoute({Key? key, required this.isLoginScreen}) : super(key: key); // LoginRoute({Key? key, required this.isLoginScreen}) : super(key: key);

View File

@ -1,66 +0,0 @@
import 'package:pocketbase/pocketbase.dart';
import 'package:shared_preferences/shared_preferences.dart';
class PocketBaseService {
final PocketBase pb = PocketBase('https://pb.venbait.in');
// Save session to local storage
Future<void> saveSession() async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('pb_auth', pb.authStore.token);
await prefs.setString('pb_user', pb.authStore.model.toJson());
await prefs.setInt('pb_auth_time', DateTime.now().millisecondsSinceEpoch);
}
// Load session from local storage
Future<bool> loadSession() async {
final prefs = await SharedPreferences.getInstance();
final token = prefs.getString('pb_auth');
final userJson = prefs.getString('pb_user');
if (token != null && userJson != null) {
pb.authStore
.save(token, RecordModel.fromJson(userJson as Map<String, dynamic>));
if (!pb.authStore.isValid || isSessionExpired(prefs)) {
await clearSession();
return false;
}
return true;
}
return false;
}
// Check if the session is expired (4 days)
bool isSessionExpired(SharedPreferences prefs) {
final savedTime = prefs.getInt('pb_auth_time') ?? 0;
final currentTime = DateTime.now().millisecondsSinceEpoch;
const sessionDuration = Duration(days: 4);
return (currentTime - savedTime) > sessionDuration.inMilliseconds;
}
// User login
Future<bool> loginUser(String email, String password) async {
try {
await pb.collection('users').authWithPassword(email, password);
await saveSession();
return true;
} catch (e) {
return false;
}
}
// User logout
Future<void> logoutUser() async {
pb.authStore.clear();
await clearSession();
}
// Clear session from local storage
Future<void> clearSession() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove('pb_auth');
await prefs.remove('pb_user');
await prefs.remove('pb_auth_time');
}
}

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
class BookMark extends ConsumerStatefulWidget { class BookMark extends ConsumerStatefulWidget {
const BookMark({super.key}); const BookMark({super.key});
@ -59,9 +59,14 @@ class _BookMarkState extends ConsumerState<BookMark> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final filteredList = dataList.where((item) => item['isBookmark'] == true) final filteredList =
.toList(); dataList.where((item) => item['isBookmark'] == true).toList();
return BaseScaffold( return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
title: Text('Bookmark'), title: Text('Bookmark'),
body: Padding( body: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
@ -78,6 +83,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
}, },
), ),
), ),
),
); );
} }
@ -88,10 +94,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
debugPrint("Box clicked: ${data['title']}"); debugPrint("Box clicked: ${data['title']}");
}, },
child: Container( child: Container(
width: MediaQuery width: MediaQuery.of(context).size.width * 0.4,
.of(context)
.size
.width * 0.4,
height: 100, height: 100,
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -131,14 +134,16 @@ class _BookMarkState extends ConsumerState<BookMark> {
setState(() { setState(() {
// Change isOpen to false when icon is clicked // Change isOpen to false when icon is clicked
int index = dataList.indexWhere( int index = dataList.indexWhere(
(item) => item['title'] == data['title'],); (item) => item['title'] == data['title'],
);
if (index != -1) { if (index != -1) {
dataList[index]['isBookmark'] = false; dataList[index]['isBookmark'] = false;
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
content: Text( content: Text(
'Removed From Bookmark', 'Removed From Bookmark',
style: TextStyle(color: Color(0xFF2F692C), style: TextStyle(
color: Color(0xFF2F692C),
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
), ),
backgroundColor: Color(0xFFD6E9C6), backgroundColor: Color(0xFFD6E9C6),
@ -150,7 +155,8 @@ class _BookMarkState extends ConsumerState<BookMark> {
SnackBar( SnackBar(
content: Text( content: Text(
'Failed to Remove', 'Failed to Remove',
style: TextStyle(color: Color(0xFFEB5F24), style: TextStyle(
color: Color(0xFFEB5F24),
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
), ),
backgroundColor: Color(0xFF544C4C), backgroundColor: Color(0xFF544C4C),

View File

@ -424,9 +424,16 @@ class _EditProfileState extends State<EditProfile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseScaffold( return PopScope(
title: Text(AppLocalizations.of(context)!.my_profile, onPopInvokedWithResult: (didPop, result) {
style: TextStyle(color: Color(0xFF985400)),), if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
title: Text(
AppLocalizations.of(context)!.my_profile,
style: TextStyle(color: Color(0xFF985400)),
),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Padding( child: Padding(
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0), padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
@ -540,13 +547,15 @@ padding: const EdgeInsets.only(
? FutureBuilder( ? FutureBuilder(
future: _loadImage(_avatarUrl), future: _loadImage(_avatarUrl),
builder: (context, snapshot) { builder: (context, snapshot) {
if (snapshot.connectionState == if (snapshot
.connectionState ==
ConnectionState.waiting) { ConnectionState.waiting) {
return Center( return Center(
child: child:
CircularProgressIndicator(), CircularProgressIndicator(),
); );
} else if (snapshot.hasError) { } else if (snapshot
.hasError) {
return Center( return Center(
child: Icon(Icons.error), child: Icon(Icons.error),
); );
@ -573,13 +582,15 @@ padding: const EdgeInsets.only(
}, },
) )
: Align( : Align(
alignment: Alignment.bottomRight, alignment:
Alignment.bottomRight,
child: GestureDetector( child: GestureDetector(
onTap: onTap:
_pickImage, // Call `_pickImage` on tap _pickImage, // Call `_pickImage` on tap
child: CircleAvatar( child: CircleAvatar(
radius: 15, radius: 15,
backgroundColor: Colors.white, backgroundColor:
Colors.white,
child: Icon( child: Icon(
Icons.camera_alt, Icons.camera_alt,
size: 15, size: 15,
@ -607,7 +618,8 @@ padding: const EdgeInsets.only(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text( Text(
AppLocalizations.of(context)!.register_name, AppLocalizations.of(context)!
.register_name,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
@ -757,19 +769,21 @@ padding: const EdgeInsets.only(
), ),
SizedBox(height: 10), SizedBox(height: 10),
MouseRegion( MouseRegion(
onEnter: (_) => onEnter: (_) => setState(
setState(() => _isHoveringDropdown = true), () => _isHoveringDropdown = true),
onExit: (_) => onExit: (_) => setState(
setState(() => _isHoveringDropdown = false), () => _isHoveringDropdown = false),
child: DropdownButtonFormField<String>( child: DropdownButtonFormField<String>(
value: _selectedCountry, value: _selectedCountry,
decoration: InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), borderRadius:
BorderRadius.circular(8),
), ),
labelText: 'Select', labelText: 'Select',
), ),
icon: Icon(Icons.keyboard_arrow_down_sharp, icon: Icon(
Icons.keyboard_arrow_down_sharp,
color: _isHoveringDropdown color: _isHoveringDropdown
? Colors.black ? Colors.black
: Colors.grey), : Colors.grey),
@ -792,7 +806,8 @@ padding: const EdgeInsets.only(
SizedBox(height: 20), SizedBox(height: 20),
if (!_isProfileCompleted) // Conditional rendering if (!_isProfileCompleted) // Conditional rendering
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
Row( Row(
children: [ children: [
@ -828,14 +843,15 @@ padding: const EdgeInsets.only(
color: Colors.black), color: Colors.black),
children: [ children: [
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations
.of(
context, context,
)! )!
.terms_conditions, .terms_conditions,
style: TextStyle( style: TextStyle(
// color: Colors.blue, // color: Colors.blue,
color: color: Color(
Color(0xFF648CBA), 0xFF648CBA),
decoration: decoration:
TextDecoration TextDecoration
.underline, .underline,
@ -847,7 +863,8 @@ padding: const EdgeInsets.only(
}, },
), ),
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations
.of(
context, context,
)! )!
.t_and, .t_and,
@ -856,13 +873,15 @@ padding: const EdgeInsets.only(
), ),
), ),
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations
.of(
context, context,
)! )!
.privacy_policy, .privacy_policy,
style: TextStyle( style: TextStyle(
// color: Colors.blue, // color: Colors.blue,
color: Color(0xFF648CBA), color: Color(
0xFF648CBA),
decoration: decoration:
TextDecoration TextDecoration
.underline, .underline,
@ -874,7 +893,8 @@ padding: const EdgeInsets.only(
}, },
), ),
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations
.of(
context, context,
)! )!
.conditions, .conditions,
@ -886,7 +906,8 @@ padding: const EdgeInsets.only(
), ),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: 2, maxLines: 2,
overflow: TextOverflow.visible, overflow:
TextOverflow.visible,
softWrap: true, softWrap: true,
), ),
], ],
@ -975,13 +996,16 @@ padding: const EdgeInsets.only(
), ),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, // Center the content mainAxisAlignment: MainAxisAlignment
.center, // Center the content
children: [ children: [
Text( Text(
AppLocalizations.of(context)!.save, AppLocalizations.of(context)!.save,
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
SizedBox(width: 8), // Add space between text and icon SizedBox(
width:
8), // Add space between text and icon
Image.asset( Image.asset(
MiscIconAssetPath.save, MiscIconAssetPath.save,
color: Colors.white, color: Colors.white,
@ -991,7 +1015,6 @@ padding: const EdgeInsets.only(
], ],
), ),
) )
], ],
), ),
), ),
@ -1002,7 +1025,7 @@ padding: const EdgeInsets.only(
), ),
), ),
//bottomNavigationBar: MyBottomNavBar(), //bottomNavigationBar: MyBottomNavBar(),
); ));
} }
} }

View File

@ -237,12 +237,19 @@ class _FeedbackFormState extends State<FeedbackForm>
// final userName = uri.queryParameters['userName'] ?? 'Guest User'; // final userName = uri.queryParameters['userName'] ?? 'Guest User';
final userName = GoRouterState.of(context).extra as String? ?? 'Guest User'; final userName = GoRouterState.of(context).extra as String? ?? 'Guest User';
return BaseScaffold( return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
// title: Text("Feedback"), // title: Text("Feedback"),
title: Text( title: Text(
AppLocalizations.of(context)!.feedback_title, AppLocalizations.of(context)!.feedback_title,
style: TextStyle( style: TextStyle(
fontSize: 24, fontFamily: 'Roboto', fontWeight: FontWeight.w500), fontSize: 24,
fontFamily: 'Roboto',
fontWeight: FontWeight.w500),
), ),
// appBar: AppBar( // appBar: AppBar(
// backgroundColor: const Color(0xFFf8f9ff), // backgroundColor: const Color(0xFFf8f9ff),
@ -273,7 +280,7 @@ class _FeedbackFormState extends State<FeedbackForm>
: _buildFeedbackForm(), : _buildFeedbackForm(),
), ),
), ),
); ));
} }
Widget _buildFeedbackForm() { Widget _buildFeedbackForm() {
@ -308,7 +315,8 @@ class _FeedbackFormState extends State<FeedbackForm>
color: Color(0xff898C81), color: Color(0xff898C81),
), ),
), ),
),), ),
),
const SizedBox(height: 15), const SizedBox(height: 15),
Container( Container(
width: double.infinity, width: double.infinity,
@ -590,15 +598,18 @@ class _FeedbackFormState extends State<FeedbackForm>
FeedBackAssetPath.errorfb, FeedBackAssetPath.errorfb,
width: 40, width: 40,
height: 40, height: 40,
),])), ),
])),
// Icon(Icons.error, size: 80, color: Colors.red), // Icon(Icons.error, size: 80, color: Colors.red),
const SizedBox(height: 20), const SizedBox(height: 20),
const Text("Failed to Share Feedback", const Text(
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold, "Failed to Share Feedback",
color: Color(0xFF414042)),), style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Color(0xFF414042)),
),
const SizedBox(height: 10), const SizedBox(height: 10),
Text(AppLocalizations.of(context)!.feedback_failed_msg, Text(AppLocalizations.of(context)!.feedback_failed_msg,
style: const TextStyle(fontSize: 16, color: Color(0xFF898C81)), style: const TextStyle(fontSize: 16, color: Color(0xFF898C81)),
@ -642,7 +653,6 @@ class _FeedbackFormState extends State<FeedbackForm>
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
icon, // Assuming `icon` is an Icon widget icon, // Assuming `icon` is an Icon widget
SizedBox(height: 3), SizedBox(height: 3),
@ -697,7 +707,6 @@ class _FeedbackFormState extends State<FeedbackForm>
Function(double) onRatingUpdate, Function(double) onRatingUpdate,
) { ) {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text(label, Text(label,

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:pocketbase/pocketbase.dart'; import 'package:pocketbase/pocketbase.dart';
import 'package:uae_stat/presentation/components/my_bottom_nav_bar.dart'; import 'package:uae_stat/presentation/components/my_bottom_nav_bar.dart';
@ -224,16 +225,20 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final Map<String, String> statusOptions = { final Map<String, String> statusOptions = {
'Approved': AppLocalizations.of(context)!.approved, 'Approved': AppLocalizations.of(context)!.approved,
'Denied': AppLocalizations.of(context)!.denied, 'Denied': AppLocalizations.of(context)!.denied,
'Pending': AppLocalizations.of(context)!.pending, 'Pending': AppLocalizations.of(context)!.pending,
}; };
double myheight = MediaQuery.of(context).size.height; double myheight = MediaQuery.of(context).size.height;
return BaseScaffold(
return PopScope(
onPopInvokedWithResult: (didPop, result) {
if (didPop) return;
context.go('/myhomepage');
},
child: BaseScaffold(
// title: Text("Manage User"), // title: Text("Manage User"),
title: Text( title: Text(
AppLocalizations.of(context)!.manage_user, AppLocalizations.of(context)!.manage_user,
@ -274,14 +279,18 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
}, },
), ),
DataColumn( DataColumn(
label: Text( AppLocalizations.of(context)!.email_id,), label: Text(
AppLocalizations.of(context)!.email_id,
),
onSort: (columnIndex, ascending) { onSort: (columnIndex, ascending) {
_sort((user) => user.emailId.toLowerCase(), _sort((user) => user.emailId.toLowerCase(),
columnIndex, ascending); columnIndex, ascending);
}, },
), ),
DataColumn( DataColumn(
label: Text(AppLocalizations.of(context)!.reg_date,), label: Text(
AppLocalizations.of(context)!.reg_date,
),
onSort: (columnIndex, ascending) { onSort: (columnIndex, ascending) {
_sort( _sort(
(user) => DateFormat('dd/MM/yyyy') (user) => DateFormat('dd/MM/yyyy')
@ -292,7 +301,9 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
}, },
), ),
DataColumn( DataColumn(
label: Text(AppLocalizations.of(context)!.status,), label: Text(
AppLocalizations.of(context)!.status,
),
onSort: (columnIndex, ascending) { onSort: (columnIndex, ascending) {
_sort((user) => user.status.toLowerCase(), _sort((user) => user.status.toLowerCase(),
columnIndex, ascending); columnIndex, ascending);
@ -327,13 +338,15 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
DataCell( DataCell(
DropdownButton<String>( DropdownButton<String>(
value: user.status, value: user.status,
items: statusOptions.entries.map((status) { items:
statusOptions.entries.map((status) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: status.key, value: status.key,
child: Text( child: Text(
status.value, status.value,
style: TextStyle( style: TextStyle(
color: getStatusColor(status.key),), color: getStatusColor(status.key),
),
), ),
); );
}).toList(), }).toList(),
@ -356,6 +369,7 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
), ),
), ),
), ),
),
); );
} }
} }

View File

@ -14,15 +14,16 @@ class aboutFCSC extends StatelessWidget {
height: 56, height: 56,
alignment: Alignment.center, alignment: Alignment.center,
); );
return BaseScaffold( showDivider: true, return BaseScaffold(
showBackButton: true, showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Getting Started', child: Text(
'Getting Started',
style: TextStyle( style: TextStyle(
fontFamily: 'Roboto', fontFamily: 'Roboto',
fontSize: 22, fontSize: 22,
@ -36,17 +37,18 @@ class aboutFCSC extends StatelessWidget {
width: double.infinity, width: double.infinity,
color: Colors.white, color: Colors.white,
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
child: Column( child: Column(children: [
children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('About FCSC', child: Text(
'About FCSC',
style: TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontFamily: 'Roboto', fontFamily: 'Roboto',
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -56,23 +58,26 @@ class aboutFCSC extends StatelessWidget {
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
), ),
SizedBox(height: 5,), SizedBox(
height: 5,
),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: 'The ', text: 'The ',
style: TextStyle( style: TextStyle(
color:Colors.grey, color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
fontSize: 16,
fontFamily: 'Roboto'
),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: ' Federal Competitiveness and Statistics Centre (FCSC),', TextSpan(
text:
' Federal Competitiveness and Statistics Centre (FCSC),',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text: ' in your App is designed to provide registered and approved users with access to accurate and comprehensive statistics about the UAE. The app serves as a centralized platform for exploring key datasets, trends, and insights across various sectors.'), TextSpan(
text:
' in your App is designed to provide registered and approved users with access to accurate and comprehensive statistics about the UAE. The app serves as a centralized platform for exploring key datasets, trends, and insights across various sectors.'),
], ],
), ),
), ),
@ -81,9 +86,11 @@ class aboutFCSC extends StatelessWidget {
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
] height: 25,
), ),
),); ]),
),
);
} }
} }

View File

@ -21,15 +21,16 @@ class GetStarted extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showBackButton: true, showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Getting Started', child: Text(
'Getting Started',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -48,13 +49,14 @@ class GetStarted extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('How to Get Started', child: Text(
style: 'How to Get Started',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -69,7 +71,11 @@ class GetStarted extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -86,7 +92,11 @@ class GetStarted extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -103,7 +113,11 @@ class GetStarted extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -122,12 +136,14 @@ class GetStarted extends StatelessWidget {
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
),); ),
);
} }
} }

View File

@ -19,15 +19,16 @@ class AppFeatures extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showBackButton: true, showDivider: true,
bottomColor: Colors.white, bottomColor: Colors.white,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +47,14 @@ class AppFeatures extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('App Features', child: Text(
style: 'App Features',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -62,7 +64,8 @@ class AppFeatures extends StatelessWidget {
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
), ),
Text('1.Comprehensive Statistics:', Text(
'1.Comprehensive Statistics:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -81,19 +84,20 @@ class AppFeatures extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'Access detailed datasets across categories such as Economy, Environment, Social, ', text:
'Access detailed datasets across categories such as Economy, Environment, Social, ',
style: TextStyle( style: TextStyle(
color: Color(0xFF898C81), color: Color(0xFF898C81),
fontSize: 16, fontSize: 16,
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Economy, Environment, Social, ', TextSpan(
text: 'Economy, Environment, Social, ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text: 'and more.'), TextSpan(text: 'and more.'),
], ],
), ),
@ -106,7 +110,11 @@ class AppFeatures extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -118,9 +126,9 @@ class AppFeatures extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text(' 2. Drilldown Navigation:', Text(
' 2. Drilldown Navigation:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -133,7 +141,11 @@ class AppFeatures extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -146,7 +158,8 @@ class AppFeatures extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('3. Interactive Visualizations:', Text(
'3. Interactive Visualizations:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -159,7 +172,11 @@ class AppFeatures extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -171,23 +188,21 @@ class AppFeatures extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -19,15 +19,16 @@ class ChangeMyPassword extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showDivider: true,
bottomColor: Colors.white, bottomColor: Colors.white,
showBackButton: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('App Features', child: Text(
'App Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +47,14 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('How to Change My Password', child: Text(
style: 'How to Change My Password',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -66,7 +68,8 @@ class ChangeMyPassword extends StatelessWidget {
'Changing your password helps keep your account secure. Follow these steps to update your password:', 'Changing your password helps keep your account secure. Follow these steps to update your password:',
), ),
SizedBox(height: 12), SizedBox(height: 12),
Text('Steps to Change Password', Text(
'Steps to Change Password',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -74,7 +77,8 @@ class ChangeMyPassword extends StatelessWidget {
), ),
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('1. Access the Change Password Page:', Text(
'1. Access the Change Password Page:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -87,22 +91,32 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'From the Profile page, tap on the ', text: 'From the Profile page, tap on the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: '"Change Password"', TextSpan(
text: '"Change Password"',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' link at the bottom.',) TextSpan(
text: ' link at the bottom.',
)
], ],
), ),
), ),
@ -110,7 +124,8 @@ class ChangeMyPassword extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('2. Enter Old Password:', Text(
'2. Enter Old Password:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -136,7 +151,8 @@ class ChangeMyPassword extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('3. Set a New Password:', Text(
'3. Set a New Password:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -149,7 +165,11 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -166,7 +186,11 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -179,7 +203,8 @@ class ChangeMyPassword extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('4. Password Requirements:', Text(
'4. Password Requirements:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -192,7 +217,11 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -205,7 +234,8 @@ class ChangeMyPassword extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('5. Save Your Password:', Text(
'5. Save Your Password:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -218,22 +248,32 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'Tap the ', text: 'Tap the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Save ', TextSpan(
text: 'Save ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:'button',) TextSpan(
text: 'button',
)
], ],
), ),
), ),
@ -245,7 +285,11 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -258,7 +302,8 @@ class ChangeMyPassword extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('6. Re-Login:', Text(
'6. Re-Login:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -271,7 +316,11 @@ class ChangeMyPassword extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -283,23 +332,21 @@ class ChangeMyPassword extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -19,15 +19,16 @@ class EditMyProfile extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showBackButton: true, showDivider: true,
bottomColor: Colors.white, bottomColor: Colors.white,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('App Features', child: Text(
'App Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +47,14 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('How to Edit My Profile', child: Text(
style: 'How to Edit My Profile',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -66,7 +68,8 @@ 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:', '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), SizedBox(height: 12),
Text('Steps to Edit Profile', Text(
'Steps to Edit Profile',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -74,7 +77,8 @@ class EditMyProfile extends StatelessWidget {
), ),
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('1. Access the Profile Page:', Text(
'1. Access the Profile Page:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -87,30 +91,41 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'Tap on the ', text: 'Tap on the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: '"Profile"', TextSpan(
text: '"Profile"',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' option from the navigation bar at the top left corner of the screen.',) TextSpan(
text:
' option from the navigation bar at the top left corner of the screen.',
)
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('2. Editable Fields:', Text(
'2. Editable Fields:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -129,19 +144,25 @@ class EditMyProfile extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Full Name:', TextSpan(
text: 'Full Name:',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' Tap the text box to enter your name (up to 40 alphanumeric characters).',) TextSpan(
text:
' Tap the text box to enter your name (up to 40 alphanumeric characters).',
)
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
@ -156,19 +177,25 @@ class EditMyProfile extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Date of Birth: ', TextSpan(
text: 'Date of Birth: ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' Use the calendar dropdown to select your date of birth.',) TextSpan(
text:
' Use the calendar dropdown to select your date of birth.',
)
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
@ -183,19 +210,25 @@ class EditMyProfile extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Country/Region: ', TextSpan(
text: 'Country/Region: ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' Choose your current location from the dropdown menu.',), TextSpan(
text:
' Choose your current location from the dropdown menu.',
),
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
@ -210,23 +243,30 @@ class EditMyProfile extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'User Image: ', TextSpan(
text: 'User Image: ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:'Tap on the avatar icon to upload or change your profile picture.',), TextSpan(
text:
'Tap on the avatar icon to upload or change your profile picture.',
),
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('3. Non-Editable Fields:', Text(
'3. Non-Editable Fields:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -245,30 +285,40 @@ class EditMyProfile extends StatelessWidget {
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Username ', TextSpan(
text: 'Username ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:'and ',), TextSpan(
TextSpan(text: 'Email Id: ', text: 'and ',
),
TextSpan(
text: 'Email Id: ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:'These fields cannot be edited to ensure the integrity of your account.',), TextSpan(
text:
'These fields cannot be edited to ensure the integrity of your account.',
),
], ],
), ),
) )),
),
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('4. Agree to Terms and Conditions:', Text(
'4. Agree to Terms and Conditions:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -281,7 +331,11 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -294,7 +348,8 @@ class EditMyProfile extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('4. Save Your Changes:', Text(
'4. Save Your Changes:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -307,22 +362,32 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'Tap the ', text: 'Tap the ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Save', TextSpan(
text: 'Save',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' button at the bottom of the screen.',) TextSpan(
text: ' button at the bottom of the screen.',
)
], ],
), ),
), ),
@ -335,7 +400,11 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -353,52 +422,63 @@ class EditMyProfile extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
text: 'Select ', text: 'Select ',
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'), style: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
fontFamily: 'Roboto'),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'Confirm', TextSpan(
text: 'Confirm',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' to save the changes',), TextSpan(
TextSpan(text: ' Cancel', text: ' to save the changes',
),
TextSpan(
text: ' Cancel',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text:' to go back.',), TextSpan(
text: ' to go back.',
),
], ],
), ),
), ),
), ),
], ],
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -19,15 +19,16 @@ class HowUseTheApp extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showBackButton: true, showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +47,14 @@ class HowUseTheApp extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('How to Use the App', child: Text(
style: 'How to Use the App',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -62,7 +64,8 @@ class HowUseTheApp extends StatelessWidget {
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
), ),
Text('1. Registration and Approval:', Text(
'1. Registration and Approval:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -75,7 +78,11 @@ class HowUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -88,7 +95,8 @@ class HowUseTheApp extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('2. Login and Navigation:', Text(
'2. Login and Navigation:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -101,7 +109,11 @@ class HowUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -114,7 +126,8 @@ class HowUseTheApp extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('3. Access Data:', Text(
'3. Access Data:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -127,7 +140,11 @@ class HowUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -140,7 +157,8 @@ class HowUseTheApp extends StatelessWidget {
], ],
), ),
SizedBox(height: 8), SizedBox(height: 8),
Text('4. Bookmark Metrics:', Text(
'4. Bookmark Metrics:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -153,7 +171,11 @@ class HowUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -165,23 +187,21 @@ class HowUseTheApp extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -16,18 +16,22 @@ class Purpose extends StatelessWidget {
data: ThemeData( data: ThemeData(
fontFamily: 'Roboto', // Set default font family for this page fontFamily: 'Roboto', // Set default font family for this page
textTheme: TextTheme( textTheme: TextTheme(
bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81),), bodyMedium: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
), ),
), ),
child: BaseScaffold( showDivider: true, ),
showBackButton: true, child: BaseScaffold(
showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +50,14 @@ class Purpose extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('Purpose of the App', child: Text(
style: 'Purpose of the App',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -68,7 +73,11 @@ class Purpose extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -78,16 +87,17 @@ class Purpose extends StatelessWidget {
style: TextStyle( style: TextStyle(
color: Color(0xFF898C81), color: Color(0xFF898C81),
fontSize: 16, fontSize: 16,
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),
children: const <TextSpan>[ children: const <TextSpan>[
TextSpan(text: 'official statistics ', TextSpan(
text: 'official statistics ',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xFF414042), color: Color(0xFF414042),
fontFamily: 'Roboto' fontFamily: 'Roboto'),
),), ),
TextSpan(text: 'on the UAE in an accessible format.'), TextSpan(
text: 'on the UAE in an accessible format.'),
], ],
), ),
), ),
@ -99,7 +109,11 @@ class Purpose extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -116,7 +130,11 @@ class Purpose extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -128,23 +146,21 @@ class Purpose extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 40,), SizedBox(
height: 40,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -16,18 +16,22 @@ class StayUpdate extends StatelessWidget {
data: ThemeData( data: ThemeData(
fontFamily: 'Roboto', // Set default font family for this page fontFamily: 'Roboto', // Set default font family for this page
textTheme: TextTheme( textTheme: TextTheme(
bodyMedium: TextStyle(fontSize: 16, color:Color(0xFF898C81),), bodyMedium: TextStyle(
fontSize: 16,
color: Color(0xFF898C81),
), ),
), ),
child: BaseScaffold( showDivider: true, ),
showBackButton: true, child: BaseScaffold(
showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +50,14 @@ class StayUpdate extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('Stay Updated', child: Text(
style: 'Stay Updated',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -68,7 +73,11 @@ class StayUpdate extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -80,24 +89,21 @@ class StayUpdate extends StatelessWidget {
), ),
], ],
), ),
SizedBox(
SizedBox(height: 150,), height: 150,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -19,15 +19,16 @@ class WhoUseTheApp extends StatelessWidget {
bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)), bodyMedium: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
), ),
), ),
child: BaseScaffold( showDivider: true, child: BaseScaffold(
showBackButton: true, showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -46,13 +47,14 @@ class WhoUseTheApp extends StatelessWidget {
children: [ children: [
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('Who Use the App', child: Text(
style: 'Who Use the App',
TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),), ),
),
), ),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -62,7 +64,8 @@ class WhoUseTheApp extends StatelessWidget {
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
), ),
Text('This app is intended for:', Text(
'This app is intended for:',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -75,7 +78,11 @@ class WhoUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -92,7 +99,11 @@ class WhoUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -109,7 +120,11 @@ class WhoUseTheApp extends StatelessWidget {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),), child: Icon(
Icons.brightness_1,
size: 5,
color: Color(0xFF414042),
),
), // Bullet point ), // Bullet point
SizedBox(width: 8), // Space between bullet and text SizedBox(width: 8), // Space between bullet and text
Expanded( Expanded(
@ -121,23 +136,21 @@ class WhoUseTheApp extends StatelessWidget {
), ),
], ],
), ),
SizedBox(height: 50,), SizedBox(
height: 50,
),
Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
), ),
), ),
) ),
,); );
} }
} }

View File

@ -9,21 +9,21 @@ class aboutTheApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final fcscBanner = Image.asset( final fcscBanner = Image.asset(
BannerAssetPath.fcsc, BannerAssetPath.fcsc,
height: 56, height: 56,
alignment: Alignment.center, alignment: Alignment.center,
); );
return BaseScaffold( showDivider: true, return BaseScaffold(
showBackButton: true, showDivider: true,
bottomColor: Colors.white, bottomColor: Colors.white,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Getting Started', child: Text(
'Getting Started',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
fontFamily: 'Roboto', fontFamily: 'Roboto',
@ -41,7 +41,9 @@ class aboutTheApp extends StatelessWidget {
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -49,20 +51,24 @@ class aboutTheApp extends StatelessWidget {
context.push('/user-guide/aboutApp/aboutFCSC'); context.push('/user-guide/aboutApp/aboutFCSC');
}, },
tileColor: Colors.white, tileColor: Colors.white,
title: Text('About FCSC', title: Text(
'About FCSC',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontFamily: 'Roboto', fontFamily: 'Roboto',
),), ),
),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -70,7 +76,8 @@ class aboutTheApp extends StatelessWidget {
context.push('/user-guide/aboutApp/getStarted'); context.push('/user-guide/aboutApp/getStarted');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('How to Get Started?', title: Text(
'How to Get Started?',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -80,9 +87,9 @@ class aboutTheApp extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Spacer(), Spacer(),
@ -90,10 +97,12 @@ class aboutTheApp extends StatelessWidget {
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 25,), SizedBox(
height: 25,
),
], ],
), ),
),
),); );
} }
} }

View File

@ -13,14 +13,14 @@ class _FAQPageState extends State<FAQPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseScaffold( return BaseScaffold(
showBackButton: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
appbarColor: Colors.white, appbarColor: Colors.white,
bottomColor: Colors.white, bottomColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text(' FAQs', child: Text(
' FAQs',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
@ -43,181 +43,312 @@ class _FAQPageState extends State<FAQPage> {
), ),
), ),
), ),
), ),
); );
} }
} }
class QuestionAnswerScrollView extends StatelessWidget { class QuestionAnswerScrollView extends StatelessWidget {
const QuestionAnswerScrollView({super.key}); const QuestionAnswerScrollView({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final List<Map<String, dynamic>> questionsAndAnswers = [ final List<Map<String, dynamic>> questionsAndAnswers = [
{'question':'What is the purpose of this app?', 'answer': 'The app provides official UAE statistics across categories like Economy, Environment, and Social. It allows users to explore datasets, view trends, and access detailed metrics to make informed decisions.'}, {
{'question':'Do I need to create an account to use the app?', 'answer':RichText( 'question': 'What is the purpose of this app?',
'answer':
'The app provides official UAE statistics across categories like Economy, Environment, and Social. It allows users to explore datasets, view trends, and access detailed metrics to make informed decisions.'
},
{
'question': 'Do I need to create an account to use the app?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Yes, the app is strictly for registered and approved users. To access the data:\n\n', text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), 'Yes, the app is strictly for registered and approved users. To access the data:\n\n',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' 1. You need to sign up using the Register Now option on the login screen.\n', text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), ' 1. You need to sign up using the Register Now option on the login screen.\n',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' 2. Your registration must be approved by the admin.\n', text: ' 2. Your registration must be approved by the admin.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: " 3. Once approved, you can log in to access the app's features and datasets.\n\nGuest access is not available for this application.\n ", text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), " 3. Once approved, you can log in to access the app's features and datasets.\n\nGuest access is not available for this application.\n ",
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'How can I navigate through the app?','answer':'• Use the main categories on the homepage (e.g., Economy, Environment) to access subcategories and detailed KPIs.\n• Drill down into specific metrics or graphical views by tapping on a KPI.\n• Access additional features like Bookmarks or Profile through the navigation bar.\n'}, },
{'question':'What types of data are available?', 'answer':RichText( {
'question': 'How can I navigate through the app?',
'answer':
'• Use the main categories on the homepage (e.g., Economy, Environment) to access subcategories and detailed KPIs.\n• Drill down into specific metrics or graphical views by tapping on a KPI.\n• Access additional features like Bookmarks or Profile through the navigation bar.\n'
},
{
'question': 'What types of data are available?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'The app offers data on:\n\n', text: 'The app offers data on:\n\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' • Economy', text: ' • Economy',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: ' GDP, growth rates, and economic trends\n', text: ' GDP, growth rates, and economic trends\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' • Environment:', text: ' • Environment:',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: ' Electricity production, water consumption, and more.\n', text: ' Electricity production, water consumption, and more.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' • Social:', text: ' • Social:',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: ' Labor force distribution, participation rates, and demographic data.\n', text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), ' Labor force distribution, participation rates, and demographic data.\n',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'How do I bookmark a metric?', 'answer': RichText( },
{
'question': 'How do I bookmark a metric?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'When viewing a metric, tap on the', text: 'When viewing a metric, tap on the',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' Bookmark ', text: ' Bookmark ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'icon. Your bookmarks are accessible from the', text: 'icon. Your bookmarks are accessible from the',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'My Bookmarks', text: 'My Bookmarks',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'section in the navigation bar.\n', text: 'section in the navigation bar.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'Can I view the app in another language?', 'answer': RichText( },
{
'question': 'Can I view the app in another language?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Yes, the app supports both ', text: 'Yes, the app supports both ',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'English ', text: 'English ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'and', text: 'and',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: ' Arabic ', text: ' Arabic ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: '. You can toggle the language using the switch in the top-right corner of the app.\n', text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), '. You can toggle the language using the switch in the top-right corner of the app.\n',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'What happens if I forget my password?','answer':'Tap on the Forgot Password? link on the login page. Follow the steps to reset your password via your registered email address.\n'}, },
{'question':'Can I edit my profile details?','answer': 'Yes, you can edit specific fields such as Date of Birth and User Image. However, certain fields like Username and Email are non-editable for security reasons.\n'}, {
{'question':'How often is the data updated?','answer':'The app updates its datasets regularly to ensure users have access to the latest statistics. Notifications are sent whenever significant updates are made.\n'}, 'question': 'What happens if I forget my password?',
{'question':'What types of graphs and charts are available?','answer':'The app provides a variety of visualizations, including:\n • Line charts for trends.\n • Bar and column charts for comparisons.\n • Stacked charts for multi-layered data views.\n'}, 'answer':
{'question':'Can I share the data or charts?','answer':RichText( 'Tap on the Forgot Password? link on the login page. Follow the steps to reset your password via your registered email address.\n'
},
{
'question': 'Can I edit my profile details?',
'answer':
'Yes, you can edit specific fields such as Date of Birth and User Image. However, certain fields like Username and Email are non-editable for security reasons.\n'
},
{
'question': 'How often is the data updated?',
'answer':
'The app updates its datasets regularly to ensure users have access to the latest statistics. Notifications are sent whenever significant updates are made.\n'
},
{
'question': 'What types of graphs and charts are available?',
'answer':
'The app provides a variety of visualizations, including:\n • Line charts for trends.\n • Bar and column charts for comparisons.\n • Stacked charts for multi-layered data views.\n'
},
{
'question': 'Can I share the data or charts?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Yes, you can share data or charts directly from the app by tapping the ', text:
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), 'Yes, you can share data or charts directly from the app by tapping the ',
style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'Share ', text: 'Share ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'button available on most pages.\n', text: 'button available on most pages.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'What should I do if I encounter an issue?','answer':RichText( },
{
'question': 'What should I do if I encounter an issue?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'For technical support or feedback, navigate to the ', text: 'For technical support or feedback, navigate to the ',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'Help ', text: 'Help ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'section in the app and contact the support team.\n', text: 'section in the app and contact the support team.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
], ],
), ),
),}, ),
{'question':'How do I log out of the app?','answer':RichText( },
{
'question': 'How do I log out of the app?',
'answer': RichText(
text: TextSpan( text: TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Go to the ', text: 'Go to the ',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'Profile ', text: 'Profile ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
),
TextSpan( TextSpan(
text: 'section and tap the ', text: 'section and tap the ',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ), style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
),
TextSpan( TextSpan(
text: 'Logout ', text: 'Logout ',
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), style: TextStyle(
color: Color(0xFF414042),
fontWeight: FontWeight.w500,
fontSize: 16),
), ),
TextSpan( TextSpan(
text: 'option in the top-right corner.\n', text: 'option in the top-right corner.\n',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ) ], style: TextStyle(
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
)
],
), ),
),}, ),
},
]; ];
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
children: questionsAndAnswers.map((qa) => QuestionAnswerCard(qa: qa)).toList(), children: questionsAndAnswers
.map((qa) => QuestionAnswerCard(qa: qa))
.toList(),
), ),
); );
} }
} }
class QuestionAnswerCard extends StatefulWidget { // Use dynamic to accommodate RichText class QuestionAnswerCard extends StatefulWidget {
// Use dynamic to accommodate RichText
const QuestionAnswerCard({super.key, required this.qa}); const QuestionAnswerCard({super.key, required this.qa});
final Map<String, dynamic> qa; final Map<String, dynamic> qa;
@ -236,19 +367,22 @@ class _QuestionAnswerCardState extends State<QuestionAnswerCard> {
shape: Border( shape: Border(
bottom: BorderSide(width: 0.5, color: Colors.grey.shade300), bottom: BorderSide(width: 0.5, color: Colors.grey.shade300),
), ),
margin: EdgeInsets.symmetric(vertical: 0, ), margin: EdgeInsets.symmetric(
vertical: 0,
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
ListTile( ListTile(
dense: true, dense: true,
textColor: Color(0xFF414042), textColor: Color(0xFF414042),
title: Text( title: Text(
widget.qa['question']!, widget.qa['question']!,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 16), style: TextStyle(fontWeight: FontWeight.w500, fontSize: 16),
), ),
trailing: Icon(isExpanded ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down), trailing: Icon(isExpanded
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down),
onTap: () { onTap: () {
setState(() { setState(() {
isExpanded = !isExpanded; isExpanded = !isExpanded;
@ -257,12 +391,16 @@ class _QuestionAnswerCardState extends State<QuestionAnswerCard> {
), ),
if (isExpanded) if (isExpanded)
Padding( Padding(
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16,top: 0), padding: const EdgeInsets.only(
left: 16, right: 16, bottom: 16, top: 0),
child: widget.qa['answer'] is RichText child: widget.qa['answer'] is RichText
? widget.qa['answer'] ? widget.qa['answer']
: Text( : Text(
widget.qa['answer'] ?? '', widget.qa['answer'] ?? '',
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), style: TextStyle(
color: Colors.grey,
fontSize: 16,
fontFamily: 'Roboto'),
), ),
), ),
], ],

View File

@ -3,15 +3,11 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart'; import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
class UsingFeatures extends StatelessWidget { class UsingFeatures extends StatelessWidget {
const UsingFeatures({super.key}); const UsingFeatures({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final fcscBanner = Image.asset( final fcscBanner = Image.asset(
@ -19,15 +15,16 @@ class UsingFeatures extends StatelessWidget {
height: 56, height: 56,
alignment: Alignment.center, alignment: Alignment.center,
); );
return BaseScaffold( showDivider: true, return BaseScaffold(
showBackButton: true, showDivider: true,
dividerColor: Colors.grey[300], dividerColor: Colors.grey[300],
bottomColor: Colors.white, bottomColor: Colors.white,
appbarColor: Colors.white, appbarColor: Colors.white,
mycenterTitle: true, mycenterTitle: true,
title: Padding( title: Padding(
padding: EdgeInsets.only(bottom: 8.0), padding: EdgeInsets.only(bottom: 8.0),
child: Text('Key Features', child: Text(
'Key Features',
style: TextStyle( style: TextStyle(
fontSize: 22, fontSize: 22,
fontFamily: 'Roboto', fontFamily: 'Roboto',
@ -45,7 +42,9 @@ class UsingFeatures extends StatelessWidget {
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -53,20 +52,24 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/appFeatures'); context.push('/user-guide/features/appFeatures');
}, },
tileColor: Colors.white, tileColor: Colors.white,
title: Text('App Features', title: Text(
'App Features',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontFamily: 'Roboto', fontFamily: 'Roboto',
),), ),
),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -74,7 +77,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/whoUseApp'); context.push('/user-guide/features/whoUseApp');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('Who can use The App', title: Text(
'Who can use The App',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -84,15 +88,17 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -100,7 +106,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/purpose'); context.push('/user-guide/features/purpose');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('Purpose of the App ?', title: Text(
'Purpose of the App ?',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -110,15 +117,17 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -126,7 +135,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/howUseApp'); context.push('/user-guide/features/howUseApp');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('How to Use the App', title: Text(
'How to Use the App',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -136,15 +146,17 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -152,7 +164,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/stayUpdated'); context.push('/user-guide/features/stayUpdated');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('Stay Updated', title: Text(
'Stay Updated',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -162,15 +175,17 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -178,7 +193,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/changeMyPassword'); context.push('/user-guide/features/changeMyPassword');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('How to Change My Password', title: Text(
'How to Change My Password',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -188,15 +204,17 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
bottom: BorderSide(color: Colors.grey.shade300, width: 0.5), // Grey bottom line bottom: BorderSide(
color: Colors.grey.shade300,
width: 0.5), // Grey bottom line
), ),
), ),
child: ListTile( child: ListTile(
@ -204,7 +222,8 @@ class UsingFeatures extends StatelessWidget {
context.push('/user-guide/features/editMyProfile'); context.push('/user-guide/features/editMyProfile');
}, },
// tileColor: Colors.white, // tileColor: Colors.white,
title: Text('How to Edit My Profile', title: Text(
'How to Edit My Profile',
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
color: Color(0xFF414042), color: Color(0xFF414042),
@ -214,9 +233,9 @@ class UsingFeatures extends StatelessWidget {
), ),
trailing: Icon(Icons.keyboard_arrow_right), trailing: Icon(Icons.keyboard_arrow_right),
shape: Border( shape: Border(
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line bottom: BorderSide(
color: Colors.black, width: 3), // Grey bottom line
), ),
), ),
), ),
Spacer(), Spacer(),
@ -224,11 +243,12 @@ class UsingFeatures extends StatelessWidget {
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: fcscBanner, child: fcscBanner,
), ),
SizedBox(height: 30,), SizedBox(
height: 30,
),
], ],
), ),
),
),); );
} }
} }

View File

@ -634,7 +634,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
color: widget.dividerColor, // Line color color: widget.dividerColor, // Line color
height: 1, // Line thickness height: 1, // Line thickness
), ),
): null, )
: null,
actions: widget.actions ?? actions: widget.actions ??
[ [
// IconButton( // IconButton(
@ -672,10 +673,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
builder: (BuildContext context) { builder: (BuildContext context) {
return IconButton( return IconButton(
key: drawerKey, key: drawerKey,
color: (widget.showBackButton == true) color: Colors.black,
? Colors.white icon: const Icon(Icons.menu, size: 30),
: Colors.black,
icon: const Icon(Icons.menu),
onPressed: () { onPressed: () {
Scaffold.of(context).openDrawer(); Scaffold.of(context).openDrawer();
}, },
@ -854,7 +853,7 @@ onTap: () => context.go('/feedback', extra: userName),
), ),
])), ])),
bottomNavigationBar: BottomNavigationBar( bottomNavigationBar: BottomNavigationBar(
backgroundColor: widget.bottomColor ?? null, backgroundColor: Colors.white,
currentIndex: _getSelectedIndex(currentRoute), currentIndex: _getSelectedIndex(currentRoute),
onTap: (index) => _onItemTapped(context, index), onTap: (index) => _onItemTapped(context, index),
type: BottomNavigationBarType.fixed, type: BottomNavigationBarType.fixed,

View File

@ -128,6 +128,8 @@ flutter:
- assets/feedback/smilingopenface.png - assets/feedback/smilingopenface.png
- assets/feedback/errorfb.png - assets/feedback/errorfb.png
- assets/feedback/thumbfb.png - assets/feedback/thumbfb.png
- assets/user_guide/
- assets/app_tour/
fonts: fonts:
- family: Segoe - family: Segoe