UI changes done

This commit is contained in:
venbaittech 2025-02-08 12:26:05 +05:30
parent 9f75e090fd
commit cb9146c9ac
14 changed files with 283 additions and 118 deletions

View File

@ -15,12 +15,12 @@ if (localPropertiesFile.exists()) {
def flutterVersionCode = localProperties.getProperty("flutter.versionCode") def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) { if (flutterVersionCode == null) {
flutterVersionCode = "10" flutterVersionCode = "11"
} }
def flutterVersionName = localProperties.getProperty("flutter.versionName") def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) { if (flutterVersionName == null) {
flutterVersionName = "1.0.9" flutterVersionName = "1.0.10"
} }
def keystorePropertiesFile = rootProject.file("key.properties") def keystorePropertiesFile = rootProject.file("key.properties")

BIN
assets/icons/misc/group.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 B

View File

@ -10,5 +10,7 @@ abstract class MiscIconAssetPath {
static const visibleOn = '$_basePath/visible_on.png'; static const visibleOn = '$_basePath/visible_on.png';
static const visibilityOff = '$_basePath/visibility_off.png'; static const visibilityOff = '$_basePath/visibility_off.png';
static const save = '$_basePath/save.png'; static const save = '$_basePath/save.png';
static const group = '$_basePath/group.png';
static const search = '$_basePath/search.png';
} }

View File

@ -1,6 +1,20 @@
{ {
"feedback_title": "التعليقات", "feedback_title": "تعليق",
"feedback_failed_msg": "لم يتم إرسال تعليقاتك. يرجى المحاولة مرة أخرى.", "feedback_failed_msg": "لم يتم إرسال تعليقاتك. يرجى المحاولة مرة أخرى.",
"thankYou": "شكراً",
"feedback_message": "لملاحظاتك القيمة، نحن نقدر مساهمتك حقًا!",
"failed_to_sharefeedback": "فشل في مشاركة الملاحظات",
"feedback_submitted": "تم إرسال الملاحظات بنجاح!",
"formError": "يرجى تصحيح الأخطاء قبل الإرسال.",
"feedback_failed": "فشل في إرسال التعليق: {error}",
"skip": "تخطي",
"got_it": "فهمت",
"exit_app": "الخروج من التطبيق",
"exit_confirmation": "هل أنت متأكد أنك تريد الخروج؟",
"cancel": "إلغاء",
"exit": "خروج",
"bookmark_title": "إشارة مرجعية",
"guide_title": "نموذج الملاحظات", "guide_title": "نموذج الملاحظات",

View File

@ -1,8 +1,21 @@
{ {
"feedback_title": "Feedback", "feedback_title": "Feedback",
"feedback_failed_msg": "Your feedback could not be \n submitted. Please try again", "feedback_failed_msg": "Your feedback could not be \n submitted. Please try again",
"thankYou": "Thank you",
"feedback_message": "For your valuable feedback, we truly appreciate your input!",
"failed_to_sharefeedback": "Failed to Share Feedback",
"feedback_submitted": "Feedback submitted successfully!",
"formError": "Please correct the errors before submitting.",
"feedback_failed": "Failed to submit feedback: {error}",
"skip": "Skip",
"got_it": "Got it",
"exit_app": "Exit App",
"exit_confirmation": "Are you sure you want to exit?",
"cancel": "Cancel",
"exit": "Exit",
"bookmark_title": "Bookmark",
"register_title": "Register", "register_title": "Register",
"register_details": "Please enter your details", "register_details": "Please enter your details",

View File

@ -3,6 +3,7 @@ import 'dart:convert';
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:go_router/go_router.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/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:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
@ -105,9 +106,10 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
child: TextField( child: TextField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Search", hintText: "Search",
prefixIcon: Icon( prefixIcon: Image.asset(
Icons.search, MiscIconAssetPath.search,
color: Color(0xFFAA8E83), width: 20,
height: 20,
), ),
border: InputBorder.none, border: InputBorder.none,
contentPadding: contentPadding:
@ -381,12 +383,13 @@ class _CustomExpandableTileState extends State<CustomExpandableTile> {
duration: Duration(milliseconds: 300), duration: Duration(milliseconds: 300),
curve: Curves.easeInOut, curve: Curves.easeInOut,
width: double.infinity, width: double.infinity,
color: Colors.white,
height: widget.isExpanded ? myheight * 0.52 : 0, height: widget.isExpanded ? myheight * 0.52 : 0,
child: widget.isExpanded child: widget.isExpanded
? SingleChildScrollView( ? SingleChildScrollView(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
// color: Colors.white, color: Colors.white,
// borderRadius: BorderRadius.all(Radius.circular(20)) // borderRadius: BorderRadius.all(Radius.circular(20))
), ),
padding: const EdgeInsets.all(1), padding: const EdgeInsets.all(1),

View File

@ -838,7 +838,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
SizedBox(height: 10), SizedBox(height: 10),
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
top: 1.0, bottom: 10, left: 25, right: 30), top: 0, bottom: 10, left: 25, right: 30),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
@ -858,47 +858,59 @@ class _RegisterScreenState extends State<RegisterScreen> {
), ),
), ),
Expanded( Expanded(
child: Padding(
padding: const EdgeInsets.only(top:11.0),
child: Text.rich( child: Text.rich(
TextSpan( TextSpan(
text: AppLocalizations.of(context)!.agree, text: AppLocalizations.of(context)!.agree,
// text: 'I agree to ', // text: 'I agree to ',
style: TextStyle(
color: Color(0xFF898C81), // Change to your desired color
),
children: [ children: [
TextSpan( TextSpan(
text: AppLocalizations.of(context)! text: AppLocalizations.of(context)!
.terms_conditions, .terms_conditions,
// text: 'Terms & Conditions', // text: 'Terms & Conditions',
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.w500,
color: Color(0xFF985400), color: Color(0xFF985400),
// Makes the text bold // Makes the text bold
decoration: // decoration:
TextDecoration.underline, // TextDecoration.underline,
decorationColor: Color(0xFF985400), decorationColor: Color(0xFF985400),
decorationThickness: 1), decorationThickness: 1),
), ),
TextSpan( TextSpan(
text: AppLocalizations.of(context)! text: AppLocalizations.of(context)!
.t_and), .t_and,
style: TextStyle(
color: Color(0xFF898C81), // Change to your desired color
),),
TextSpan( TextSpan(
text: AppLocalizations.of(context)! text: AppLocalizations.of(context)!
.privacy_policy, .privacy_policy,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.w500,
fontSize: 14, fontSize: 14,
fontFamily: 'Roboto', fontFamily: 'Roboto',
color: Color(0xFF985400), color: Color(0xFF985400),
decoration: // decoration:
TextDecoration.underline, // TextDecoration.underline,
decorationColor: Color(0xFF648CBA), decorationColor: Color(0xFF648CBA),
decorationThickness: 1), decorationThickness: 1),
), ),
TextSpan( TextSpan(
text: AppLocalizations.of(context)! text: AppLocalizations.of(context)!
.conditions), .conditions,
style: TextStyle(
color: Color(0xFF898C81), // Change to your desired color
),),
], ],
), ),
), ),
), ),
),
], ],
), ),
), ),

View File

@ -632,7 +632,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
}, },
side: BorderSide( side: BorderSide(
color: color:
showError ? Color(0xFFb22222) : Color(0xFF92722A), showError ? Color(0xFFb22222) : Color(0xFF7296BE),
width: 1, width: 1,
), ),
), ),
@ -648,18 +648,19 @@ class _ProfileScreenState extends State<ProfileScreen> {
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations.of(
context)! context)!
.agree, style: TextStyle(color: Colors.black), .agree,
style: TextStyle(color: Color(0xFF898C81)),
children: [ children: [
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations.of(
context, context,
)! )!
.terms_conditions, style: TextStyle( .terms_conditions, style: TextStyle(
color: Color(0xFF648CBA), color: Color(0xFF985400),
decoration: TextDecoration.underline, // decoration: TextDecoration.underline,
fontWeight: FontWeight fontWeight: FontWeight
.bold, // Makes the text bold .w600, // Makes the text bold
decorationColor: Color(0xFF648CBA), decorationColor: Color(0xFF985400),
decorationThickness: 1, decorationThickness: 1,
), ),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
@ -670,17 +671,17 @@ class _ProfileScreenState extends State<ProfileScreen> {
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations.of(
context, context,
)!.t_and, style: TextStyle(color: Colors.black), )!.t_and,
style: TextStyle(color: Color(0xFF898C81)),
), ),
TextSpan( TextSpan(
text: AppLocalizations.of( text: AppLocalizations.of(
context, context,
)!.privacy_policy, style: TextStyle( )!.privacy_policy, style: TextStyle(
color: Color(0xFF648CBA), color: Color(0xFF985400),
decoration: TextDecoration.underline, // decoration: TextDecoration.underline,
fontWeight: FontWeight fontWeight: FontWeight.w600, // Makes the text bold
.bold, // Makes the text bold decorationColor: Color(0xFF985400),
decorationColor: Color(0xFF648CBA),
decorationThickness: 1, decorationThickness: 1,
), ),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
@ -693,7 +694,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
context, context,
)! )!
.conditions, .conditions,
style: TextStyle(color: Colors.black), style: TextStyle(color: Color(0xFF898C81)),
), ),
], ],
), ),

View File

@ -544,15 +544,14 @@ class _FeedbackFormState extends State<FeedbackForm>
// Icon(Icons.thumb_up, size: 80, color: Color(0xFF7DAFBC)), // Icon(Icons.thumb_up, size: 80, color: Color(0xFF7DAFBC)),
const SizedBox(height: 20), const SizedBox(height: 20),
Text(
// "Thank you",
'Thank you $userName !', Text(
'${AppLocalizations.of(context)!.thankYou} $userName !',
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
), ),
const SizedBox(height: 15), const SizedBox(height: 15),
const Text( Text(
"For your valuable feedback, we truly \n appreciate your input!", AppLocalizations.of(context)!.feedback_message,
style: TextStyle(fontSize: 16, color: Color(0xFF898C81)), style: TextStyle(fontSize: 16, color: Color(0xFF898C81)),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
@ -603,8 +602,8 @@ class _FeedbackFormState extends State<FeedbackForm>
// 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( Text(
"Failed to Share Feedback", AppLocalizations.of(context)!.failed_to_sharefeedback,
style: TextStyle( style: TextStyle(
fontSize: 24, fontSize: 24,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -752,8 +751,12 @@ class _FeedbackFormState extends State<FeedbackForm>
if (_hasError) { if (_hasError) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( SnackBar(
content: Text("Please correct the errors before submitting.")), content: Text(
AppLocalizations.of(context)!.formError,
// "Please correct the errors before submitting."
)
),
); );
return; return;
} }
@ -783,7 +786,9 @@ class _FeedbackFormState extends State<FeedbackForm>
// await sendFeedbackEmail(feedbackData, createdTime); // await sendFeedbackEmail(feedbackData, createdTime);
await _removeFeedbackText(); await _removeFeedbackText();
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Feedback submitted successfully!")), SnackBar(
content: Text(AppLocalizations.of(context)!.feedback_submitted),
),
); );
setState(() { setState(() {
_isFeedbackSubmitted = true; _isFeedbackSubmitted = true;
@ -793,7 +798,12 @@ class _FeedbackFormState extends State<FeedbackForm>
} }
} catch (e) { } catch (e) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Failed to submit feedback: $e")), SnackBar(content: Text(
// "Failed to submit feedback: $e"
AppLocalizations.of(context)!.feedback_failed(e.toString()),
)
),
); );
setState(() { setState(() {
_isFeedbackFailed = true; // Update state to show failure message _isFeedbackFailed = true; // Update state to show failure message

View File

@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.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/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.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/my_drawer.dart'; import 'package:uae_stat/presentation/components/my_drawer.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';
@ -131,31 +133,49 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
SizedBox( SizedBox(
height: myheight / 30, height: myheight / 30,
), ),
Text( Text.rich(
// 'Are you sure you want to change \n the status to $newStatus?', TextSpan(
AppLocalizations.of(context)!.approve_msg(newStatus), text: 'Are you sure you want to change the status to ',
style: TextStyle(fontSize: 15), style: TextStyle(
textAlign: TextAlign.center, fontSize: 18,
color: Color(0xFF898C81),
), ),
children: [
TextSpan(
text: newStatus,
style: TextStyle(
fontWeight: FontWeight.bold, // Makes newStatus bold
fontSize: 18,
color: Color(0xFF898C81),
),
),
TextSpan(text: '?'),
],
),
textAlign: TextAlign.center, // Centers the text
)
], ],
), ),
), ),
Positioned( // Positioned(
right: 0, // right: 0,
top: 0, // top: 0,
child: IconButton( // child: IconButton(
icon: Icon(Icons.close), // icon: Icon(Icons.close),
onPressed: () { // onPressed: () {
Navigator.of(context).pop(); // Close the dialog // Navigator.of(context).pop(); // Close the dialog
}, // },
), // ),
), // ),
], ],
), ),
actions: <Widget>[ actions: <Widget>[
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: [
SizedBox(
width: 100, // Set the desired width
child:
TextButton( TextButton(
onPressed: () { onPressed: () {
Navigator.of(context) Navigator.of(context)
@ -167,12 +187,19 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
10.0), // Adjust the radius as needed 10.0), // Adjust the radius as needed
), ),
side: BorderSide( side: BorderSide(
color: Colors.blue, // Set the outline color color: Color(0xFFAA8E83), // Set the outline color
width: 2.0, // Set the border width width: 1, // Set the border width
), ),
), ),
child: Text(AppLocalizations.of(context)!.no), child: Text(AppLocalizations.of(context)!.no,
style: TextStyle(color: Color(0xFFAA8E83),
fontSize: 16,
),),
), ),
),
SizedBox(
width: 100, // Set the desired width
child:
TextButton( TextButton(
onPressed: () async { onPressed: () async {
try { try {
@ -202,7 +229,7 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
Navigator.of(context).pop(); // Close dialog Navigator.of(context).pop(); // Close dialog
}, },
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: Colors.blue, // Set background color backgroundColor: Color(0xFFAA8E83), // Set background color
foregroundColor: Colors.white, foregroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius:
@ -212,9 +239,10 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
child: Text( child: Text(
// 'Yes', // 'Yes',
AppLocalizations.of(context)!.yes, AppLocalizations.of(context)!.yes,
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white,
), fontSize: 16),
), ),
),),
], ],
) )
], ],
@ -248,18 +276,83 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0), padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 3.0),
child: Column( child: Column(
children: [ children: [
TextField( // TextField(
decoration: InputDecoration( // decoration: InputDecoration(
prefixIcon: const Icon(Icons.search), // prefixIcon: const Icon(Icons.search),
hintText: 'Search', // hintText: 'Search',
border: OutlineInputBorder( // border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(20)), // borderRadius: BorderRadius.all(Radius.circular(20)),
// ),
// ),
// onChanged: filterUsers,
// ),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30.0),
border: Border.all(width: 2, color: Color(0xFFAA8E83)),
), ),
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.search,
prefixIcon: Image.asset(
MiscIconAssetPath.search,
width: 20,
height: 20,
),
// ,prefixIcon: Icon(
// Icons.search,
// color: Color(0xFFAA8E83),
// ),
border: InputBorder.none,
contentPadding:
EdgeInsets.symmetric(vertical: 15.0, horizontal: 20.0),
), ),
onChanged: filterUsers, onChanged: filterUsers,
), ),
),
SizedBox(height: myheight / 40), SizedBox(height: myheight / 40),
SingleChildScrollView( filteredUserData.isEmpty
? Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: myheight/5),
// Icon(Icons.search,
// size: 60, color: Colors.grey),
Image.asset(
MiscIconAssetPath.group,
width: 60,
height: 60,
),
SizedBox(height: 15),
// Space between icon and text
Text(
"No results found",
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.grey[700],
),
),
SizedBox(height: 12), // Space between texts
FittedBox(
child: Text(
"We couldn't find anything matching your search.",
style: TextStyle(
fontSize: 18, color: Color(0xFF898C81)),
textAlign: TextAlign.center,
),),
],
),
),
)
: SingleChildScrollView(
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
@ -320,7 +413,8 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
? Text( ? Text(
'No results found', 'No results found',
style: TextStyle( style: TextStyle(
fontStyle: FontStyle.italic), fontStyle:
FontStyle.italic),
) )
: const Text( : const Text(
''), // Empty cells for other columns ''), // Empty cells for other columns
@ -338,14 +432,15 @@ class _ManageUserRouterState extends State<ManageUserRouter> {
DataCell( DataCell(
DropdownButton<String>( DropdownButton<String>(
value: user.status, value: user.status,
items: items: statusOptions.entries
statusOptions.entries.map((status) { .map((status) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: status.key, value: status.key,
child: Text( child: Text(
status.value, status.value,
style: TextStyle( style: TextStyle(
color: getStatusColor(status.key), color: getStatusColor(
status.key),
), ),
), ),
); );

View File

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:math';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -180,8 +181,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
elevation: 0, elevation: 0,
), ),
child: const Text( child: Text(
'Skip', AppLocalizations.of(context)!.skip,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 14, fontSize: 14,
@ -295,8 +296,9 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
elevation: 0, elevation: 0,
), ),
child: const Text( child: Text(
'Skip', // 'Skip',
AppLocalizations.of(context)!.skip,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 14, fontSize: 14,
@ -429,8 +431,9 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
elevation: 0, elevation: 0,
), ),
child: const Text( child: Text(
'Skip', // 'Skip',
AppLocalizations.of(context)!.skip,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 14, fontSize: 14,
@ -486,8 +489,8 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
backgroundColor: Colors.white, backgroundColor: Colors.white,
elevation: 0, elevation: 0,
), ),
child: const Text( child: Text(
'Got it', AppLocalizations.of(context)!.got_it,
style: TextStyle( style: TextStyle(
color: Color(0xFF7DAFBC), color: Color(0xFF7DAFBC),
fontSize: 14, fontSize: 14,
@ -624,7 +627,12 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
appBar: AppBar( appBar: AppBar(
title: widget.title, // title: widget.title,
title: Align(
alignment: Alignment.centerLeft, // Aligns the title to the left
child: widget.title,
),
titleSpacing: 0,
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
@ -634,8 +642,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
color: widget.dividerColor, // Line color color: widget.dividerColor, // Line color
height: 1, // Line thickness height: 1, // Line thickness
), ),
) ): null,
: null,
actions: widget.actions ?? actions: widget.actions ??
[ [
// IconButton( // IconButton(
@ -668,6 +675,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
), ),
), ),
Positioned( Positioned(
top: 5,
right: 10, right: 10,
child: Builder( child: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
@ -686,9 +694,11 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
), ),
), ),
drawer: Drawer( drawer: Drawer(
backgroundColor: Colors.white,
child: Column(children: [ child: Column(children: [
Expanded( Expanded(
child: ListView( child: ListView(
children: [ children: [
DrawerHeader( DrawerHeader(
child: Column( child: Column(
@ -786,7 +796,10 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
), ),
ListTile( ListTile(
leading: Icon(Icons.bookmarks_outlined), leading: Icon(Icons.bookmarks_outlined),
title: const Text('Bookmark'), // title: const Text('Bookmark'),
title: Text(
AppLocalizations.of(context)!.bookmark_title,
),
onTap: () => context.go('/bookmark'), onTap: () => context.go('/bookmark'),
), ),
ListTile( ListTile(

View File

@ -5,23 +5,23 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _fe_analyzer_shared name: _fe_analyzer_shared
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "72.0.0" version: "76.0.0"
_macros: _macros:
dependency: transitive dependency: transitive
description: dart description: dart
source: sdk source: sdk
version: "0.3.2" version: "0.3.3"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
name: analyzer name: analyzer
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.7.0" version: "6.11.0"
analyzer_plugin: analyzer_plugin:
dependency: transitive dependency: transitive
description: description:
@ -186,10 +186,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.18.0" version: "1.19.0"
connectivity_plus: connectivity_plus:
dependency: "direct main" dependency: "direct main"
description: description:
@ -282,10 +282,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: custom_lint_visitor name: custom_lint_visitor
sha256: "8aeb3b6ae2bb765e7716b93d1d10e8356d04e0ff6d7592de6ee04e0dd7d6587d" sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.0+6.7.0" version: "1.0.0+6.11.0"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
@ -433,10 +433,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: fl_chart name: fl_chart
sha256: "74959b99b92b9eebeed1a4049426fd67c4abc3c5a0f4d12e2877097d6a11ae08" sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.69.2" version: "0.70.2"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -845,18 +845,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.5" version: "10.0.7"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.5" version: "3.0.8"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@ -885,10 +885,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: macros name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.2-main.4" version: "0.1.3-main.0"
mailer: mailer:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1276,7 +1276,7 @@ packages:
dependency: transitive dependency: transitive
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.99" version: "0.0.0"
smart_api_client: smart_api_client:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1320,10 +1320,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.11.1" version: "1.12.0"
state_notifier: state_notifier:
dependency: transitive dependency: transitive
description: description:
@ -1352,10 +1352,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: string_scanner name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.0" version: "1.3.0"
syncfusion_flutter_charts: syncfusion_flutter_charts:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1384,10 +1384,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.2" version: "0.7.3"
the_validator: the_validator:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1576,10 +1576,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.5" version: "14.3.0"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:

View File

@ -1,7 +1,7 @@
name: uae_stat name: uae_stat
description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness." description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness."
publish_to: "none" publish_to: "none"
version: 1.0.9+10 version: 1.0.10+11
environment: environment:
sdk: ">=3.2.3 <4.0.0" sdk: ">=3.2.3 <4.0.0"
@ -21,7 +21,7 @@ dependencies:
riverpod_annotation: ^2.3.3 riverpod_annotation: ^2.3.3
cupertino_icons: ^1.0.6 cupertino_icons: ^1.0.6
fl_chart: ^0.69.2 fl_chart: ^0.70.2
iconify_design: ^1.0.1 iconify_design: ^1.0.1
marquee: ^2.2.3 marquee: ^2.2.3
url_launcher: ^6.3.1 url_launcher: ^6.3.1
@ -130,6 +130,8 @@ flutter:
- assets/feedback/thumbfb.png - assets/feedback/thumbfb.png
- assets/user_guide/ - assets/user_guide/
- assets/app_tour/ - assets/app_tour/
- assets/icons/misc/group.png
- assets/icons/misc/search.png
fonts: fonts:
- family: Segoe - family: Segoe