back button changes
This commit is contained in:
parent
e198cfaa7c
commit
ffb2a6baf3
@ -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 {
|
||||||
@ -474,75 +472,74 @@ final GoRouter router = GoRouter(
|
|||||||
return ProfileScreen(userId: userId);
|
return ProfileScreen(userId: userId);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
GoRoute(
|
|
||||||
path: '/user-guide',
|
|
||||||
builder: (context, state) => Userguide(),
|
|
||||||
routes: <RouteBase>[
|
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/features',
|
path: '/user-guide',
|
||||||
name: 'features',
|
builder: (context, state) => Userguide(),
|
||||||
builder: (context, state) => UsingFeatures(),
|
|
||||||
routes: <RouteBase>[
|
routes: <RouteBase>[
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: 'whoUseApp',
|
path: '/features',
|
||||||
name: 'whoUseApp',
|
name: 'features',
|
||||||
builder: (context, state) => WhoUseTheApp(),
|
builder: (context, state) => UsingFeatures(),
|
||||||
|
routes: <RouteBase>[
|
||||||
|
GoRoute(
|
||||||
|
path: 'whoUseApp',
|
||||||
|
name: 'whoUseApp',
|
||||||
|
builder: (context, state) => WhoUseTheApp(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'howUseApp',
|
||||||
|
name: 'howUseApp',
|
||||||
|
builder: (context, state) => HowUseTheApp(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'purpose',
|
||||||
|
name: 'purpose',
|
||||||
|
builder: (context, state) => Purpose(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'stayUpdated',
|
||||||
|
name: 'stayUpdated',
|
||||||
|
builder: (context, state) => StayUpdate(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'changeMyPassword',
|
||||||
|
name: 'changeMyPassword',
|
||||||
|
builder: (context, state) => ChangeMyPassword(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'appFeatures',
|
||||||
|
name: 'appFeatures',
|
||||||
|
builder: (context, state) => AppFeatures(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'editMyProfile',
|
||||||
|
name: 'editMyProfile',
|
||||||
|
builder: (context, state) => EditMyProfile(),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: 'howUseApp',
|
path: 'aboutApp',
|
||||||
name: 'howUseApp',
|
builder: (context, state) => aboutTheApp(),
|
||||||
builder: (context, state) => HowUseTheApp(),
|
routes: <RouteBase>[
|
||||||
),
|
GoRoute(
|
||||||
|
path: 'aboutFCSC',
|
||||||
|
name: 'aboutFCSC',
|
||||||
|
builder: (context, state) => aboutFCSC(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: 'getStarted',
|
||||||
|
name: 'getStarted',
|
||||||
|
builder: (context, state) => GetStarted(),
|
||||||
|
),
|
||||||
|
]),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: 'purpose',
|
path: '/faq',
|
||||||
name: 'purpose',
|
name: 'faq',
|
||||||
builder: (context, state) => Purpose(),
|
builder: (context, state) => FAQPage(),
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: 'stayUpdated',
|
|
||||||
name: 'stayUpdated',
|
|
||||||
builder: (context, state) => StayUpdate(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: 'changeMyPassword',
|
|
||||||
name: 'changeMyPassword',
|
|
||||||
builder: (context, state) => ChangeMyPassword(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: 'appFeatures',
|
|
||||||
name: 'appFeatures',
|
|
||||||
builder: (context, state) => AppFeatures(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: 'editMyProfile',
|
|
||||||
name: 'editMyProfile',
|
|
||||||
builder: (context, state) => EditMyProfile(),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
GoRoute(
|
|
||||||
path: 'aboutApp',
|
|
||||||
builder: (context, state) => aboutTheApp(),
|
|
||||||
routes: <RouteBase>[
|
|
||||||
GoRoute(
|
|
||||||
path: 'aboutFCSC',
|
|
||||||
name: 'aboutFCSC',
|
|
||||||
builder: (context, state) => aboutFCSC(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: 'getStarted',
|
|
||||||
name: 'getStarted',
|
|
||||||
builder: (context, state) => GetStarted(),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: '/faq',
|
|
||||||
name: 'faq',
|
|
||||||
builder: (context, state) => FAQPage(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
// GoRoute(
|
// GoRoute(
|
||||||
// path: '/manageuser',
|
// path: '/manageuser',
|
||||||
// builder: (context, state) {
|
// builder: (context, state) {
|
||||||
|
|||||||
@ -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(
|
||||||
title: Center(
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
child: SizedBox(
|
if (didPop) return;
|
||||||
height: myheight / 5,
|
context.go('/myhomepage');
|
||||||
width: mywidth / 3,
|
},
|
||||||
child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
|
child: BaseScaffold(
|
||||||
body: CompetitivenessState(context),
|
title: Center(
|
||||||
|
child: SizedBox(
|
||||||
|
height: myheight / 5,
|
||||||
|
width: mywidth / 3,
|
||||||
|
child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
|
||||||
|
body: CompetitivenessState(context),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Widget CompetitivenessState(BuildContext context) {return Center(child: Text("Competitiveness"));}
|
|
||||||
|
Widget CompetitivenessState(BuildContext context) {
|
||||||
|
return Center(child: Text("Competitiveness"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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(
|
||||||
title: Center(
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
child: SizedBox(
|
if (didPop) return;
|
||||||
height: myheight / 5,
|
context.go('/myhomepage');
|
||||||
width: mywidth / 3,
|
},
|
||||||
child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
|
child: BaseScaffold(
|
||||||
body: CountryProfileWidget(),
|
title: Center(
|
||||||
|
child: SizedBox(
|
||||||
|
height: myheight / 5,
|
||||||
|
width: mywidth / 3,
|
||||||
|
child: Image(image: AssetImage('assets/logos/uae_stat.png')))),
|
||||||
|
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()));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,15 +98,18 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
|
|||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
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,
|
||||||
border: InputBorder.none,
|
color: Color(0xFFAA8E83),
|
||||||
|
),
|
||||||
|
border: InputBorder.none,
|
||||||
contentPadding:
|
contentPadding:
|
||||||
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
|
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
|
||||||
),
|
),
|
||||||
@ -109,7 +129,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
|
|||||||
|
|
||||||
return CustomExpandableTile(
|
return CustomExpandableTile(
|
||||||
index: index,
|
index: index,
|
||||||
isExpanded: expandedIndex == index, // Compare with expandedIndex
|
isExpanded: expandedIndex == index, // Compare with expandedIndex
|
||||||
onTap: (index) {
|
onTap: (index) {
|
||||||
setState(() {
|
setState(() {
|
||||||
expandedIndex = (expandedIndex == index) ? null : index;
|
expandedIndex = (expandedIndex == index) ? null : index;
|
||||||
@ -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
|
||||||
@ -329,8 +347,7 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
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,
|
||||||
|
|||||||
@ -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);
|
||||||
@ -241,13 +239,13 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
// maximumSize: Size.zero,
|
// maximumSize: Size.zero,
|
||||||
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
visualDensity: VisualDensity.compact,
|
visualDensity: VisualDensity.compact,
|
||||||
overlayColor: Colors.white
|
overlayColor: Colors.white
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
'Forgot Password?',
|
'Forgot Password?',
|
||||||
|
|||||||
@ -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');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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,23 +59,29 @@ 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(
|
||||||
title: Text('Bookmark'),
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
body: Padding(
|
if (didPop) return;
|
||||||
padding: const EdgeInsets.all(8.0),
|
context.go('/myhomepage');
|
||||||
child: GridView.builder(
|
},
|
||||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
child: BaseScaffold(
|
||||||
crossAxisCount: 2, // Two columns
|
title: Text('Bookmark'),
|
||||||
crossAxisSpacing: 10.0,
|
body: Padding(
|
||||||
mainAxisSpacing: 10.0,
|
padding: const EdgeInsets.all(8.0),
|
||||||
mainAxisExtent: 100,
|
child: GridView.builder(
|
||||||
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
|
crossAxisCount: 2, // Two columns
|
||||||
|
crossAxisSpacing: 10.0,
|
||||||
|
mainAxisSpacing: 10.0,
|
||||||
|
mainAxisExtent: 100,
|
||||||
|
),
|
||||||
|
itemCount: filteredList.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return _buildBox(filteredList[index], context);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
itemCount: filteredList.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return _buildBox(filteredList[index], context);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -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),
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -237,43 +237,50 @@ 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(
|
||||||
// title: Text("Feedback"),
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
title: Text(
|
if (didPop) return;
|
||||||
AppLocalizations.of(context)!.feedback_title,
|
context.go('/myhomepage');
|
||||||
style: TextStyle(
|
},
|
||||||
fontSize: 24, fontFamily: 'Roboto', fontWeight: FontWeight.w500),
|
child: BaseScaffold(
|
||||||
),
|
// title: Text("Feedback"),
|
||||||
// appBar: AppBar(
|
title: Text(
|
||||||
// backgroundColor: const Color(0xFFf8f9ff),
|
AppLocalizations.of(context)!.feedback_title,
|
||||||
// title: Text(AppLocalizations.of(context)!.feedback_title),
|
style: TextStyle(
|
||||||
// actions: [
|
fontSize: 24,
|
||||||
// Align(
|
fontFamily: 'Roboto',
|
||||||
// alignment: AlignmentDirectional.topEnd,
|
fontWeight: FontWeight.w500),
|
||||||
// child: LangToggle(
|
),
|
||||||
// onSaveFeedback: _saveFeedbackText,
|
// appBar: AppBar(
|
||||||
// onLoadFeedback: _loadFeedbackText,
|
// backgroundColor: const Color(0xFFf8f9ff),
|
||||||
// selectedEmojiIndex: _selectedEmojiIndex ?? 0,
|
// title: Text(AppLocalizations.of(context)!.feedback_title),
|
||||||
// easeOfUseRating: _easeOfUseRating,
|
// actions: [
|
||||||
// qualityRating: _qualityRating,
|
// Align(
|
||||||
// designRating: _designRating,
|
// alignment: AlignmentDirectional.topEnd,
|
||||||
// redundancyRating: _redundancyRating,
|
// child: LangToggle(
|
||||||
// ),
|
// onSaveFeedback: _saveFeedbackText,
|
||||||
// ),
|
// onLoadFeedback: _loadFeedbackText,
|
||||||
// ],
|
// selectedEmojiIndex: _selectedEmojiIndex ?? 0,
|
||||||
// ),
|
// easeOfUseRating: _easeOfUseRating,
|
||||||
body: Padding(
|
// qualityRating: _qualityRating,
|
||||||
padding: const EdgeInsets.only(
|
// designRating: _designRating,
|
||||||
top: 8.0, bottom: 16.0, left: 23.0, right: 23.0),
|
// redundancyRating: _redundancyRating,
|
||||||
child: SingleChildScrollView(
|
// ),
|
||||||
child: _isFeedbackSubmitted
|
// ),
|
||||||
? _buildThankYouMessage(userName)
|
// ],
|
||||||
: _isFeedbackFailed
|
// ),
|
||||||
? _buildFailureMessage()
|
body: Padding(
|
||||||
: _buildFeedbackForm(),
|
padding: const EdgeInsets.only(
|
||||||
),
|
top: 8.0, bottom: 16.0, left: 23.0, right: 23.0),
|
||||||
),
|
child: SingleChildScrollView(
|
||||||
);
|
child: _isFeedbackSubmitted
|
||||||
|
? _buildThankYouMessage(userName)
|
||||||
|
: _isFeedbackFailed
|
||||||
|
? _buildFailureMessage()
|
||||||
|
: _buildFeedbackForm(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildFeedbackForm() {
|
Widget _buildFeedbackForm() {
|
||||||
@ -295,20 +302,21 @@ class _FeedbackFormState extends State<FeedbackForm>
|
|||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
Center(
|
Center(
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
fit: BoxFit
|
fit: BoxFit
|
||||||
.scaleDown, // This will make the text smaller to fit within the available space
|
.scaleDown, // This will make the text smaller to fit within the available space
|
||||||
child: Text(
|
child: Text(
|
||||||
context.translate('How was your experience with us today?',
|
context.translate('How was your experience with us today?',
|
||||||
'كيف كانت تجربتك معنا اليوم؟'),
|
'كيف كانت تجربتك معنا اليوم؟'),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
color: Color(0xff898C81),
|
color: Color(0xff898C81),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),),
|
),
|
||||||
const SizedBox(height: 15),
|
const SizedBox(height: 15),
|
||||||
Container(
|
Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
@ -586,19 +594,22 @@ class _FeedbackFormState extends State<FeedbackForm>
|
|||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Image.asset(
|
Image.asset(
|
||||||
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),
|
||||||
@ -656,7 +666,7 @@ class _FeedbackFormState extends State<FeedbackForm>
|
|||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
// color: isSelected ? Colors.green : Colors.black,
|
// color: isSelected ? Colors.green : Colors.black,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -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,
|
||||||
|
|||||||
@ -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,135 +225,148 @@ 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(
|
|
||||||
// title: Text("Manage User"),
|
return PopScope(
|
||||||
title: Text(
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
AppLocalizations.of(context)!.manage_user,
|
if (didPop) return;
|
||||||
),
|
context.go('/myhomepage');
|
||||||
body: SingleChildScrollView(
|
},
|
||||||
child: Padding(
|
child: BaseScaffold(
|
||||||
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
|
// title: Text("Manage User"),
|
||||||
child: Column(
|
title: Text(
|
||||||
children: [
|
AppLocalizations.of(context)!.manage_user,
|
||||||
TextField(
|
),
|
||||||
decoration: InputDecoration(
|
body: SingleChildScrollView(
|
||||||
prefixIcon: const Icon(Icons.search),
|
child: Padding(
|
||||||
hintText: 'Search',
|
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
|
||||||
border: OutlineInputBorder(
|
child: Column(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
children: [
|
||||||
|
TextField(
|
||||||
|
decoration: InputDecoration(
|
||||||
|
prefixIcon: const Icon(Icons.search),
|
||||||
|
hintText: 'Search',
|
||||||
|
border: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
onChanged: filterUsers,
|
||||||
),
|
),
|
||||||
onChanged: filterUsers,
|
SizedBox(height: myheight / 40),
|
||||||
),
|
SingleChildScrollView(
|
||||||
SizedBox(height: myheight / 40),
|
scrollDirection: Axis.horizontal,
|
||||||
SingleChildScrollView(
|
child: ConstrainedBox(
|
||||||
scrollDirection: Axis.horizontal,
|
constraints: BoxConstraints(
|
||||||
child: ConstrainedBox(
|
minWidth: MediaQuery.of(context).size.width,
|
||||||
constraints: BoxConstraints(
|
),
|
||||||
minWidth: MediaQuery.of(context).size.width,
|
child: DataTable(
|
||||||
),
|
sortColumnIndex: _sortColumnIndex,
|
||||||
child: DataTable(
|
sortAscending: _isAscending,
|
||||||
sortColumnIndex: _sortColumnIndex,
|
columns: [
|
||||||
sortAscending: _isAscending,
|
DataColumn(
|
||||||
columns: [
|
label: Text(
|
||||||
DataColumn(
|
AppLocalizations.of(context)!.user_name,
|
||||||
label: Text(
|
),
|
||||||
AppLocalizations.of(context)!.user_name,
|
onSort: (columnIndex, ascending) {
|
||||||
|
_sort((user) => user.userName.toLowerCase(),
|
||||||
|
columnIndex, ascending);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
onSort: (columnIndex, ascending) {
|
DataColumn(
|
||||||
_sort((user) => user.userName.toLowerCase(),
|
label: Text(
|
||||||
columnIndex, ascending);
|
AppLocalizations.of(context)!.email_id,
|
||||||
},
|
),
|
||||||
),
|
onSort: (columnIndex, ascending) {
|
||||||
DataColumn(
|
_sort((user) => user.emailId.toLowerCase(),
|
||||||
label: Text( AppLocalizations.of(context)!.email_id,),
|
columnIndex, ascending);
|
||||||
onSort: (columnIndex, ascending) {
|
},
|
||||||
_sort((user) => user.emailId.toLowerCase(),
|
),
|
||||||
columnIndex, ascending);
|
DataColumn(
|
||||||
},
|
label: Text(
|
||||||
),
|
AppLocalizations.of(context)!.reg_date,
|
||||||
DataColumn(
|
),
|
||||||
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')
|
.parse(user.registrationDate),
|
||||||
.parse(user.registrationDate),
|
columnIndex,
|
||||||
columnIndex,
|
ascending,
|
||||||
ascending,
|
);
|
||||||
);
|
},
|
||||||
},
|
),
|
||||||
),
|
DataColumn(
|
||||||
DataColumn(
|
label: Text(
|
||||||
label: Text(AppLocalizations.of(context)!.status,),
|
AppLocalizations.of(context)!.status,
|
||||||
onSort: (columnIndex, ascending) {
|
),
|
||||||
_sort((user) => user.status.toLowerCase(),
|
onSort: (columnIndex, ascending) {
|
||||||
columnIndex, ascending);
|
_sort((user) => user.status.toLowerCase(),
|
||||||
},
|
columnIndex, ascending);
|
||||||
),
|
},
|
||||||
],
|
),
|
||||||
rows: filteredUserData.isEmpty
|
],
|
||||||
? [
|
rows: filteredUserData.isEmpty
|
||||||
DataRow(
|
? [
|
||||||
cells: List<DataCell>.generate(
|
DataRow(
|
||||||
4, // Ensure it matches the number of DataColumns
|
cells: List<DataCell>.generate(
|
||||||
(index) => DataCell(
|
4, // Ensure it matches the number of DataColumns
|
||||||
index == 0
|
(index) => DataCell(
|
||||||
? Text(
|
index == 0
|
||||||
'No results found',
|
? Text(
|
||||||
style: TextStyle(
|
'No results found',
|
||||||
fontStyle: FontStyle.italic),
|
style: TextStyle(
|
||||||
)
|
fontStyle: FontStyle.italic),
|
||||||
: const Text(
|
)
|
||||||
''), // Empty cells for other columns
|
: const Text(
|
||||||
placeholder: true,
|
''), // Empty cells for other columns
|
||||||
),
|
placeholder: true,
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
: filteredUserData.map((user) {
|
|
||||||
return DataRow(
|
|
||||||
cells: [
|
|
||||||
DataCell(Text(user.userName)),
|
|
||||||
DataCell(Text(user.emailId)),
|
|
||||||
DataCell(Text(user.registrationDate)),
|
|
||||||
DataCell(
|
|
||||||
DropdownButton<String>(
|
|
||||||
value: user.status,
|
|
||||||
items: statusOptions.entries.map((status) {
|
|
||||||
return DropdownMenuItem<String>(
|
|
||||||
value: status.key,
|
|
||||||
child: Text(
|
|
||||||
status.value,
|
|
||||||
style: TextStyle(
|
|
||||||
color: getStatusColor(status.key),),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
onChanged: (newStatus) {
|
|
||||||
print(user);
|
|
||||||
if (newStatus != null) {
|
|
||||||
_showConfirmationDialog(
|
|
||||||
user, newStatus);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
);
|
]
|
||||||
}).toList(),
|
: filteredUserData.map((user) {
|
||||||
|
return DataRow(
|
||||||
|
cells: [
|
||||||
|
DataCell(Text(user.userName)),
|
||||||
|
DataCell(Text(user.emailId)),
|
||||||
|
DataCell(Text(user.registrationDate)),
|
||||||
|
DataCell(
|
||||||
|
DropdownButton<String>(
|
||||||
|
value: user.status,
|
||||||
|
items:
|
||||||
|
statusOptions.entries.map((status) {
|
||||||
|
return DropdownMenuItem<String>(
|
||||||
|
value: status.key,
|
||||||
|
child: Text(
|
||||||
|
status.value,
|
||||||
|
style: TextStyle(
|
||||||
|
color: getStatusColor(status.key),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
onChanged: (newStatus) {
|
||||||
|
print(user);
|
||||||
|
if (newStatus != null) {
|
||||||
|
_showConfirmationDialog(
|
||||||
|
user, newStatus);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -12,78 +12,85 @@ class aboutFCSC extends StatelessWidget {
|
|||||||
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,
|
||||||
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(
|
||||||
style: TextStyle(
|
'Getting Started',
|
||||||
fontFamily: 'Roboto',
|
style: TextStyle(
|
||||||
fontSize: 22,
|
fontFamily: 'Roboto',
|
||||||
color: Color(0xFF7DAFBC),
|
fontSize: 22,
|
||||||
// fontWeight: FontWeight.normal,
|
color: Color(0xFF7DAFBC),
|
||||||
fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.normal,
|
||||||
),
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
),
|
||||||
width: double.infinity,
|
body: Container(
|
||||||
color: Colors.white,
|
width: double.infinity,
|
||||||
padding: EdgeInsets.all(16),
|
color: Colors.white,
|
||||||
child: Column(
|
padding: EdgeInsets.all(16),
|
||||||
children: [
|
child: Column(children: [
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.topLeft,
|
alignment: Alignment.topLeft,
|
||||||
child: Text('About FCSC',
|
child: Text(
|
||||||
|
'About FCSC',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20,
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontFamily: 'Roboto',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/user_guide/AboutFCSC.png',
|
||||||
|
fit: BoxFit.contain,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 5,
|
||||||
|
),
|
||||||
|
RichText(
|
||||||
|
text: TextSpan(
|
||||||
|
text: 'The ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
children: const <TextSpan>[
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
' Federal Competitiveness and Statistics Centre (FCSC),',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize:20,
|
fontWeight: FontWeight.bold,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontFamily: 'Roboto'),
|
||||||
fontFamily: 'Roboto',
|
|
||||||
),),
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width:MediaQuery.of(context).size.width,
|
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/user_guide/AboutFCSC.png',
|
|
||||||
fit: BoxFit.contain,
|
|
||||||
),
|
),
|
||||||
),
|
TextSpan(
|
||||||
SizedBox(height: 5,),
|
text:
|
||||||
RichText(
|
' 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.'),
|
||||||
text: TextSpan(
|
],
|
||||||
text: 'The ',
|
|
||||||
style: TextStyle(
|
|
||||||
color:Colors.grey,
|
|
||||||
fontSize: 16,
|
|
||||||
fontFamily: 'Roboto'
|
|
||||||
),
|
|
||||||
children: const <TextSpan>[
|
|
||||||
TextSpan(text: ' Federal Competitiveness and Statistics Centre (FCSC),',
|
|
||||||
style: TextStyle(
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color:Color(0xFF414042),
|
|
||||||
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.'),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Spacer(),
|
),
|
||||||
Align(
|
Spacer(),
|
||||||
alignment: Alignment.bottomCenter,
|
Align(
|
||||||
child: fcscBanner,
|
alignment: Alignment.bottomCenter,
|
||||||
),
|
child: fcscBanner,
|
||||||
SizedBox(height: 25,),
|
),
|
||||||
]
|
SizedBox(
|
||||||
),
|
height: 25,
|
||||||
),);
|
),
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,122 +12,138 @@ class GetStarted extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
return Theme(
|
return Theme(
|
||||||
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(
|
||||||
child: BaseScaffold( showDivider: true,
|
showDivider: true,
|
||||||
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(
|
||||||
child: Text('Getting Started',
|
'Getting Started',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize:22,
|
fontSize: 22,
|
||||||
color: Color(0xFF7DAFBC),
|
color: Color(0xFF7DAFBC),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
body: Container(
|
||||||
body: Container(
|
height: double.infinity,
|
||||||
height: double.infinity,
|
color: Colors.white,
|
||||||
color: Colors.white,
|
padding: EdgeInsets.all(16),
|
||||||
padding: EdgeInsets.all(16),
|
child: SingleChildScrollView(
|
||||||
child: SingleChildScrollView(
|
child: Column(
|
||||||
child: Column(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
Align(
|
||||||
Align(
|
alignment: Alignment.topLeft,
|
||||||
alignment: Alignment.topLeft,
|
child: Text(
|
||||||
child: Text('How to Get Started',
|
'How to Get Started',
|
||||||
style:
|
style: TextStyle(
|
||||||
TextStyle(
|
fontSize: 20,
|
||||||
fontSize:20,
|
color: Color(0xFF414042),
|
||||||
color: Color(0xFF414042),
|
fontWeight: FontWeight.w600,
|
||||||
fontWeight: FontWeight.w600,
|
),
|
||||||
),),
|
),
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width:MediaQuery.of(context).size.width,
|
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/user_guide/getStarted.png',
|
|
||||||
fit: BoxFit.contain,
|
|
||||||
),
|
),
|
||||||
),
|
SizedBox(
|
||||||
Row(
|
width: MediaQuery.of(context).size.width,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
children: [
|
child: Image.asset(
|
||||||
Padding(
|
'assets/user_guide/getStarted.png',
|
||||||
padding: const EdgeInsets.only(top : 8.0),
|
fit: BoxFit.contain,
|
||||||
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
|
|
||||||
), // Bullet point
|
|
||||||
SizedBox(width: 8), // Space between bullet and text
|
|
||||||
Expanded(
|
|
||||||
child: Text(
|
|
||||||
'1. Download the app from the App Store or Google Play Store.',
|
|
||||||
textAlign: TextAlign.justify, // Align the text
|
|
||||||
softWrap: true,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
Row(
|
||||||
Row(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
Padding(
|
||||||
Padding(
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
padding: const EdgeInsets.only(top : 8.0),
|
child: Icon(
|
||||||
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
|
Icons.brightness_1,
|
||||||
), // Bullet point
|
size: 5,
|
||||||
SizedBox(width: 8), // Space between bullet and text
|
color: Color(0xFF414042),
|
||||||
Expanded(
|
),
|
||||||
child: Text(
|
), // Bullet point
|
||||||
'2. Log in to unlock advanced features or continue as a guest.',
|
SizedBox(width: 8), // Space between bullet and text
|
||||||
textAlign: TextAlign.justify, // Align the text
|
Expanded(
|
||||||
softWrap: true,
|
child: Text(
|
||||||
|
'1. Download the app from the App Store or Google Play Store.',
|
||||||
|
textAlign: TextAlign.justify, // Align the text
|
||||||
|
softWrap: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
),
|
Row(
|
||||||
Row(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
Padding(
|
||||||
Padding(
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
padding: const EdgeInsets.only(top : 8.0),
|
child: Icon(
|
||||||
child: Icon(Icons.brightness_1, size: 5, color: Color(0xFF414042),),
|
Icons.brightness_1,
|
||||||
), // Bullet point
|
size: 5,
|
||||||
SizedBox(width: 8), // Space between bullet and text
|
color: Color(0xFF414042),
|
||||||
Expanded(
|
),
|
||||||
child: Text(
|
), // Bullet point
|
||||||
'3. Log in to unlock advanced features or continue as a guest.',
|
SizedBox(width: 8), // Space between bullet and text
|
||||||
textAlign: TextAlign.justify, // Align the text
|
Expanded(
|
||||||
softWrap: true,
|
child: Text(
|
||||||
|
'2. Log in to unlock advanced features or continue as a guest.',
|
||||||
|
textAlign: TextAlign.justify, // Align the text
|
||||||
|
softWrap: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
),
|
Row(
|
||||||
SizedBox(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
height:MediaQuery.of(context).size.height * 0.1,
|
children: [
|
||||||
),
|
Padding(
|
||||||
Align(
|
padding: const EdgeInsets.only(top: 8.0),
|
||||||
alignment: Alignment.bottomCenter,
|
child: Icon(
|
||||||
child: fcscBanner,
|
Icons.brightness_1,
|
||||||
),
|
size: 5,
|
||||||
SizedBox(height: 25,),
|
color: Color(0xFF414042),
|
||||||
|
),
|
||||||
],
|
), // Bullet point
|
||||||
|
SizedBox(width: 8), // Space between bullet and text
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
'3. Log in to unlock advanced features or continue as a guest.',
|
||||||
|
textAlign: TextAlign.justify, // Align the text
|
||||||
|
softWrap: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.1,
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.bottomCenter,
|
||||||
|
child: fcscBanner,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 25,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,11 +4,11 @@ import '../../../../../../infrastructure/services/img_asset_paths/banner_asset_p
|
|||||||
import '../../../custom_drawer_routes.dart';
|
import '../../../custom_drawer_routes.dart';
|
||||||
|
|
||||||
class AppFeatures extends StatelessWidget {
|
class AppFeatures extends StatelessWidget {
|
||||||
AppFeatures({super.key});
|
AppFeatures({super.key});
|
||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -19,24 +19,25 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -45,55 +46,58 @@ class AppFeatures extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
|
||||||
width:MediaQuery.of(context).size.width,
|
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/user_guide/appFeatures.png',
|
|
||||||
fit: BoxFit.contain,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text('1.Comprehensive Statistics:',
|
|
||||||
style:TextStyle(
|
|
||||||
fontSize:16,
|
|
||||||
color: Color(0xFF414042),
|
|
||||||
fontWeight: FontWeight.w600,
|
|
||||||
),
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/user_guide/appFeatures.png',
|
||||||
|
fit: BoxFit.contain,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'1.Comprehensive Statistics:',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Row(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top : 6.0),
|
padding: const EdgeInsets.only(top: 6.0),
|
||||||
child: Icon(Icons.brightness_1, size: 5),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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: '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.'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -105,8 +109,12 @@ class AppFeatures extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,11 +126,11 @@ class AppFeatures extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text(' 2. Drilldown Navigation:',
|
Text(
|
||||||
style:TextStyle(
|
' 2. Drilldown Navigation:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -132,8 +140,12 @@ class AppFeatures extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +158,10 @@ class AppFeatures extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('3. Interactive Visualizations:',
|
Text(
|
||||||
style:TextStyle(
|
'3. Interactive Visualizations:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -158,8 +171,12 @@ class AppFeatures extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -19,24 +19,25 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,37 +47,40 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/changePassword.png',
|
'assets/user_guide/changePassword.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'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(
|
||||||
style:TextStyle(
|
'Steps to Change Password',
|
||||||
fontSize:22,
|
style: TextStyle(
|
||||||
|
fontSize: 22,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('1. Access the Change Password Page:',
|
Text(
|
||||||
style:TextStyle(
|
'1. Access the Change Password Page:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -86,23 +90,33 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +124,10 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('2. Enter Old Password:',
|
Text(
|
||||||
style:TextStyle(
|
'2. Enter Old Password:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -122,7 +137,7 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // Bullet point
|
), // Bullet point
|
||||||
SizedBox(width: 8), // Space between bullet and text
|
SizedBox(width: 8), // Space between bullet and text
|
||||||
@ -136,9 +151,10 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('3. Set a New Password:',
|
Text(
|
||||||
style:TextStyle(
|
'3. Set a New Password:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -148,8 +164,12 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,8 +185,12 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +203,10 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('4. Password Requirements:',
|
Text(
|
||||||
style:TextStyle(
|
'4. Password Requirements:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -191,8 +216,12 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +234,10 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('5. Save Your Password:',
|
Text(
|
||||||
style:TextStyle(
|
'5. Save Your Password:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -217,23 +247,33 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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',
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -244,8 +284,12 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +302,10 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('6. Re-Login:',
|
Text(
|
||||||
style:TextStyle(
|
'6. Re-Login:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -270,8 +315,12 @@ class ChangeMyPassword extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -19,24 +19,25 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,17 +47,18 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/editProfile.png',
|
'assets/user_guide/editProfile.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
@ -66,17 +68,19 @@ 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(
|
||||||
style:TextStyle(
|
'Steps to Edit Profile',
|
||||||
fontSize:22,
|
style: TextStyle(
|
||||||
|
fontSize: 22,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('1. Access the Profile Page:',
|
Text(
|
||||||
style:TextStyle(
|
'1. Access the Profile Page:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -86,33 +90,44 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: '"Profile"',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: '"Profile"',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:' option from the navigation bar at the top left corner of the screen.',)
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
|
fontFamily: 'Roboto'),
|
||||||
),
|
),
|
||||||
)
|
TextSpan(
|
||||||
),
|
text:
|
||||||
|
' option from the navigation bar at the top left corner of the screen.',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('2. Editable Fields:',
|
Text(
|
||||||
style:TextStyle(
|
'2. Editable Fields:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -122,26 +137,32 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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(
|
||||||
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
|
style: TextStyle(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'Full Name:',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'Full Name:',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:' Tap the text box to enter your name (up to 40 alphanumeric characters).',)
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
),
|
fontFamily: 'Roboto'),
|
||||||
)
|
),
|
||||||
),
|
TextSpan(
|
||||||
|
text:
|
||||||
|
' Tap the text box to enter your name (up to 40 alphanumeric characters).',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
@ -149,26 +170,32 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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(
|
||||||
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
|
style: TextStyle(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'Date of Birth: ',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'Date of Birth: ',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:' Use the calendar dropdown to select your date of birth.',)
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
|
fontFamily: 'Roboto'),
|
||||||
),
|
),
|
||||||
)
|
TextSpan(
|
||||||
),
|
text:
|
||||||
|
' Use the calendar dropdown to select your date of birth.',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
@ -176,26 +203,32 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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(
|
||||||
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
|
style: TextStyle(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'Country/Region: ',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'Country/Region: ',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:' Choose your current location from the dropdown menu.',),
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
|
fontFamily: 'Roboto'),
|
||||||
),
|
),
|
||||||
)
|
TextSpan(
|
||||||
),
|
text:
|
||||||
|
' Choose your current location from the dropdown menu.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
@ -203,32 +236,39 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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(
|
||||||
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
|
style: TextStyle(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'User Image: ',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'User Image: ',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:'Tap on the avatar icon to upload or change your profile picture.',),
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
|
fontFamily: 'Roboto'),
|
||||||
),
|
),
|
||||||
)
|
TextSpan(
|
||||||
),
|
text:
|
||||||
|
'Tap on the avatar icon to upload or change your profile picture.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('3. Non-Editable Fields:',
|
Text(
|
||||||
style:TextStyle(
|
'3. Non-Editable Fields:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -238,39 +278,49 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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),
|
child: Icon(Icons.brightness_1, size: 5),
|
||||||
), // 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(
|
||||||
style: TextStyle(fontSize: 16, color: Color(0xFF898C81), fontFamily: 'Roboto'),
|
style: TextStyle(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'Username ',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'Username ',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:'and ',),
|
fontWeight: FontWeight.w600,
|
||||||
TextSpan(text: 'Email Id: ',
|
color: Color(0xFF414042),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
|
||||||
color: Color(0xFF414042),
|
|
||||||
fontFamily: 'Roboto'
|
|
||||||
),),
|
|
||||||
TextSpan(text:'These fields cannot be edited to ensure the integrity of your account.',),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
)
|
TextSpan(
|
||||||
),
|
text: 'and ',
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'Email Id: ',
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
'These fields cannot be edited to ensure the integrity of your account.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('4. Agree to Terms and Conditions:',
|
Text(
|
||||||
style:TextStyle(
|
'4. Agree to Terms and Conditions:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -280,8 +330,12 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +348,10 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('4. Save Your Changes:',
|
Text(
|
||||||
style:TextStyle(
|
'4. Save Your Changes:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -306,26 +361,36 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
children: const <TextSpan>[
|
fontSize: 16,
|
||||||
TextSpan(text: 'Save',
|
color: Color(0xFF898C81),
|
||||||
style: TextStyle(
|
fontFamily: 'Roboto'),
|
||||||
fontWeight: FontWeight.w600,
|
children: const <TextSpan>[
|
||||||
color: Color(0xFF414042),
|
TextSpan(
|
||||||
fontFamily: 'Roboto'
|
text: 'Save',
|
||||||
),),
|
style: TextStyle(
|
||||||
TextSpan(text:' button at the bottom of the screen.',)
|
fontWeight: FontWeight.w600,
|
||||||
],
|
color: Color(0xFF414042),
|
||||||
),
|
fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ' button at the bottom of the screen.',
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -334,8 +399,12 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
@ -352,53 +421,64 @@ class EditMyProfile extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -19,24 +19,25 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,25 +47,27 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/howUse.png',
|
'assets/user_guide/howUse.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text('1. Registration and Approval:',
|
Text(
|
||||||
style:TextStyle(
|
'1. Registration and Approval:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -74,8 +77,12 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +95,10 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('2. Login and Navigation:',
|
Text(
|
||||||
style:TextStyle(
|
'2. Login and Navigation:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -100,8 +108,12 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +126,10 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('3. Access Data:',
|
Text(
|
||||||
style:TextStyle(
|
'3. Access Data:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -126,8 +139,12 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,9 +157,10 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 8),
|
SizedBox(height: 8),
|
||||||
Text('4. Bookmark Metrics:',
|
Text(
|
||||||
style:TextStyle(
|
'4. Bookmark Metrics:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -152,8 +170,12 @@ class HowUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class Purpose extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -16,27 +16,31 @@ 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,
|
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,17 +50,18 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/purpose.png',
|
'assets/user_guide/purpose.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
@ -67,27 +72,32 @@ class Purpose extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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: 'Provide ',
|
text: 'Provide ',
|
||||||
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.'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -98,8 +108,12 @@ class Purpose extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
@ -115,8 +129,12 @@ class Purpose extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class StayUpdate extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -16,27 +16,31 @@ 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,
|
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,17 +50,18 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/stayUpdate.png',
|
'assets/user_guide/stayUpdate.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
@ -67,8 +72,12 @@ class StayUpdate extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class WhoUseTheApp extends StatelessWidget {
|
|||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Image.asset(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
height: 56,
|
height: 56,
|
||||||
alignment:Alignment.center,
|
alignment: Alignment.center,
|
||||||
);
|
);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -19,24 +19,25 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
@ -46,25 +47,27 @@ 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,
|
||||||
height:MediaQuery.of(context).size.height * 0.36,
|
height: MediaQuery.of(context).size.height * 0.36,
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/user_guide/whoUse.png',
|
'assets/user_guide/whoUse.png',
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text('This app is intended for:',
|
Text(
|
||||||
style:TextStyle(
|
'This app is intended for:',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
color: Color(0xFF414042),
|
color: Color(0xFF414042),
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
@ -74,8 +77,12 @@ class WhoUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
@ -91,8 +98,12 @@ class WhoUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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(
|
||||||
@ -108,8 +119,12 @@ class WhoUseTheApp extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
,);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -9,91 +9,100 @@ 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(
|
||||||
style: TextStyle(
|
'Getting Started',
|
||||||
fontSize:22,
|
style: TextStyle(
|
||||||
fontFamily: 'Roboto',
|
fontSize: 22,
|
||||||
color: Color(0xFF7DAFBC),
|
fontFamily: 'Roboto',
|
||||||
fontWeight: FontWeight.w500,
|
color: Color(0xFF7DAFBC),
|
||||||
// fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
// fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
body: Container(
|
||||||
) ,
|
width: double.infinity,
|
||||||
body: Container(
|
color: Colors.white,
|
||||||
width: double.infinity,
|
child: Column(
|
||||||
color: Colors.white,
|
children: [
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
context.push('/user-guide/aboutApp/aboutFCSC');
|
context.push('/user-guide/aboutApp/aboutFCSC');
|
||||||
},
|
},
|
||||||
tileColor: Colors.white,
|
tileColor: Colors.white,
|
||||||
title: Text('About FCSC',
|
title: Text(
|
||||||
style: TextStyle(
|
'About FCSC',
|
||||||
fontSize:16,
|
style: TextStyle(
|
||||||
color: Color(0xFF414042),
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w500,
|
color: Color(0xFF414042),
|
||||||
|
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(
|
|
||||||
onTap: (){
|
|
||||||
context.push('/user-guide/aboutApp/getStarted');
|
|
||||||
},
|
|
||||||
// tileColor: Colors.white,
|
|
||||||
title: Text('How to Get Started?',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize:16,
|
|
||||||
color: Color(0xFF414042),
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
fontFamily: 'Roboto',
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
trailing: Icon(Icons.keyboard_arrow_right),
|
child: ListTile(
|
||||||
shape: Border(
|
onTap: () {
|
||||||
bottom: BorderSide(color: Colors.black, width: 3), // Grey bottom line
|
context.push('/user-guide/aboutApp/getStarted');
|
||||||
|
},
|
||||||
|
// tileColor: Colors.white,
|
||||||
|
title: Text(
|
||||||
|
'How to Get Started?',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontFamily: 'Roboto',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
trailing: Icon(Icons.keyboard_arrow_right),
|
||||||
|
shape: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.black, width: 3), // Grey bottom line
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Spacer(),
|
Spacer(),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: fcscBanner,
|
child: fcscBanner,
|
||||||
),
|
),
|
||||||
SizedBox(height: 25,),
|
SizedBox(
|
||||||
],
|
height: 25,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
);
|
||||||
),);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,211 +13,342 @@ 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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Container(
|
child: Container(
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
child: Scrollbar(
|
child: Scrollbar(
|
||||||
thumbVisibility: true,
|
thumbVisibility: true,
|
||||||
thickness: 8,
|
thickness: 8,
|
||||||
radius: Radius.circular(10),
|
radius: Radius.circular(10),
|
||||||
interactive: true,
|
interactive: true,
|
||||||
child:SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: QuestionAnswerScrollView(),
|
child: QuestionAnswerScrollView(),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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?',
|
||||||
text: TextSpan(
|
'answer':
|
||||||
children: [
|
'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.'
|
||||||
TextSpan(
|
},
|
||||||
text: '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'), ),
|
'question': 'Do I need to create an account to use the app?',
|
||||||
TextSpan(
|
'answer': RichText(
|
||||||
text: ' 1. You need to sign up using the Register Now option on the login screen.\n',
|
text: TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: ' 2. Your registration must be approved by the admin.\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(
|
||||||
TextSpan(
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
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 ",
|
),
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
TextSpan(
|
||||||
],
|
text:
|
||||||
|
' 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(
|
||||||
|
text: ' 2. Your registration must be approved by the admin.\n',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
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 ",
|
||||||
|
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?',
|
||||||
text: TextSpan(
|
'answer':
|
||||||
children: [
|
'• 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'
|
||||||
TextSpan(
|
},
|
||||||
text: 'The app offers data on:\n\n',
|
{
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
'question': 'What types of data are available?',
|
||||||
TextSpan(
|
'answer': RichText(
|
||||||
text: ' • Economy',
|
text: TextSpan(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: ' GDP, growth rates, and economic trends\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(
|
),
|
||||||
text: ' • Environment:',
|
TextSpan(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
text: ' • Economy',
|
||||||
TextSpan(
|
style: TextStyle(
|
||||||
text: ' Electricity production, water consumption, and more.\n',
|
color: Color(0xFF414042),
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
fontWeight: FontWeight.w500,
|
||||||
TextSpan(
|
fontSize: 16),
|
||||||
text: ' • Social:',
|
),
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
TextSpan(
|
||||||
TextSpan(
|
text: ' GDP, growth rates, and economic trends\n',
|
||||||
text: ' Labor force distribution, participation rates, and demographic data.\n',
|
style: TextStyle(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
],
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ' • Environment:',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ' Electricity production, water consumption, and more.\n',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ' • Social:',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
' 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(
|
{
|
||||||
text: TextSpan(
|
'question': 'How do I bookmark a metric?',
|
||||||
children: [
|
'answer': RichText(
|
||||||
TextSpan(
|
text: TextSpan(
|
||||||
text: 'When viewing a metric, tap on the',
|
children: [
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
TextSpan(
|
||||||
TextSpan(
|
text: 'When viewing a metric, tap on the',
|
||||||
text: ' Bookmark ',
|
style: TextStyle(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
TextSpan(
|
),
|
||||||
text: 'icon. Your bookmarks are accessible from the',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: ' Bookmark ',
|
||||||
|
style: TextStyle(
|
||||||
TextSpan(
|
color: Color(0xFF414042),
|
||||||
text: 'My Bookmarks',
|
fontWeight: FontWeight.w500,
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
fontSize: 16),
|
||||||
TextSpan(
|
),
|
||||||
text: 'section in the navigation bar.\n',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: 'icon. Your bookmarks are accessible from the',
|
||||||
],
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'My Bookmarks',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'section in the navigation bar.\n',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),},
|
},
|
||||||
{'question':'Can I view the app in another language?', 'answer': RichText(
|
{
|
||||||
text: TextSpan(
|
'question': 'Can I view the app in another language?',
|
||||||
children: [
|
'answer': RichText(
|
||||||
TextSpan(
|
text: TextSpan(
|
||||||
text: 'Yes, the app supports both ',
|
children: [
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
TextSpan(
|
||||||
TextSpan(
|
text: 'Yes, the app supports both ',
|
||||||
text: 'English ',
|
style: TextStyle(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
TextSpan(
|
),
|
||||||
text: 'and',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: 'English ',
|
||||||
|
style: TextStyle(
|
||||||
TextSpan(
|
color: Color(0xFF414042),
|
||||||
text: ' Arabic ',
|
fontWeight: FontWeight.w500,
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
fontSize: 16),
|
||||||
TextSpan(
|
),
|
||||||
text: '. You can toggle the language using the switch in the top-right corner of the app.\n',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: 'and',
|
||||||
],
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: ' Arabic ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
'. 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': 'What happens if I forget my password?',
|
||||||
{'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'},
|
'answer':
|
||||||
{'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'},
|
'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 share the data or charts?','answer':RichText(
|
},
|
||||||
text: TextSpan(
|
{
|
||||||
children: [
|
'question': 'Can I edit my profile details?',
|
||||||
TextSpan(
|
'answer':
|
||||||
text: 'Yes, you can share data or charts directly from the app by tapping the ',
|
'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'
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
},
|
||||||
TextSpan(
|
{
|
||||||
text: 'Share ',
|
'question': 'How often is the data updated?',
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
'answer':
|
||||||
TextSpan(
|
'The app updates its datasets regularly to ensure users have access to the latest statistics. Notifications are sent whenever significant updates are made.\n'
|
||||||
text: 'button available on most pages.\n',
|
},
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
{
|
||||||
],
|
'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(
|
||||||
|
children: [
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
'Yes, you can share data or charts directly from the app by tapping the ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'Share ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'button available on most pages.\n',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),},
|
},
|
||||||
{'question':'What should I do if I encounter an issue?','answer':RichText(
|
{
|
||||||
text: TextSpan(
|
'question': 'What should I do if I encounter an issue?',
|
||||||
children: [
|
'answer': RichText(
|
||||||
TextSpan(
|
text: TextSpan(
|
||||||
text: 'For technical support or feedback, navigate to the ',
|
children: [
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
TextSpan(
|
||||||
TextSpan(
|
text: 'For technical support or feedback, navigate to the ',
|
||||||
text: 'Help ',
|
style: TextStyle(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
TextSpan(
|
),
|
||||||
text: 'section in the app and contact the support team.\n',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: 'Help ',
|
||||||
],
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'section in the app and contact the support team.\n',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),},
|
},
|
||||||
{'question':'How do I log out of the app?','answer':RichText(
|
{
|
||||||
text: TextSpan(
|
'question': 'How do I log out of the app?',
|
||||||
children: [
|
'answer': RichText(
|
||||||
TextSpan(
|
text: TextSpan(
|
||||||
text: 'Go to the ',
|
children: [
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
TextSpan(
|
||||||
TextSpan(
|
text: 'Go to the ',
|
||||||
text: 'Profile ',
|
style: TextStyle(
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16), ),
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
TextSpan(
|
),
|
||||||
text: 'section and tap the ',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ),
|
text: 'Profile ',
|
||||||
TextSpan(
|
style: TextStyle(
|
||||||
text: 'Logout ',
|
color: Color(0xFF414042),
|
||||||
style: TextStyle(color: Color(0xFF414042),fontWeight: FontWeight.w500, fontSize: 16),
|
fontWeight: FontWeight.w500,
|
||||||
),
|
fontSize: 16),
|
||||||
TextSpan(
|
),
|
||||||
text: 'option in the top-right corner.\n',
|
TextSpan(
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'), ) ],
|
text: 'section and tap the ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey, fontSize: 16, fontFamily: 'Roboto'),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'Logout ',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xFF414042),
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
text: 'option in the top-right corner.\n',
|
||||||
|
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;
|
||||||
@ -234,21 +365,24 @@ class _QuestionAnswerCardState extends State<QuestionAnswerCard> {
|
|||||||
return Card(
|
return Card(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
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,13 +391,17 @@ 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'),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@ -3,41 +3,38 @@ 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(
|
||||||
BannerAssetPath.fcsc,
|
BannerAssetPath.fcsc,
|
||||||
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',
|
||||||
color: Color(0xFF7DAFBC),
|
color: Color(0xFF7DAFBC),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
// fontWeight: FontWeight.w500,
|
// fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
) ,
|
),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
child: Column(
|
child: Column(
|
||||||
@ -45,38 +42,45 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -84,25 +88,28 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -110,25 +117,28 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -136,25 +146,28 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -162,25 +175,28 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -188,25 +204,28 @@ 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(
|
||||||
onTap: (){
|
onTap: () {
|
||||||
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),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
fontFamily: 'Roboto',
|
fontFamily: 'Roboto',
|
||||||
@ -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,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
),);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,17 +28,17 @@ class BaseScaffold extends ConsumerStatefulWidget {
|
|||||||
required this.body,
|
required this.body,
|
||||||
required this.title,
|
required this.title,
|
||||||
this.actions,
|
this.actions,
|
||||||
this.showDivider =false,
|
this.showDivider = false,
|
||||||
this.dividerColor ,
|
this.dividerColor,
|
||||||
this.showBackButton = false,
|
this.showBackButton = false,
|
||||||
this.mycenterTitle = false,
|
this.mycenterTitle = false,
|
||||||
this.appbarColor,
|
this.appbarColor,
|
||||||
this.mytitleColor,
|
this.mytitleColor,
|
||||||
this.bottomColor=null,
|
this.bottomColor = null,
|
||||||
});
|
});
|
||||||
final Widget body;
|
final Widget body;
|
||||||
final Widget title;
|
final Widget title;
|
||||||
final Color? dividerColor;
|
final Color? dividerColor;
|
||||||
final bool showDivider;
|
final bool showDivider;
|
||||||
final bool showBackButton;
|
final bool showBackButton;
|
||||||
final bool? mycenterTitle;
|
final bool? mycenterTitle;
|
||||||
@ -622,19 +622,20 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
double mywidth = MediaQuery.of(context).size.width;
|
double mywidth = MediaQuery.of(context).size.width;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: widget.title,
|
title: widget.title,
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
leadingWidth: widget.showBackButton ? mywidth * 0.25 : null,
|
leadingWidth: widget.showBackButton ? mywidth * 0.25 : null,
|
||||||
bottom: widget.showDivider
|
bottom: widget.showDivider
|
||||||
? PreferredSize(
|
? PreferredSize(
|
||||||
preferredSize: Size.fromHeight(1), // Height of the line
|
preferredSize: Size.fromHeight(1), // Height of the line
|
||||||
child: Container(
|
child: Container(
|
||||||
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();
|
||||||
},
|
},
|
||||||
@ -763,13 +762,13 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
|
|||||||
ListTile(
|
ListTile(
|
||||||
leading: Image.asset(
|
leading: Image.asset(
|
||||||
DrawerAssetIconPath.feedback,
|
DrawerAssetIconPath.feedback,
|
||||||
color: Colors.black ,
|
color: Colors.black,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
// title: const Text('Feedback'),
|
// title: const Text('Feedback'),
|
||||||
title: Text(AppLocalizations.of(context)!.feedback_title),
|
title: Text(AppLocalizations.of(context)!.feedback_title),
|
||||||
onTap: () => context.go('/feedback', extra: userName),
|
onTap: () => context.go('/feedback', extra: userName),
|
||||||
),
|
),
|
||||||
if (role == 'admin')
|
if (role == 'admin')
|
||||||
ListTile(
|
ListTile(
|
||||||
@ -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,
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user