From c623b1e1f72738bec233e354b7b2ecc451ab0526 Mon Sep 17 00:00:00 2001 From: Kalonkarthik Date: Tue, 8 Apr 2025 15:22:02 +0530 Subject: [PATCH 1/3] Contact us and Notification UAT bug --- .../drawer_routes/Drawer Items/contactUs.dart | 162 +++++++++++++----- .../notification/notification.dart | 30 +++- 2 files changed, 146 insertions(+), 46 deletions(-) diff --git a/lib/presentation/routes/drawer_routes/Drawer Items/contactUs.dart b/lib/presentation/routes/drawer_routes/Drawer Items/contactUs.dart index cc9d72f2..41ad29f8 100644 --- a/lib/presentation/routes/drawer_routes/Drawer Items/contactUs.dart +++ b/lib/presentation/routes/drawer_routes/Drawer Items/contactUs.dart @@ -8,6 +8,7 @@ import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/enquiry_a import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:url_launcher/url_launcher.dart'; class Contact extends ConsumerStatefulWidget { const Contact({super.key}); @@ -57,43 +58,43 @@ class _ContactState extends ConsumerState { children: [ buildContactCard( context, - title: 'DUBAI - EMIRATES TOWER -32ND FLOOR', + title: 'DUBAI - EMIRATES TOWER - 32ND FLOOR', titleAr: 'دبي - أبراج الإمارات - الطابق 32', details: [ { 'icon': EnquiryAssetIconPath.building, - 'text': 'Office : Dubai - Emirates Tower -32nd Floor', - 'textAr': 'المقر الرئيسي : دبي - أبراج الإمارات - الطابق 32' + 'text': 'Office: Dubai - Emirates Tower - 32nd Floor', + 'textAr': 'المقر الرئيسي: دبي - أبراج الإمارات - الطابق 32' }, { 'icon': EnquiryAssetIconPath.phone, - 'text': 'Tel : 00971 46080000', - 'textAr': 'الهاتف : 0097146080000' + 'text': 'Tel: 00971 4608 0000', + 'textAr': 'الهاتف: 0097146080000' }, { 'icon': EnquiryAssetIconPath.fax, - 'text': 'Fax : 0097143273535', - 'textAr': 'فاكس : 0097143273535' + 'text': 'Fax: 00971 4327 3535', + 'textAr': 'فاكس: 0097143273535' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'P.O.Box : 127000 Dubai', - 'textAr': 'ص.ب: : 127000 دبي' + 'text': 'P.O.Box: 127000 Dubai', + 'textAr': 'ص.ب: 127000 دبي' }, { 'icon': EnquiryAssetIconPath.at, - 'text': 'Email Address : info@fcsc.gov.ae', - 'textAr': 'البريد الإلكتروني : info@fcsc.gov.ae' + 'text': 'Email Address: info@fcsc.gov.ae', + 'textAr': 'البريد الإلكتروني: info@fcsc.gov.ae' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Latitude : 25.223926', - 'textAr': 'خط العرض : 25.223926' + 'text': 'Latitude: 25.223926', + 'textAr': 'خط العرض: 25.223926' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Longitude : 55.350526', - 'textAr': 'خط الطول : 55.350526' + 'text': 'Longitude: 55.350526', + 'textAr': 'خط الطول: 55.350526' }, ], ), @@ -105,38 +106,38 @@ class _ContactState extends ConsumerState { details: [ { 'icon': EnquiryAssetIconPath.building, - 'text': 'Office : Media Section', - 'textAr': 'المقر الرئيسي : قسم الاعلام' + 'text': 'Office: Media Section', + 'textAr': 'المقر الرئيسي: قسم الاعلام' }, { 'icon': EnquiryAssetIconPath.phone, - 'text': 'Tel : 00971 46080000', - 'textAr': 'الهاتف : 0097146080000' + 'text': 'Tel: 00971 4608 0000', + 'textAr': 'الهاتف: 0097146080000' }, { 'icon': EnquiryAssetIconPath.fax, - 'text': 'Fax : 0097143273535', - 'textAr': 'فاكس : 0097143273535' + 'text': 'Fax: 00971 4327 3535', + 'textAr': 'فاكس: 0097143273535' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'P.O.Box : 127000 Dubai', - 'textAr': 'ص.ب: : 127000 دبي' + 'text': 'P.O.Box: 127000 Dubai', + 'textAr': 'ص.ب: 127000 دبي' }, { 'icon': EnquiryAssetIconPath.at, - 'text': 'Email Address : GCO@fcsc.gov.ae', - 'textAr': 'البريد الإلكتروني : GCO@fcsc.gov.ae' + 'text': 'Email Address: GCO@fcsc.gov.ae', + 'textAr': 'البريد الإلكتروني: GCO@fcsc.gov.ae' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Latitude : 25.223926', - 'textAr': 'خط العرض : 25.223926' + 'text': 'Latitude: 25.223926', + 'textAr': 'خط العرض: 25.223926' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Longitude : 55.350526', - 'textAr': 'خط الطول : 55.350526' + 'text': 'Longitude: 55.350526', + 'textAr': 'خط الطول: 55.350526' }, ], ), @@ -148,38 +149,38 @@ class _ContactState extends ConsumerState { details: [ { 'icon': EnquiryAssetIconPath.building, - 'text': 'Office : SDGs', - 'textAr': 'المقر الرئيسي : أهداف التنمية المستدامة' + 'text': 'Office: SDGs', + 'textAr': 'المقر الرئيسي: أهداف التنمية المستدامة' }, { 'icon': EnquiryAssetIconPath.phone, - 'text': 'Tel : 00971 46080000', - 'textAr': 'الهاتف : 0097146080000' + 'text': 'Tel: 00971 4608 0000', + 'textAr': 'الهاتف: 0097146080000' }, { 'icon': EnquiryAssetIconPath.fax, - 'text': 'Fax : 0097143273535', + 'text': 'Fax: 00971 4327 3535', 'textAr': 'فاكس : 0097143273535' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'P.O.Box : 127000 Dubai', - 'textAr': 'ص.ب: : 127000 دبي' + 'text': 'P.O.Box: 127000 Dubai', + 'textAr': 'ص.ب: 127000 دبي' }, { 'icon': EnquiryAssetIconPath.at, - 'text': 'Email Address : sdgs@fcsc.gov.ae', - 'textAr': 'البريد الإلكتروني : sdgs@fcsc.gov.ae' + 'text': 'Email Address: sdgs@fcsc.gov.ae', + 'textAr': 'البريد الإلكتروني: sdgs@fcsc.gov.ae' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Latitude : 25.223926', - 'textAr': 'خط العرض : 25.223926' + 'text': 'Latitude: 25.223926', + 'textAr': 'خط العرض: 25.223926' }, { 'icon': EnquiryAssetIconPath.map, - 'text': 'Longitude : 55.350526', - 'textAr': 'خط الطول : 55.350526' + 'text': 'Longitude: 55.350526', + 'textAr': 'خط الطول: 55.350526' }, ], ), @@ -229,6 +230,34 @@ class _ContactState extends ConsumerState { } Widget buildTextRow(String iconName, String text) { + List values = List.filled(2, ''); + String cleanText = ''; + + if (text.toLowerCase().contains('tel:') || text.toLowerCase().contains('الهاتف:')) { + values = text.split(':'); + print ('List of values----- :$values'); + print ('value 1 ${values[0]}'); + cleanText=values[1].replaceAll(' ', ''); + } else if(text.toLowerCase().contains('email address:') || text.toLowerCase().contains('البريد الإلكتروني:')){ + values = text.split(':'); + cleanText = values[1].replaceAll(' ', ''); + } else{ + cleanText = text; + } + + Future sendEmail(String emailAddress) async { + print ('before email : $emailAddress'); + final uri = Uri( + scheme: 'mailto', + path: emailAddress, + ); + if (await canLaunchUrl(uri)) { + await launchUrl(uri); + } else { + debugPrint('Could not launch $uri'); + } + } + return Padding( padding: const EdgeInsets.symmetric(vertical: 5.0), child: Row( @@ -240,7 +269,54 @@ class _ContactState extends ConsumerState { height: 20, ), const SizedBox(width: 10), - Expanded( + iconName == EnquiryAssetIconPath.phone + ? InkWell( + onTap: () async{ + print('clean test : $cleanText'); + final uri = Uri(scheme: 'tel', path: cleanText); + if (await canLaunchUrl(uri)) { + await launchUrl(uri); + } else { + debugPrint('Could not launch $uri'); + } + }, + child: RichText( + text: TextSpan( + text: values[0], + style: const TextStyle(fontSize: 14, color: Color(0xFF5F5F5F)), + children: [ + TextSpan(text: ':',), + TextSpan(text: values[1], + style: TextStyle(fontSize: 14, color:Color(0xFF985400)) + ), + ], + ), + ), + // child: Text( + // text, + // style: const TextStyle( + // fontSize: 14, + // color: Color(0xFF5F5F5F), + // ), + // ), + ) + : iconName == EnquiryAssetIconPath.at + ? InkWell( + onTap: () => sendEmail(cleanText), + child: RichText( + text: TextSpan( + text: values[0], + style: const TextStyle(fontSize: 14, color: Color(0xFF5F5F5F)), + children: [ + TextSpan(text: ':',), + TextSpan(text: values[1], + style: TextStyle(fontSize: 14, color:Color(0xFF985400)) + ), + ], + ), + ), + ) + :Expanded( child: Text( text, style: const TextStyle( diff --git a/lib/presentation/routes/drawer_routes/Drawer Items/notification/notification.dart b/lib/presentation/routes/drawer_routes/Drawer Items/notification/notification.dart index 6fb39abb..a96b179d 100644 --- a/lib/presentation/routes/drawer_routes/Drawer Items/notification/notification.dart +++ b/lib/presentation/routes/drawer_routes/Drawer Items/notification/notification.dart @@ -26,6 +26,7 @@ class _NotificationPageState extends ConsumerState { bool isLoading = true; List> notifications = []; List userReadedNotiOrNot = []; + String notificationCount=''; // Current selected tab index int selectedTabIndex = 0; @@ -48,7 +49,30 @@ class _NotificationPageState extends ConsumerState { super.initState(); locale = ref.read(localeProvider) ?? const Locale('en'); _userService = UserService(); - fetchNotifications(locale?.languageCode ?? 'en'); + _initializePage(); + } + + Future _initializePage() async { + _userService = UserService(); + await _fetchUserData();(); + await fetchNotifications(locale?.languageCode ?? 'en'); + _processNotifications(notifications , userReadedNotiOrNot); + } + + void _processNotifications( List> notification ,List push ){ + print ('inside last function ${notification.length}'); + print('inside last function ${push.length}'); + + int count = 0; + for (var product in notification) { + if (push.contains(product['id'])) { + count++; + } + } + print('count is $count'); + if(count>0){ + notificationCount='{$count}';} + else{notificationCount='';} } Future getUserId() async { @@ -188,8 +212,8 @@ class _NotificationPageState extends ConsumerState { child: BaseScaffold( title: Text( context.translate( - 'Notification', - 'إشعار', + 'Notification $notificationCount', + '$notificationCount إشعار ', ), ), body: isLoading From 24179488a3b14d077752d7dfb200ad15a919e57e Mon Sep 17 00:00:00 2001 From: Kalonkarthik Date: Wed, 9 Apr 2025 14:46:08 +0530 Subject: [PATCH 2/3] chart screen app bar title bug --- .../UAE_Numbers/uae_numbers.dart | 4 ++-- .../Screens/charts/screens/chart_screen.dart | 7 ++++++- .../routes/drawer_routes/custom_drawer_routes.dart | 12 ++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/presentation/Screens/Bottom Navigation Pages/UAE_Numbers/uae_numbers.dart b/lib/presentation/Screens/Bottom Navigation Pages/UAE_Numbers/uae_numbers.dart index a9e03fbc..3bb9ea40 100644 --- a/lib/presentation/Screens/Bottom Navigation Pages/UAE_Numbers/uae_numbers.dart +++ b/lib/presentation/Screens/Bottom Navigation Pages/UAE_Numbers/uae_numbers.dart @@ -427,10 +427,10 @@ class _UaenumberWidgetState extends ConsumerState { // print(data_set); final encodedMainTopic = Uri.encodeComponent(mainTopic); final encodedTitle = Uri.encodeComponent(title); - + final encodedKey = Uri.encodeQueryComponent('uaenumbers'); // Pass mainTopic and title as query parameters context.push( - '/chartScreen/$data_set?bgColor=$colorPattern&mainTopic=$encodedMainTopic&title=$encodedTitle'); + '/chartScreen/$data_set?bgColor=$colorPattern&mainTopic=$encodedMainTopic&title=$encodedTitle&key=$encodedKey'); // context.go('/chartScreen/$data_set'); }, child: Card( diff --git a/lib/presentation/Screens/charts/screens/chart_screen.dart b/lib/presentation/Screens/charts/screens/chart_screen.dart index dd771b50..0e5fb1f3 100644 --- a/lib/presentation/Screens/charts/screens/chart_screen.dart +++ b/lib/presentation/Screens/charts/screens/chart_screen.dart @@ -2096,6 +2096,9 @@ class _ChartScreen1State extends ConsumerState { Widget build(BuildContext context) { final locale = ref.watch(localeProvider); final localeNotifier = ref.read(localeProvider.notifier); + String url=GoRouterState.of(context).uri.toString(); + final uri = Uri.parse(url); + final pageTitle = uri.queryParameters['key'] ?? ''; final isConnected = ref.watch(connectivityProvider); @@ -2184,7 +2187,9 @@ class _ChartScreen1State extends ConsumerState { child: BaseScaffold( key: _scaffoldKey, - title: Text( + title: (pageTitle == 'home') + ? Text(AppLocalizations.of(context)!.nav_home) + : Text( context.translate( 'UAE Numbers', 'أرقام الإمارات', diff --git a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart index ee494612..e0da5e82 100644 --- a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart +++ b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart @@ -95,6 +95,7 @@ class _BaseScaffoldState extends ConsumerState { locale = ref.read(localeProvider) ?? const Locale('en'); WidgetsBinding.instance.addPostFrameCallback((_) { _startAppbarTour(); + _routeToIndex(); }); } @@ -697,6 +698,17 @@ class _BaseScaffoldState extends ConsumerState { // } final PAuthRepo _authRepo = PAuthRepo(); + void _routeToIndex() { + String url=GoRouterState.of(context).uri.toString(); + final uri = Uri.parse(url); + final fromValue = uri.queryParameters['key'] ?? ''; + if (fromValue=='home'){ + ref.read(selectedIndexProvider.notifier).state= 0; + }else if (fromValue=='uaenumbers'){ + ref.read(selectedIndexProvider.notifier).state= 1; + } + } + Future logout(BuildContext context) async { final prefs = await SharedPreferences.getInstance(); await _authRepo.logout(); From 162a1e5fa8433346fad6679f7058551a7bda378b Mon Sep 17 00:00:00 2001 From: Kalonkarthik Date: Thu, 10 Apr 2025 15:54:23 +0530 Subject: [PATCH 3/3] Terms&Conditions --- lib/config/my_router.dart | 9 +++++---- .../Screens/auth_verification/registration.dart | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/config/my_router.dart b/lib/config/my_router.dart index 52e6906b..7cf89322 100644 --- a/lib/config/my_router.dart +++ b/lib/config/my_router.dart @@ -504,14 +504,12 @@ final GoRouter router = GoRouter( ), ), GoRoute( - path: '/terms&conditions', + path: '/termsandconditions', builder: (context, state) => TermsOfUse(), - //builder: (context, state) => LoginRoute(), ), GoRoute( path: '/privacy_policy', builder: (context, state) => PrivacyPolicy(), - //builder: (context, state) => LoginRoute(), ), // Drawer Routers @@ -668,7 +666,10 @@ final GoRouter router = GoRouter( if (state.uri.path == '/SessionCheckScreen' || state.uri.path == '/login' || state.uri.path == '/register' || - state.uri.path == '/forgot-password/:email') { + state.uri.path == '/forgot-password/:email'|| + state.uri.path == '/termsandconditions'|| + state.uri.path == '/privacy_policy' + ) { return null; } diff --git a/lib/presentation/Screens/auth_verification/registration.dart b/lib/presentation/Screens/auth_verification/registration.dart index 0c885f53..88daf83d 100644 --- a/lib/presentation/Screens/auth_verification/registration.dart +++ b/lib/presentation/Screens/auth_verification/registration.dart @@ -1087,7 +1087,7 @@ class _RegisterScreenState extends ConsumerState { TapGestureRecognizer() ..onTap = () => context.push( - '/terms&conditions'), + '/termsandconditions'), text: AppLocalizations .of(context)! .terms_conditions,