forgot password
This commit is contained in:
parent
40aefbb045
commit
65a7f87363
@ -18,7 +18,7 @@ dependencies:
|
|||||||
pocketbase: ^0.18.1
|
pocketbase: ^0.18.1
|
||||||
excel: ^4.0.3
|
excel: ^4.0.3
|
||||||
csv: ^6.0.0
|
csv: ^6.0.0
|
||||||
intl: ^0.19.0
|
intl: ^0.20.2
|
||||||
freezed_annotation: ^2.4.2
|
freezed_annotation: ^2.4.2
|
||||||
# path: ^1.8.0
|
# path: ^1.8.0
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import 'dart:developer';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
// import 'package:app_links/app_links.dart';
|
// import 'package:app_links/app_links.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/UAE_Numbers/Social/marriages.dart';
|
|
||||||
import 'package:uae_stat/presentation/routes/auth_routes/login_route.dart';
|
import 'package:uae_stat/presentation/routes/auth_routes/login_route.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';
|
||||||
|
|
||||||
@ -44,10 +43,7 @@ class _DeepLinkListenerState extends State<DeepLinkListener> {
|
|||||||
if (uri.pathSegments.isNotEmpty) {
|
if (uri.pathSegments.isNotEmpty) {
|
||||||
final String firstSegment = uri.pathSegments.first;
|
final String firstSegment = uri.pathSegments.first;
|
||||||
|
|
||||||
if (firstSegment == 'marriages') {
|
if (firstSegment == 'login') {
|
||||||
Navigator.of(context)
|
|
||||||
.push(MaterialPageRoute(builder: (context) => Marriages()));
|
|
||||||
} else if (firstSegment == 'login') {
|
|
||||||
Navigator.of(context)
|
Navigator.of(context)
|
||||||
.push(MaterialPageRoute(builder: (context) => LoginRoute()));
|
.push(MaterialPageRoute(builder: (context) => LoginRoute()));
|
||||||
} else if (firstSegment == 'home') {
|
} else if (firstSegment == 'home') {
|
||||||
|
|||||||
@ -302,7 +302,6 @@ import 'package:uae_stat/domain/entities/session_entity.dart';
|
|||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Competitiveness/Detailedcompetitiveness.dart';
|
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Competitiveness/Detailedcompetitiveness.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/DetailedCountryProfilePage.dart';
|
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/Country_Profile/DetailedCountryProfilePage.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/Bottom%20Navigation%20Pages/UAE_Numbers/Social/marriages.dart';
|
|
||||||
import 'package:uae_stat/presentation/Screens/app_tour/WelcomePage.dart';
|
import 'package:uae_stat/presentation/Screens/app_tour/WelcomePage.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/auth_verification/forgot_password.dart';
|
import 'package:uae_stat/presentation/Screens/auth_verification/forgot_password.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/auth_verification/privacy_policy.dart';
|
import 'package:uae_stat/presentation/Screens/auth_verification/privacy_policy.dart';
|
||||||
@ -678,11 +677,6 @@ final GoRouter router = GoRouter(
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
||||||
GoRoute(
|
|
||||||
path: '/marriages',
|
|
||||||
builder: (context, state) => Marriages(),
|
|
||||||
),
|
|
||||||
|
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/contact',
|
path: '/contact',
|
||||||
builder: (context, state) => Contact(),
|
builder: (context, state) => Contact(),
|
||||||
|
|||||||
829
lib/l10n/app_localizations.dart
Normal file
829
lib/l10n/app_localizations.dart
Normal file
@ -0,0 +1,829 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
|
import 'package:intl/intl.dart' as intl;
|
||||||
|
|
||||||
|
import 'app_localizations_ar.dart';
|
||||||
|
import 'app_localizations_en.dart';
|
||||||
|
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
/// Callers can lookup localized strings with an instance of AppLocalizations
|
||||||
|
/// returned by `AppLocalizations.of(context)`.
|
||||||
|
///
|
||||||
|
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
||||||
|
/// `localizationDelegates` list, and the locales they support in the app's
|
||||||
|
/// `supportedLocales` list. For example:
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// import 'l10n/app_localizations.dart';
|
||||||
|
///
|
||||||
|
/// return MaterialApp(
|
||||||
|
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||||
|
/// supportedLocales: AppLocalizations.supportedLocales,
|
||||||
|
/// home: MyApplicationHome(),
|
||||||
|
/// );
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// ## Update pubspec.yaml
|
||||||
|
///
|
||||||
|
/// Please make sure to update your pubspec.yaml to include the following
|
||||||
|
/// packages:
|
||||||
|
///
|
||||||
|
/// ```yaml
|
||||||
|
/// dependencies:
|
||||||
|
/// # Internationalization support.
|
||||||
|
/// flutter_localizations:
|
||||||
|
/// sdk: flutter
|
||||||
|
/// intl: any # Use the pinned version from flutter_localizations
|
||||||
|
///
|
||||||
|
/// # Rest of dependencies
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// ## iOS Applications
|
||||||
|
///
|
||||||
|
/// iOS applications define key application metadata, including supported
|
||||||
|
/// locales, in an Info.plist file that is built into the application bundle.
|
||||||
|
/// To configure the locales supported by your app, you’ll need to edit this
|
||||||
|
/// file.
|
||||||
|
///
|
||||||
|
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||||||
|
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||||||
|
/// project’s Runner folder.
|
||||||
|
///
|
||||||
|
/// Next, select the Information Property List item, select Add Item from the
|
||||||
|
/// Editor menu, then select Localizations from the pop-up menu.
|
||||||
|
///
|
||||||
|
/// Select and expand the newly-created Localizations item then, for each
|
||||||
|
/// locale your application supports, add a new item and select the locale
|
||||||
|
/// you wish to add from the pop-up menu in the Value field. This list should
|
||||||
|
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
||||||
|
/// property.
|
||||||
|
abstract class AppLocalizations {
|
||||||
|
AppLocalizations(String locale)
|
||||||
|
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||||||
|
|
||||||
|
final String localeName;
|
||||||
|
|
||||||
|
static AppLocalizations? of(BuildContext context) {
|
||||||
|
return Localizations.of<AppLocalizations>(context, AppLocalizations);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const LocalizationsDelegate<AppLocalizations> delegate =
|
||||||
|
_AppLocalizationsDelegate();
|
||||||
|
|
||||||
|
/// A list of this localizations delegate along with the default localizations
|
||||||
|
/// delegates.
|
||||||
|
///
|
||||||
|
/// Returns a list of localizations delegates containing this delegate along with
|
||||||
|
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||||||
|
/// and GlobalWidgetsLocalizations.delegate.
|
||||||
|
///
|
||||||
|
/// Additional delegates can be added by appending to this list in
|
||||||
|
/// MaterialApp. This list does not have to be used at all if a custom list
|
||||||
|
/// of delegates is preferred or required.
|
||||||
|
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||||||
|
<LocalizationsDelegate<dynamic>>[
|
||||||
|
delegate,
|
||||||
|
GlobalMaterialLocalizations.delegate,
|
||||||
|
GlobalCupertinoLocalizations.delegate,
|
||||||
|
GlobalWidgetsLocalizations.delegate,
|
||||||
|
];
|
||||||
|
|
||||||
|
/// A list of this localizations delegate's supported locales.
|
||||||
|
static const List<Locale> supportedLocales = <Locale>[
|
||||||
|
Locale('ar'),
|
||||||
|
Locale('en')
|
||||||
|
];
|
||||||
|
|
||||||
|
/// No description provided for @all_bookmarks.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'All Bookmarks'**
|
||||||
|
String get all_bookmarks;
|
||||||
|
|
||||||
|
/// No description provided for @economy_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Economy'**
|
||||||
|
String get economy_title;
|
||||||
|
|
||||||
|
/// No description provided for @social_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Social'**
|
||||||
|
String get social_title;
|
||||||
|
|
||||||
|
/// No description provided for @environment_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Environment'**
|
||||||
|
String get environment_title;
|
||||||
|
|
||||||
|
/// No description provided for @economy_title_upper.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'ECONOMY'**
|
||||||
|
String get economy_title_upper;
|
||||||
|
|
||||||
|
/// No description provided for @social_title_upper.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'SOCIAL'**
|
||||||
|
String get social_title_upper;
|
||||||
|
|
||||||
|
/// No description provided for @environment_title_upper.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'ENVIRONMENT'**
|
||||||
|
String get environment_title_upper;
|
||||||
|
|
||||||
|
/// No description provided for @bookmarks.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Bookmarks'**
|
||||||
|
String get bookmarks;
|
||||||
|
|
||||||
|
/// No description provided for @searchCountry.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Search Country'**
|
||||||
|
String get searchCountry;
|
||||||
|
|
||||||
|
/// No description provided for @feedback_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Feedback'**
|
||||||
|
String get feedback_title;
|
||||||
|
|
||||||
|
/// No description provided for @feedback_failed_msg.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Your feedback could not be \n submitted. Please try again'**
|
||||||
|
String get feedback_failed_msg;
|
||||||
|
|
||||||
|
/// No description provided for @thankYou.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Thank you'**
|
||||||
|
String get thankYou;
|
||||||
|
|
||||||
|
/// No description provided for @feedback_message.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'For your valuable feedback, we truly appreciate your input!'**
|
||||||
|
String get feedback_message;
|
||||||
|
|
||||||
|
/// No description provided for @failed_to_sharefeedback.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Failed to Share Feedback'**
|
||||||
|
String get failed_to_sharefeedback;
|
||||||
|
|
||||||
|
/// No description provided for @feedback_submitted.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Feedback submitted successfully!'**
|
||||||
|
String get feedback_submitted;
|
||||||
|
|
||||||
|
/// No description provided for @formError.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Please correct the errors before submitting.'**
|
||||||
|
String get formError;
|
||||||
|
|
||||||
|
/// No description provided for @feedback_failed.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Failed to submit feedback: {error}'**
|
||||||
|
String feedback_failed(Object error);
|
||||||
|
|
||||||
|
/// No description provided for @skip.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Skip'**
|
||||||
|
String get skip;
|
||||||
|
|
||||||
|
/// No description provided for @got_it.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Got it'**
|
||||||
|
String get got_it;
|
||||||
|
|
||||||
|
/// No description provided for @exit_app.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Exit App'**
|
||||||
|
String get exit_app;
|
||||||
|
|
||||||
|
/// No description provided for @exit_confirmation.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Are you sure you want to exit?'**
|
||||||
|
String get exit_confirmation;
|
||||||
|
|
||||||
|
/// No description provided for @cancel.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Cancel'**
|
||||||
|
String get cancel;
|
||||||
|
|
||||||
|
/// No description provided for @exit.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Exit'**
|
||||||
|
String get exit;
|
||||||
|
|
||||||
|
/// No description provided for @bookmark_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Bookmark'**
|
||||||
|
String get bookmark_title;
|
||||||
|
|
||||||
|
/// No description provided for @failed_To_Remove.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Failed to Remove'**
|
||||||
|
String get failed_To_Remove;
|
||||||
|
|
||||||
|
/// No description provided for @removed_from_Bookmark.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Removed from Bookmark'**
|
||||||
|
String get removed_from_Bookmark;
|
||||||
|
|
||||||
|
/// No description provided for @added_to_Bookmark.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Added to Bookmark.'**
|
||||||
|
String get added_to_Bookmark;
|
||||||
|
|
||||||
|
/// No description provided for @notification.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Notification'**
|
||||||
|
String get notification;
|
||||||
|
|
||||||
|
/// No description provided for @register_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Register'**
|
||||||
|
String get register_title;
|
||||||
|
|
||||||
|
/// No description provided for @register_details.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Please enter your details'**
|
||||||
|
String get register_details;
|
||||||
|
|
||||||
|
/// No description provided for @register_name.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Username'**
|
||||||
|
String get register_name;
|
||||||
|
|
||||||
|
/// No description provided for @email_id.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Email ID'**
|
||||||
|
String get email_id;
|
||||||
|
|
||||||
|
/// No description provided for @enter_name.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Enter your User Name'**
|
||||||
|
String get enter_name;
|
||||||
|
|
||||||
|
/// No description provided for @enter_your_email.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Enter your email'**
|
||||||
|
String get enter_your_email;
|
||||||
|
|
||||||
|
/// No description provided for @enter_your_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Enter your password'**
|
||||||
|
String get enter_your_password;
|
||||||
|
|
||||||
|
/// No description provided for @register_Confirm_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Confirm password'**
|
||||||
|
String get register_Confirm_password;
|
||||||
|
|
||||||
|
/// No description provided for @agree.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'I agree to the '**
|
||||||
|
String get agree;
|
||||||
|
|
||||||
|
/// No description provided for @t_and.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **' and '**
|
||||||
|
String get t_and;
|
||||||
|
|
||||||
|
/// No description provided for @conditions.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **' of FCSC'**
|
||||||
|
String get conditions;
|
||||||
|
|
||||||
|
/// No description provided for @terms_conditions.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Terms & Conditions'**
|
||||||
|
String get terms_conditions;
|
||||||
|
|
||||||
|
/// No description provided for @privacy_policy.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Privacy Policy'**
|
||||||
|
String get privacy_policy;
|
||||||
|
|
||||||
|
/// No description provided for @account_confirmation.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Already have an account?'**
|
||||||
|
String get account_confirmation;
|
||||||
|
|
||||||
|
/// No description provided for @login_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Login'**
|
||||||
|
String get login_title;
|
||||||
|
|
||||||
|
/// No description provided for @all_updates.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'All updates'**
|
||||||
|
String get all_updates;
|
||||||
|
|
||||||
|
/// No description provided for @app_updates.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'App updates'**
|
||||||
|
String get app_updates;
|
||||||
|
|
||||||
|
/// No description provided for @notificationSocial.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Social'**
|
||||||
|
String get notificationSocial;
|
||||||
|
|
||||||
|
/// No description provided for @notificationEconomy.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Economy'**
|
||||||
|
String get notificationEconomy;
|
||||||
|
|
||||||
|
/// No description provided for @notificationEnvironment.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Environment'**
|
||||||
|
String get notificationEnvironment;
|
||||||
|
|
||||||
|
/// No description provided for @notificationFavourites.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Favourites'**
|
||||||
|
String get notificationFavourites;
|
||||||
|
|
||||||
|
/// No description provided for @profile_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Edit Profile'**
|
||||||
|
String get profile_title;
|
||||||
|
|
||||||
|
/// No description provided for @my_profile.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'My Profile'**
|
||||||
|
String get my_profile;
|
||||||
|
|
||||||
|
/// No description provided for @logout.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Logout'**
|
||||||
|
String get logout;
|
||||||
|
|
||||||
|
/// No description provided for @full_name.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Full Name*'**
|
||||||
|
String get full_name;
|
||||||
|
|
||||||
|
/// No description provided for @dob.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Date of Birth*'**
|
||||||
|
String get dob;
|
||||||
|
|
||||||
|
/// No description provided for @region.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Country/Region'**
|
||||||
|
String get region;
|
||||||
|
|
||||||
|
/// No description provided for @preferredLang.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Preferred Language'**
|
||||||
|
String get preferredLang;
|
||||||
|
|
||||||
|
/// No description provided for @confirm.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Confirm'**
|
||||||
|
String get confirm;
|
||||||
|
|
||||||
|
/// No description provided for @change_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Change Password'**
|
||||||
|
String get change_password;
|
||||||
|
|
||||||
|
/// No description provided for @sure_save_page.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Are you sure you want to save this page? '**
|
||||||
|
String get sure_save_page;
|
||||||
|
|
||||||
|
/// No description provided for @not_able_to_change.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Once saved, you will not be able to change your '**
|
||||||
|
String get not_able_to_change;
|
||||||
|
|
||||||
|
/// No description provided for @save.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Save'**
|
||||||
|
String get save;
|
||||||
|
|
||||||
|
/// No description provided for @name.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Name'**
|
||||||
|
String get name;
|
||||||
|
|
||||||
|
/// No description provided for @guide_title.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'User Guide'**
|
||||||
|
String get guide_title;
|
||||||
|
|
||||||
|
/// No description provided for @nav_home.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'HOME'**
|
||||||
|
String get nav_home;
|
||||||
|
|
||||||
|
/// No description provided for @nav_uae.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'UAE Numbers'**
|
||||||
|
String get nav_uae;
|
||||||
|
|
||||||
|
/// No description provided for @nav_competitiveness.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Competitiveness'**
|
||||||
|
String get nav_competitiveness;
|
||||||
|
|
||||||
|
/// No description provided for @country_profile.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Country Profile'**
|
||||||
|
String get country_profile;
|
||||||
|
|
||||||
|
/// No description provided for @agree_terms_conditions.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Please agree to terms and conditions.'**
|
||||||
|
String get agree_terms_conditions;
|
||||||
|
|
||||||
|
/// No description provided for @retry.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Retry'**
|
||||||
|
String get retry;
|
||||||
|
|
||||||
|
/// No description provided for @select.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Select'**
|
||||||
|
String get select;
|
||||||
|
|
||||||
|
/// No description provided for @email_exists.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Email exists'**
|
||||||
|
String get email_exists;
|
||||||
|
|
||||||
|
/// No description provided for @email_exists_msg.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Email ID already exists. Please use a different email.'**
|
||||||
|
String get email_exists_msg;
|
||||||
|
|
||||||
|
/// No description provided for @email_invalid.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'The email is invalid or already in use.'**
|
||||||
|
String get email_invalid;
|
||||||
|
|
||||||
|
/// No description provided for @required.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Required'**
|
||||||
|
String get required;
|
||||||
|
|
||||||
|
/// No description provided for @only40charac.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Must not exceed 40 characters'**
|
||||||
|
String get only40charac;
|
||||||
|
|
||||||
|
/// No description provided for @invalid_characters.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Invalid Characters'**
|
||||||
|
String get invalid_characters;
|
||||||
|
|
||||||
|
/// No description provided for @invalid_email.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Invalid Email'**
|
||||||
|
String get invalid_email;
|
||||||
|
|
||||||
|
/// No description provided for @password_invalid.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Password contains invalid characters'**
|
||||||
|
String get password_invalid;
|
||||||
|
|
||||||
|
/// No description provided for @password_match.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Passwords do not match'**
|
||||||
|
String get password_match;
|
||||||
|
|
||||||
|
/// No description provided for @only8charac.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Password must be at least 8characters'**
|
||||||
|
String get only8charac;
|
||||||
|
|
||||||
|
/// No description provided for @manage_user.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Manage User'**
|
||||||
|
String get manage_user;
|
||||||
|
|
||||||
|
/// No description provided for @user_name.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'User Name'**
|
||||||
|
String get user_name;
|
||||||
|
|
||||||
|
/// No description provided for @reg_date.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Registration Date'**
|
||||||
|
String get reg_date;
|
||||||
|
|
||||||
|
/// No description provided for @status.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Status'**
|
||||||
|
String get status;
|
||||||
|
|
||||||
|
/// No description provided for @denied.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Denied'**
|
||||||
|
String get denied;
|
||||||
|
|
||||||
|
/// No description provided for @pending.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Pending'**
|
||||||
|
String get pending;
|
||||||
|
|
||||||
|
/// No description provided for @approved.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Approved'**
|
||||||
|
String get approved;
|
||||||
|
|
||||||
|
/// No description provided for @approve_msg.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Are you sure you want to change the status to '**
|
||||||
|
String get approve_msg;
|
||||||
|
|
||||||
|
/// No description provided for @yes.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Yes'**
|
||||||
|
String get yes;
|
||||||
|
|
||||||
|
/// No description provided for @no.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'No'**
|
||||||
|
String get no;
|
||||||
|
|
||||||
|
/// No description provided for @no_result_found.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'No results found'**
|
||||||
|
String get no_result_found;
|
||||||
|
|
||||||
|
/// No description provided for @search.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Search'**
|
||||||
|
String get search;
|
||||||
|
|
||||||
|
/// No description provided for @status_success.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Status updated successfully'**
|
||||||
|
String get status_success;
|
||||||
|
|
||||||
|
/// No description provided for @profile_updated_successfully.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Profile updated successfully'**
|
||||||
|
String get profile_updated_successfully;
|
||||||
|
|
||||||
|
/// No description provided for @create_new_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Create New Password'**
|
||||||
|
String get create_new_password;
|
||||||
|
|
||||||
|
/// No description provided for @different_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Your New Password Must Be Different form Previously Used Password'**
|
||||||
|
String get different_password;
|
||||||
|
|
||||||
|
/// No description provided for @old_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Old Password'**
|
||||||
|
String get old_password;
|
||||||
|
|
||||||
|
/// No description provided for @enter_new_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Enter new password'**
|
||||||
|
String get enter_new_password;
|
||||||
|
|
||||||
|
/// No description provided for @confirm_new_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Confirm new password'**
|
||||||
|
String get confirm_new_password;
|
||||||
|
|
||||||
|
/// No description provided for @password_changed_successfully.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Password Changed Successfully'**
|
||||||
|
String get password_changed_successfully;
|
||||||
|
|
||||||
|
/// No description provided for @enter_old_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Enter old Password'**
|
||||||
|
String get enter_old_password;
|
||||||
|
|
||||||
|
/// No description provided for @your_old_password_incorrect.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Your old password is incorrect.'**
|
||||||
|
String get your_old_password_incorrect;
|
||||||
|
|
||||||
|
/// No description provided for @failed_to_update_password.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **''**
|
||||||
|
String get failed_to_update_password;
|
||||||
|
|
||||||
|
/// No description provided for @password_update_successfully.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Password updated successfully.'**
|
||||||
|
String get password_update_successfully;
|
||||||
|
|
||||||
|
/// No description provided for @new_password_not_same_as_old.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'New password must not be the same as the old password'**
|
||||||
|
String get new_password_not_same_as_old;
|
||||||
|
|
||||||
|
/// No description provided for @password_between_8_to_40.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Password must be between 8 and 40 characters'**
|
||||||
|
String get password_between_8_to_40;
|
||||||
|
|
||||||
|
/// No description provided for @new_password_required.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'New password is required'**
|
||||||
|
String get new_password_required;
|
||||||
|
|
||||||
|
/// No description provided for @old_password_is_required.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Old password is required'**
|
||||||
|
String get old_password_is_required;
|
||||||
|
|
||||||
|
/// No description provided for @confirm_password_is_required.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Confirm password is required'**
|
||||||
|
String get confirm_password_is_required;
|
||||||
|
|
||||||
|
/// No description provided for @kpiCards.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'View interactive KPI cards and graphs to explore data trends and compare key metrics visually.'**
|
||||||
|
String get kpiCards;
|
||||||
|
|
||||||
|
/// No description provided for @home_topic.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Tap on any category (e.g., Economy, Social, Environment) to explore detailed KPIs, visualizations, and data insights.'**
|
||||||
|
String get home_topic;
|
||||||
|
|
||||||
|
/// No description provided for @economy.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Access detailed statistics and drill-down pages for KPIs in the Economy category to uncover key trends and metrics.'**
|
||||||
|
String get economy;
|
||||||
|
|
||||||
|
/// No description provided for @bookMark.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Bookmark important KPIs or datasets for quick and easy access anytime through the Bookmarks section.'**
|
||||||
|
String get bookMark;
|
||||||
|
|
||||||
|
/// No description provided for @toggle.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Switch between English and Arabic using the language toggle at the top-right corner for a bilingual experience.'**
|
||||||
|
String get toggle;
|
||||||
|
|
||||||
|
/// No description provided for @tour_navBar.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Access dedicated pages and additional features by selecting options from the Main Menu.'**
|
||||||
|
String get tour_navBar;
|
||||||
|
|
||||||
|
/// No description provided for @mainMenu.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Use the navigation bar to quickly access Profile, Feedback, User Guide, Notifications, and other key app features.'**
|
||||||
|
String get mainMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
class _AppLocalizationsDelegate
|
||||||
|
extends LocalizationsDelegate<AppLocalizations> {
|
||||||
|
const _AppLocalizationsDelegate();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<AppLocalizations> load(Locale locale) {
|
||||||
|
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isSupported(Locale locale) =>
|
||||||
|
<String>['ar', 'en'].contains(locale.languageCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AppLocalizations lookupAppLocalizations(Locale locale) {
|
||||||
|
// Lookup logic when only language code is specified.
|
||||||
|
switch (locale.languageCode) {
|
||||||
|
case 'ar':
|
||||||
|
return AppLocalizationsAr();
|
||||||
|
case 'en':
|
||||||
|
return AppLocalizationsEn();
|
||||||
|
}
|
||||||
|
|
||||||
|
throw FlutterError(
|
||||||
|
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||||||
|
'an issue with the localizations generation tool. Please file an issue '
|
||||||
|
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||||||
|
'that was used.');
|
||||||
|
}
|
||||||
376
lib/l10n/app_localizations_ar.dart
Normal file
376
lib/l10n/app_localizations_ar.dart
Normal file
@ -0,0 +1,376 @@
|
|||||||
|
// ignore: unused_import
|
||||||
|
import 'package:intl/intl.dart' as intl;
|
||||||
|
import 'app_localizations.dart';
|
||||||
|
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
/// The translations for Arabic (`ar`).
|
||||||
|
class AppLocalizationsAr extends AppLocalizations {
|
||||||
|
AppLocalizationsAr([String locale = 'ar']) : super(locale);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get all_bookmarks => 'كل العلامات المرجعية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy_title => 'اقتصاد';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get social_title => 'اجتماعي';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get environment_title => 'بيئة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy_title_upper => 'اقتصاد';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get social_title_upper => 'اجتماعي';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get environment_title_upper => 'بيئة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookmarks => 'الإشارات المرجعية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get searchCountry => 'Search Country';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_title => 'تعليق';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_failed_msg =>
|
||||||
|
'لم يتم إرسال تعليقاتك. يرجى المحاولة مرة أخرى.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get thankYou => 'شكراً';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_message => 'لملاحظاتك القيمة، نحن نقدر مساهمتك حقًا!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_to_sharefeedback => 'فشل في مشاركة الملاحظات';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_submitted => 'تم إرسال الملاحظات بنجاح!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formError => 'يرجى تصحيح الأخطاء قبل الإرسال.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String feedback_failed(Object error) {
|
||||||
|
return 'فشل في إرسال التعليق: $error';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get skip => 'تخطي';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get got_it => 'فهمت';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit_app => 'الخروج من التطبيق';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit_confirmation => 'هل أنت متأكد أنك تريد الخروج؟';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get cancel => 'إلغاء';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit => 'خروج';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookmark_title => 'إشارة مرجعية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_To_Remove => 'فشلت الإزالة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get removed_from_Bookmark => 'تمت الإزالة من الإشارة المرجعية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get added_to_Bookmark => 'تمت إضافته إلى الإشارة المرجعية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notification => 'إشعار';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_title => 'التسجيل';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_details => 'من فضلك ادخل بياناتك';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_name => 'اسم المستخدم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_id => 'معرف البريد الإلكتروني';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_name => 'أدخل الاسم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_your_email => 'أدخل بريدك الإلكتروني';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_your_password => 'أدخل كلمة المرور';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_Confirm_password => 'تأكيد كلمة المرور';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get agree =>
|
||||||
|
'أوافق على الشروط والأحكام وسياسة الخصوصية للمركز الإتحادي للتنافسية والإحصاء';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get t_and => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get conditions => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get terms_conditions => 'الشروط والأحكام';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get privacy_policy => 'سياسة الخصوصية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get account_confirmation => 'هل لديك حساب؟ سجل الدخول';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get login_title => 'تسجيل الدخول';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get all_updates => 'جميع التحديثات';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get app_updates => 'تحديثات التطبيق';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationSocial => 'الاجتماعي';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationEconomy => 'الاقتصاد';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationEnvironment => 'البيئة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationFavourites => 'المفضلة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get profile_title => 'نموذج الملاحظات';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get my_profile => 'ملفي الشخصي';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get logout => 'تسجيل الخروج';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get full_name => 'الاسم الكامل';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get dob => 'تاريخ الميلاد';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get region => 'الدولة/المنطقة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get preferredLang => 'اللغة المفضلة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm => 'تأكيد';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get change_password => 'تغيير كلمة المرور';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get sure_save_page => ' هل أنت متأكد أنك ترغب في حفظ هذه الصفحة؟';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get not_able_to_change =>
|
||||||
|
'بمجرد الحفظ، لن تتمكن من تعديل اسمك أو تاريخ ميلادك.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get save => 'حفظ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get name => 'اسم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get guide_title => 'نموذج الملاحظات';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_home => 'الصفحة الرئيسية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_uae => 'أرقام الإمارات';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_competitiveness => 'القدرة التنافسية';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get country_profile => 'ملف تعريف الدولة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get agree_terms_conditions => 'يرجى الموافقة على الشروط والأحكام.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get retry => 'Retry';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get select => 'يختار';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_exists => 'البريد الإلكتروني موجود';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_exists_msg =>
|
||||||
|
'معرف البريد الإلكتروني موجود بالفعل. الرجاء استخدام بريد إلكتروني مختلف.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_invalid =>
|
||||||
|
'البريد الإلكتروني غير صالح أو قيد الاستخدام بالفعل.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get required => 'مطلوب';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get only40charac => 'يجب ألا يتجاوز 40 حرفًا';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get invalid_characters => 'أحرف غير صالحة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get invalid_email => 'البريد الإلكتروني غير صالح';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_invalid => 'تحتوي كلمة المرور على أحرف غير صالحة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_match => 'كلمات المرور غير متطابقة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get only8charac => 'يجب أن تتكون كلمة المرور من 8 أحرف على الأقل';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get manage_user => 'إدارة المستخدم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get user_name => 'اسم المستخدم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get reg_date => 'تاريخ التسجيل';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get status => 'الحالة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get denied => 'مرفوض';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get pending => ' قيد الانتظار';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get approved => 'تمت الموافقة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get approve_msg => 'هل أنت متأكد أنك ترغب في تغيير الحالة إلى';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get yes => 'نعم';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get no => 'لا';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get no_result_found => 'لم يتم العثور على نتائج';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get search => 'يبحث';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get status_success => 'تم تحديث الحالة بنجاح';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get profile_updated_successfully => 'تم تحديث الملف الشخصي بنجاح';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get create_new_password => 'إنشاء كلمة مرور جديدة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get different_password =>
|
||||||
|
'يجب أن تكون كلمة المرور الجديدة مختلفة عن كلمة المرور المستخدمة سابقًا.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get old_password => 'كلمة المرور القديمة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_new_password => 'أدخل كلمة المرور الجديدة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm_new_password => 'تأكيد كلمة المرور الجديدة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_changed_successfully => 'تم تغيير كلمة المرور بنجاح';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_old_password => 'أدخل كلمة المرور القديمة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get your_old_password_incorrect =>
|
||||||
|
'كلمة المرور القديمة الخاصة بك غير صحيحة.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_to_update_password => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_update_successfully => 'تم تحديث كلمة المرور بنجاح.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get new_password_not_same_as_old =>
|
||||||
|
'كلمة المرور الجديدة يجب ألا تكون نفس كلمة المرور القديمة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_between_8_to_40 =>
|
||||||
|
'يجب أن تتراوح كلمة المرور بين 8 و40 حرفًا';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get new_password_required => 'كلمة المرور الجديدة مطلوبة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get old_password_is_required => 'كلمة المرور القديمة مطلوبة';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm_password_is_required => 'تأكيد كلمة المرور مطلوب';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get kpiCards =>
|
||||||
|
'يمكنك عرض بطاقات مؤشرات الأداء الرئيسية التفاعلية والرسوم البيانية لاستكشاف اتجاهات البيانات ومقارنة المقاييس الرئيسية بصريًا';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get home_topic =>
|
||||||
|
'اختر أي فئة (على سيبل المثال : الاقتصاد، الاجتماعية، البيئة) لاستكشاف مؤشرات الأداء الرئيسية التفصيلية ، التصورات، ورؤى البيانات .';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy =>
|
||||||
|
'يمكنك الوصول إلى الإحصائيات التفصيلية وصفحات التحليل لمؤشرات الأداء الرئيسية في فئة الاقتصاد لاكتشاف الاتجاهات والمقاييس الرئيسية .';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookMark =>
|
||||||
|
'يمكنك وضع إشارة مرجعية على مؤشرات الأداء الرئيسية أو مجموعات البيانات المهمة للوصول السريع والسهل في أي وقت من خلال قسم الإشارات المرجعية. ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get toggle =>
|
||||||
|
'يمكنك التبديل بين اللغتين الإنجليزية والعربية باستخدام مفتاح تبديل اللغة في الزاوية اليمنى العليا للحصول على تجربة ثنائية اللغة.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get tour_navBar =>
|
||||||
|
'يمكنك استخدام شريط التنقل للوصول السريع إلى الملف الشخصي ,التعليقات , دليل المستخدم , الإشعارات والميزات الأساسية الأخرى للتطبيق.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get mainMenu =>
|
||||||
|
'يمكنك الوصول إلى الصفحات المخصصة والميزات الإضافية عن طريق تحديد الخيارات من القائمة الرئيسية.';
|
||||||
|
}
|
||||||
374
lib/l10n/app_localizations_en.dart
Normal file
374
lib/l10n/app_localizations_en.dart
Normal file
@ -0,0 +1,374 @@
|
|||||||
|
// ignore: unused_import
|
||||||
|
import 'package:intl/intl.dart' as intl;
|
||||||
|
import 'app_localizations.dart';
|
||||||
|
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
/// The translations for English (`en`).
|
||||||
|
class AppLocalizationsEn extends AppLocalizations {
|
||||||
|
AppLocalizationsEn([String locale = 'en']) : super(locale);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get all_bookmarks => 'All Bookmarks';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy_title => 'Economy';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get social_title => 'Social';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get environment_title => 'Environment';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy_title_upper => 'ECONOMY';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get social_title_upper => 'SOCIAL';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get environment_title_upper => 'ENVIRONMENT';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookmarks => 'Bookmarks';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get searchCountry => 'Search Country';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_title => 'Feedback';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_failed_msg =>
|
||||||
|
'Your feedback could not be \n submitted. Please try again';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get thankYou => 'Thank you';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_message =>
|
||||||
|
'For your valuable feedback, we truly appreciate your input!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_to_sharefeedback => 'Failed to Share Feedback';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get feedback_submitted => 'Feedback submitted successfully!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formError => 'Please correct the errors before submitting.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String feedback_failed(Object error) {
|
||||||
|
return 'Failed to submit feedback: $error';
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get skip => 'Skip';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get got_it => 'Got it';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit_app => 'Exit App';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit_confirmation => 'Are you sure you want to exit?';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get cancel => 'Cancel';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get exit => 'Exit';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookmark_title => 'Bookmark';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_To_Remove => 'Failed to Remove';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get removed_from_Bookmark => 'Removed from Bookmark';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get added_to_Bookmark => 'Added to Bookmark.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notification => 'Notification';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_title => 'Register';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_details => 'Please enter your details';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_name => 'Username';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_id => 'Email ID';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_name => 'Enter your User Name';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_your_email => 'Enter your email';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_your_password => 'Enter your password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get register_Confirm_password => 'Confirm password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get agree => 'I agree to the ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get t_and => ' and ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get conditions => ' of FCSC';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get terms_conditions => 'Terms & Conditions';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get privacy_policy => 'Privacy Policy';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get account_confirmation => 'Already have an account?';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get login_title => 'Login';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get all_updates => 'All updates';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get app_updates => 'App updates';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationSocial => 'Social';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationEconomy => 'Economy';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationEnvironment => 'Environment';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get notificationFavourites => 'Favourites';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get profile_title => 'Edit Profile';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get my_profile => 'My Profile';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get logout => 'Logout';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get full_name => 'Full Name*';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get dob => 'Date of Birth*';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get region => 'Country/Region';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get preferredLang => 'Preferred Language';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm => 'Confirm';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get change_password => 'Change Password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get sure_save_page => 'Are you sure you want to save this page? ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get not_able_to_change =>
|
||||||
|
'Once saved, you will not be able to change your ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get save => 'Save';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get name => 'Name';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get guide_title => 'User Guide';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_home => 'HOME';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_uae => 'UAE Numbers';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get nav_competitiveness => 'Competitiveness';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get country_profile => 'Country Profile';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get agree_terms_conditions => 'Please agree to terms and conditions.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get retry => 'Retry';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get select => 'Select';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_exists => 'Email exists';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_exists_msg =>
|
||||||
|
'Email ID already exists. Please use a different email.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get email_invalid => 'The email is invalid or already in use.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get required => 'Required';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get only40charac => 'Must not exceed 40 characters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get invalid_characters => 'Invalid Characters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get invalid_email => 'Invalid Email';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_invalid => 'Password contains invalid characters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_match => 'Passwords do not match';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get only8charac => 'Password must be at least 8characters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get manage_user => 'Manage User';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get user_name => 'User Name';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get reg_date => 'Registration Date';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get status => 'Status';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get denied => 'Denied';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get pending => 'Pending';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get approved => 'Approved';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get approve_msg => 'Are you sure you want to change the status to ';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get yes => 'Yes';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get no => 'No';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get no_result_found => 'No results found';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get search => 'Search';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get status_success => 'Status updated successfully';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get profile_updated_successfully => 'Profile updated successfully';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get create_new_password => 'Create New Password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get different_password =>
|
||||||
|
'Your New Password Must Be Different form Previously Used Password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get old_password => 'Old Password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_new_password => 'Enter new password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm_new_password => 'Confirm new password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_changed_successfully => 'Password Changed Successfully';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get enter_old_password => 'Enter old Password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get your_old_password_incorrect => 'Your old password is incorrect.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get failed_to_update_password => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_update_successfully => 'Password updated successfully.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get new_password_not_same_as_old =>
|
||||||
|
'New password must not be the same as the old password';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get password_between_8_to_40 =>
|
||||||
|
'Password must be between 8 and 40 characters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get new_password_required => 'New password is required';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get old_password_is_required => 'Old password is required';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get confirm_password_is_required => 'Confirm password is required';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get kpiCards =>
|
||||||
|
'View interactive KPI cards and graphs to explore data trends and compare key metrics visually.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get home_topic =>
|
||||||
|
'Tap on any category (e.g., Economy, Social, Environment) to explore detailed KPIs, visualizations, and data insights.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get economy =>
|
||||||
|
'Access detailed statistics and drill-down pages for KPIs in the Economy category to uncover key trends and metrics.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get bookMark =>
|
||||||
|
'Bookmark important KPIs or datasets for quick and easy access anytime through the Bookmarks section.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get toggle =>
|
||||||
|
'Switch between English and Arabic using the language toggle at the top-right corner for a bilingual experience.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get tour_navBar =>
|
||||||
|
'Access dedicated pages and additional features by selecting options from the Main Menu.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get mainMenu =>
|
||||||
|
'Use the navigation bar to quickly access Profile, Feedback, User Guide, Notifications, and other key app features.';
|
||||||
|
}
|
||||||
@ -12,8 +12,7 @@ import 'package:uae_stat/config/injector.dart';
|
|||||||
import 'package:uae_stat/config/my_router.dart';
|
import 'package:uae_stat/config/my_router.dart';
|
||||||
import 'package:uae_stat/config/theme/theme_provider.dart';
|
import 'package:uae_stat/config/theme/theme_provider.dart';
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
|
|
||||||
// void main() async {
|
// void main() async {
|
||||||
// WidgetsFlutterBinding.ensureInitialized();
|
// WidgetsFlutterBinding.ensureInitialized();
|
||||||
// // await (await SharedPreferences.getInstance()).clear();
|
// // await (await SharedPreferences.getInstance()).clear();
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.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:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
|
import 'package:uae_stat/l10n/app_localizations.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';
|
||||||
import 'package:external_repos/external_repos.dart';
|
import 'package:external_repos/external_repos.dart';
|
||||||
|
|||||||
@ -1,913 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
|
||||||
import 'package:uae_stat/presentation/components/constant/constant.dart';
|
|
||||||
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
|
||||||
import 'package:fl_chart/fl_chart.dart';
|
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart';
|
|
||||||
|
|
||||||
class Marriages extends ConsumerStatefulWidget {
|
|
||||||
const Marriages({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
ConsumerState<Marriages> createState() => _MarriagesState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _MarriagesState extends ConsumerState<Marriages> {
|
|
||||||
late List<TargetFocus> marriageTargets;
|
|
||||||
late List<TargetFocus> previousMarriageTargets;
|
|
||||||
late TutorialCoachMark tutorialCoachMark;
|
|
||||||
final GlobalKey chartKey = GlobalKey();
|
|
||||||
final GlobalKey bookMarkKey = GlobalKey();
|
|
||||||
late double cardHeight= 0;
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
||||||
_calculateMarkPosition();
|
|
||||||
_startTutorialAfterRender();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleSkip() {
|
|
||||||
tutorialCoachMark.skip();
|
|
||||||
debugPrint('Skip clicked');
|
|
||||||
ref.read(chartsTourProvider.notifier).state = true;
|
|
||||||
ref.read(previousChartsTourProvider.notifier).state = true;
|
|
||||||
ref.read(homeTourProvider.notifier).state = true;
|
|
||||||
ref.read( previousHomeTourProvider.notifier).state = true;
|
|
||||||
ref.read(scaffoldTourProvider.notifier).state = true;
|
|
||||||
ref.read(previousScaffoldTourProvider.notifier).state = true;
|
|
||||||
context.go('/myhomepage');
|
|
||||||
}
|
|
||||||
|
|
||||||
void _kpiTutorialCoachMark() {
|
|
||||||
|
|
||||||
|
|
||||||
_initmarriageTargets();
|
|
||||||
tutorialCoachMark = TutorialCoachMark(
|
|
||||||
paddingFocus: 0,
|
|
||||||
useSafeArea: true,
|
|
||||||
pulseEnable: false,
|
|
||||||
hideSkip: true,
|
|
||||||
targets: marriageTargets,
|
|
||||||
onClickTarget: (target) {
|
|
||||||
if (target.identify == 'chartKey') {
|
|
||||||
// Scroll to the long widget
|
|
||||||
Scrollable.ensureVisible(
|
|
||||||
chartKey.currentContext!,
|
|
||||||
duration: Duration(milliseconds: 500),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onFinish: () {
|
|
||||||
context.push('/myhomepage');
|
|
||||||
debugPrint('Marriage Tutorial Finished');
|
|
||||||
},
|
|
||||||
|
|
||||||
)..show(context: context);
|
|
||||||
|
|
||||||
}
|
|
||||||
void _previousKpiTutorial() {
|
|
||||||
|
|
||||||
_initpreviousTargets();
|
|
||||||
tutorialCoachMark = TutorialCoachMark(
|
|
||||||
paddingFocus: 0,
|
|
||||||
useSafeArea: true,
|
|
||||||
pulseEnable: false,
|
|
||||||
hideSkip: true,
|
|
||||||
targets: previousMarriageTargets,
|
|
||||||
onFinish: () {
|
|
||||||
context.push('/myhomepage');
|
|
||||||
debugPrint('Previous Marriage Tutorial Finished');
|
|
||||||
},
|
|
||||||
|
|
||||||
)..show(context: context);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void _startTutorialAfterRender() {
|
|
||||||
final chartTour = ref.watch(chartsTourProvider);
|
|
||||||
final previousChartTour = ref.watch(previousChartsTourProvider);
|
|
||||||
if (chartKey.currentContext != null && !chartTour) {
|
|
||||||
_kpiTutorialCoachMark();
|
|
||||||
} else if(!previousChartTour) {
|
|
||||||
_previousKpiTutorial();
|
|
||||||
}
|
|
||||||
else if (!chartTour || !previousChartTour){
|
|
||||||
Future.delayed(Duration(milliseconds: 100), _startTutorialAfterRender);
|
|
||||||
}else{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void _calculateMarkPosition() {
|
|
||||||
final RenderBox cardRenderBox = bookMarkKey.currentContext!.findRenderObject() as RenderBox;
|
|
||||||
final Size cardSize = cardRenderBox.size;
|
|
||||||
cardHeight = cardSize.height;
|
|
||||||
debugPrint('height : $cardHeight');
|
|
||||||
}
|
|
||||||
|
|
||||||
void _initmarriageTargets(){
|
|
||||||
final double screenWidth= MediaQuery.of(context).size.width;
|
|
||||||
final double screenHeight= MediaQuery.of(context).size.height;
|
|
||||||
marriageTargets=[
|
|
||||||
TargetFocus(
|
|
||||||
identify: 'chartsKey',
|
|
||||||
keyTarget: chartKey,
|
|
||||||
shape: ShapeLightFocus.RRect,
|
|
||||||
contents: [
|
|
||||||
createTargetContent(
|
|
||||||
text: AppLocalizations.of(context)!.kpiCards,
|
|
||||||
alignment: ContentAlign.top,
|
|
||||||
gap:50,
|
|
||||||
space: 0,
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
align: ContentAlign.bottom,
|
|
||||||
child: SizedBox(
|
|
||||||
width: double.infinity,
|
|
||||||
height: MediaQuery.of(context).size.height*0.3,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
bottom: 25,
|
|
||||||
left: 16,
|
|
||||||
right: 16,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () => handleSkip(),
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(12),
|
|
||||||
),
|
|
||||||
side: const BorderSide(color: Colors.white),
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
elevation: 0,
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
'Skip',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'3/7',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 3),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border: Border.all(color: Colors.white, width: 2.0),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_back, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
ref.read(chartsTourProvider.notifier).state=true;
|
|
||||||
ref.read(previousHomeTourProvider.notifier).state=false;
|
|
||||||
tutorialCoachMark.finish();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFF7DAFBC),
|
|
||||||
border: Border.all(color: Color(0xFF7DAFBC), width: 1.5),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_forward, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
tutorialCoachMark.next();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
padding: EdgeInsets.only(bottom: 0,top : 0,),
|
|
||||||
align: ContentAlign.top,
|
|
||||||
child: SizedBox(
|
|
||||||
width: MediaQuery.of(context).size.width,
|
|
||||||
height:MediaQuery.of(context).size.height*0.69 ,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
left: MediaQuery.of(context).size.width*0.40,
|
|
||||||
bottom: 0,
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/app_tour/leftUp.png',
|
|
||||||
width: 100,
|
|
||||||
height: 90,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
TargetFocus(
|
|
||||||
identify: 'BookMarkKey',
|
|
||||||
keyTarget: bookMarkKey,
|
|
||||||
shape: ShapeLightFocus.RRect,
|
|
||||||
contents: [
|
|
||||||
createTargetContent(
|
|
||||||
text: AppLocalizations.of(context)!.bookMark,
|
|
||||||
alignment: ContentAlign.bottom,
|
|
||||||
gap: 23,
|
|
||||||
space: 50,
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
align: ContentAlign.bottom,
|
|
||||||
child: SizedBox(
|
|
||||||
width: double.infinity,
|
|
||||||
height: MediaQuery.of(context).size.height*0.60,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
bottom: 35,
|
|
||||||
left: 16,
|
|
||||||
right: 16,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () => handleSkip(),
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(12),
|
|
||||||
),
|
|
||||||
side: const BorderSide(color: Colors.white),
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
elevation: 0,
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
'Skip',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'4/7',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 3),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border: Border.all(color: Colors.white, width: 2.0),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_back, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
tutorialCoachMark.previous();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFF7DAFBC),
|
|
||||||
border: Border.all(color: Color(0xFF7DAFBC), width: 1),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_forward, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
ref.read(chartsTourProvider.notifier).state=true;
|
|
||||||
ref.read(scaffoldTourProvider.notifier).state=false;
|
|
||||||
tutorialCoachMark.finish();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
padding: EdgeInsets.only(left:0, top: cardHeight+20),
|
|
||||||
align: ContentAlign.right,
|
|
||||||
child: Container(
|
|
||||||
width: screenWidth/4,
|
|
||||||
height: screenHeight,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/app_tour/leftDown.png',
|
|
||||||
fit: BoxFit.contain,
|
|
||||||
),
|
|
||||||
// Positioned(
|
|
||||||
// top: 0,
|
|
||||||
// left: MediaQuery.of(context).size.width* 0.5,
|
|
||||||
// child: SizedBox(
|
|
||||||
// width: 50,
|
|
||||||
// height: 100,
|
|
||||||
// child: Image.asset(
|
|
||||||
// 'assets/app_tour/bookmark2.png',
|
|
||||||
// fit: BoxFit.contain,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
void _initpreviousTargets(){
|
|
||||||
final double screenWidth= MediaQuery.of(context).size.width;
|
|
||||||
final double screenHeight= MediaQuery.of(context).size.height;
|
|
||||||
previousMarriageTargets=[
|
|
||||||
TargetFocus(
|
|
||||||
identify: 'BookMarkKey',
|
|
||||||
keyTarget: bookMarkKey,
|
|
||||||
shape: ShapeLightFocus.RRect,
|
|
||||||
contents: [
|
|
||||||
createTargetContent(
|
|
||||||
text: AppLocalizations.of(context)!.bookMark,
|
|
||||||
space: 50,
|
|
||||||
alignment: ContentAlign.bottom,
|
|
||||||
gap: 23,
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
align: ContentAlign.bottom,
|
|
||||||
child: SizedBox(
|
|
||||||
width: double.infinity,
|
|
||||||
height: MediaQuery.of(context).size.height*0.60,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
bottom: 35,
|
|
||||||
left: 16,
|
|
||||||
right: 16,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () => handleSkip(),
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(12),
|
|
||||||
),
|
|
||||||
side: const BorderSide(color: Colors.white),
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
elevation: 0,
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
'Skip',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'4/7',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 3),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border: Border.all(color: Colors.white, width: 2.0),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_back, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
tutorialCoachMark.next();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFF7DAFBC),
|
|
||||||
border: Border.all(color:Color(0xFF7DAFBC), width: 1.5),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_forward, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
ref.read(chartsTourProvider.notifier).state=true;
|
|
||||||
ref.read(scaffoldTourProvider.notifier).state=false;
|
|
||||||
tutorialCoachMark.finish();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
padding: EdgeInsets.only(left:0, top: cardHeight+20),
|
|
||||||
align: ContentAlign.right,
|
|
||||||
child: Container(
|
|
||||||
width: screenWidth/4,
|
|
||||||
height: screenHeight,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/app_tour/leftDown.png',
|
|
||||||
fit: BoxFit.contain,
|
|
||||||
),
|
|
||||||
// Positioned(
|
|
||||||
// top: 0,
|
|
||||||
// left: MediaQuery.of(context).size.width* 0.5,
|
|
||||||
// child: SizedBox(
|
|
||||||
// width: 50,
|
|
||||||
// height: 100,
|
|
||||||
// child: Image.asset(
|
|
||||||
// 'assets/app_tour/bookmark2.png',
|
|
||||||
// fit: BoxFit.contain,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
TargetFocus(
|
|
||||||
identify: 'chartsKey',
|
|
||||||
keyTarget: chartKey,
|
|
||||||
shape: ShapeLightFocus.RRect,
|
|
||||||
contents: [
|
|
||||||
createTargetContent(
|
|
||||||
text: AppLocalizations.of(context)!.kpiCards,
|
|
||||||
space: 0,
|
|
||||||
alignment: ContentAlign.top,
|
|
||||||
gap:50,
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
align: ContentAlign.bottom,
|
|
||||||
child: SizedBox(
|
|
||||||
width: double.infinity,
|
|
||||||
height: MediaQuery.of(context).size.height*0.3,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
bottom: 30,
|
|
||||||
left: 16,
|
|
||||||
right: 16,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
onPressed: () => handleSkip(),
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(12),
|
|
||||||
),
|
|
||||||
side: const BorderSide(color: Colors.white),
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
elevation: 0,
|
|
||||||
),
|
|
||||||
child: Text(
|
|
||||||
'Skip',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'3/7',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: context.translate(
|
|
||||||
'Roboto',
|
|
||||||
'NotoKufi',
|
|
||||||
),
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 3),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border: Border.all(color: Colors.white, width: 2.0),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_back, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
ref.read(previousChartsTourProvider.notifier).state=true;
|
|
||||||
ref.read(previousHomeTourProvider.notifier).state=false;
|
|
||||||
tutorialCoachMark.finish();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFF7DAFBC),
|
|
||||||
border: Border.all(color:Color(0xFF7DAFBC), width: 1.5),
|
|
||||||
),
|
|
||||||
child: IconButton(
|
|
||||||
iconSize: 20,
|
|
||||||
icon: const Icon(Icons.arrow_forward, color: Colors.white),
|
|
||||||
onPressed: () {
|
|
||||||
tutorialCoachMark.previous();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
TargetContent(
|
|
||||||
padding: EdgeInsets.only(bottom: 0,top : 0,),
|
|
||||||
align: ContentAlign.top,
|
|
||||||
child: SizedBox(
|
|
||||||
width: MediaQuery.of(context).size.width,
|
|
||||||
height:MediaQuery.of(context).size.height*0.69 ,
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned(
|
|
||||||
left: MediaQuery.of(context).size.width*0.40,
|
|
||||||
bottom: 0,
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/app_tour/leftUp.png',
|
|
||||||
width: 100,
|
|
||||||
height: 90,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
double myheight = MediaQuery.of(context).size.height;
|
|
||||||
double mywidth = MediaQuery.of(context).size.width;
|
|
||||||
final List<String> xAxisData = ['2019', '2020', '2021', '2022', '2023'];
|
|
||||||
final List<double> yAxisData = [2, 4, 1, 5, 3];
|
|
||||||
return BaseScaffold(
|
|
||||||
appbarColor: Color(0xFFC6BEB2),
|
|
||||||
title: Text("UAE Numbers",style: TextStyle(color: Colors.white,fontWeight: FontWeight.bold),),
|
|
||||||
showBackButton: true,
|
|
||||||
body: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children : [
|
|
||||||
Container(
|
|
||||||
height: myheight/4.5,
|
|
||||||
width: double.infinity,
|
|
||||||
color: Color(0xFFC6BEB2),
|
|
||||||
child: Padding(padding: EdgeInsets.only(left: 30,right: 30,top: 20,bottom: 10),child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text("SOCIAL",style: TextStyle(color: Colors.white,fontSize: 30),),
|
|
||||||
Container(width: mywidth/5,child: Divider(thickness: 10,color: Colors.white,)),
|
|
||||||
Text("Marriages",style: TextStyle(color: Colors.white,fontSize: 20),),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
IconButton(key :bookMarkKey,onPressed: (){}, icon: Icon(Icons.bookmark_add_outlined,color: Colors.white,size: 40,)),
|
|
||||||
IconButton(onPressed: (){}, icon: Icon(Icons.share,color: Colors.white,size: 30,)),
|
|
||||||
],),
|
|
||||||
],
|
|
||||||
),)
|
|
||||||
),
|
|
||||||
SingleChildScrollView(child: Container(
|
|
||||||
height: myheight,
|
|
||||||
color: Color(0xFFC6BEB2),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 0.0,left: 10,right: 10,bottom: 20),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
key:chartKey,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
||||||
children: [
|
|
||||||
Container(height: myheight/3.5,width: mywidth/2.5,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10))
|
|
||||||
),
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/icons/indicator/social/marriage.png',
|
|
||||||
height: myheight / 10, // This ensures the image fits within the container's height
|
|
||||||
width: myheight / 10, // You can adjust the size as needed
|
|
||||||
),
|
|
||||||
Text("Total",style: TextStyle(fontWeight: FontWeight.bold,fontSize: 26),),
|
|
||||||
Text("2022",style: TextStyle(fontSize: 15,color: Colors.grey),),
|
|
||||||
Text("16759",style: TextStyle(fontSize: 26,fontWeight: FontWeight.bold,color: socialColor),),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Container(height: myheight/3.5,width: mywidth/2.5,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10))
|
|
||||||
),
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/icons/indicator/social/marriage.png',
|
|
||||||
height: myheight / 10, // This ensures the image fits within the container's height
|
|
||||||
width: myheight / 10, // You can adjust the size as needed
|
|
||||||
),
|
|
||||||
Text("Average",style: TextStyle(fontWeight: FontWeight.bold,fontSize: 26),),
|
|
||||||
Text("(2021 - 2022)",style: TextStyle(fontSize: 15,color: Colors.grey),),
|
|
||||||
Text("15987",style: TextStyle(fontSize: 26,fontWeight: FontWeight.bold,color: socialColor),),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
SizedBox(height: myheight/20,),
|
|
||||||
Container(
|
|
||||||
height: myheight/2.5,
|
|
||||||
width: mywidth/1.2,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10))
|
|
||||||
),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.all(10.0),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
SizedBox(height: myheight/30,),
|
|
||||||
Center(child: Text("Total Marriages by Marriage Type",style: TextStyle(fontSize: 16,fontWeight: FontWeight.bold),),
|
|
||||||
),
|
|
||||||
SizedBox(height: myheight/30,),
|
|
||||||
Container(
|
|
||||||
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,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Container(
|
|
||||||
// decoration: BoxDecoration(
|
|
||||||
// color: Colors.white,
|
|
||||||
// borderRadius: BorderRadius.circular(12),
|
|
||||||
// boxShadow: [
|
|
||||||
// BoxShadow(
|
|
||||||
// color: Colors.black12,
|
|
||||||
// blurRadius: 8,
|
|
||||||
// offset: Offset(0, 4),
|
|
||||||
// ),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// child:
|
|
||||||
// BarChart(
|
|
||||||
// BarChartData(
|
|
||||||
// alignment: BarChartAlignment.spaceAround,
|
|
||||||
// maxY: 20,
|
|
||||||
// barTouchData: BarTouchData(enabled: false),
|
|
||||||
// titlesData: FlTitlesData(
|
|
||||||
// leftTitles: AxisTitles(
|
|
||||||
// sideTitles: SideTitles(
|
|
||||||
// showTitles: true,
|
|
||||||
// getTitlesWidget: (value, meta) {
|
|
||||||
// return Padding(
|
|
||||||
// padding: const EdgeInsets.only(right: 8.0),
|
|
||||||
// child: Text('${value.toInt()}K'),
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// reservedSize: 40,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// 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,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// 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,
|
|
||||||
// ),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
),)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
), mycenterTitle: false,
|
|
||||||
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -17,8 +17,7 @@ import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.
|
|||||||
import 'package:uae_stat/presentation/components/constant/constant.dart';
|
import 'package:uae_stat/presentation/components/constant/constant.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class UaeNumbers extends ConsumerWidget {
|
class UaeNumbers extends ConsumerWidget {
|
||||||
const UaeNumbers({super.key});
|
const UaeNumbers({super.key});
|
||||||
|
|||||||
@ -16,8 +16,7 @@ import 'package:uae_stat/presentation/Screens/profilepage.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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
import 'package:uae_stat/presentation/components/space.dart';
|
import 'package:uae_stat/presentation/components/space.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
import 'package:uae_stat/config/my_theme.dart';
|
import 'package:uae_stat/config/my_theme.dart';
|
||||||
|
|
||||||
class CreateNewPw extends ConsumerStatefulWidget {
|
class CreateNewPw extends ConsumerStatefulWidget {
|
||||||
|
|||||||
@ -11,12 +11,11 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.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';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/profilepage.dart';
|
import 'package:uae_stat/presentation/Screens/profilepage.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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
import 'package:uae_stat/presentation/components/space.dart';
|
import 'package:uae_stat/presentation/components/space.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
import 'package:uae_stat/config/my_theme.dart';
|
import 'package:uae_stat/config/my_theme.dart';
|
||||||
|
|
||||||
class ForgotPassword extends ConsumerStatefulWidget {
|
class ForgotPassword extends ConsumerStatefulWidget {
|
||||||
|
|||||||
@ -13,8 +13,7 @@ import 'package:uae_stat/domain/use_cases/language.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';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/profilepage.dart';
|
import 'package:uae_stat/presentation/Screens/profilepage.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import 'package:uae_stat/presentation/Screens/charts/services/api_service.dart';
|
|||||||
import 'package:uae_stat/presentation/Screens/charts/widgets/chart_widget.dart';
|
import 'package:uae_stat/presentation/Screens/charts/widgets/chart_widget.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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.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/presentation/Screens/app_tour/Target_content.dart';
|
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart';
|
||||||
import '../filters/search_filter_helper.dart';
|
import '../filters/search_filter_helper.dart';
|
||||||
@ -30,7 +30,6 @@ import 'package:flutter_svg/flutter_svg.dart';
|
|||||||
import 'package:share_plus/share_plus.dart';
|
import 'package:share_plus/share_plus.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class ChartScreen1 extends ConsumerStatefulWidget {
|
class ChartScreen1 extends ConsumerStatefulWidget {
|
||||||
final String dataSets;
|
final String dataSets;
|
||||||
|
|||||||
@ -23,8 +23,7 @@ import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon
|
|||||||
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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.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:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
import '../components/my_bottom_nav_bar.dart';
|
import '../components/my_bottom_nav_bar.dart';
|
||||||
import 'auth_verification/changepassword.dart';
|
import 'auth_verification/changepassword.dart';
|
||||||
import 'demo_home.dart';
|
import 'demo_home.dart';
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.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';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
|
||||||
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/demo_home.dart';
|
import 'package:uae_stat/presentation/Screens/demo_home.dart';
|
||||||
import 'package:uae_stat/presentation/components/dialogs.dart';
|
import 'package:uae_stat/presentation/components/dialogs.dart';
|
||||||
import 'package:uae_stat/presentation/components/lang_toggle.dart';
|
import 'package:uae_stat/presentation/components/lang_toggle.dart';
|
||||||
@ -36,7 +37,6 @@ import 'package:http/http.dart' as http;
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../../Screens/auth_verification/registration.dart';
|
import '../../Screens/auth_verification/registration.dart';
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
|
|
||||||
import '../../components/indicators/locale_provider.dart';
|
import '../../components/indicators/locale_provider.dart';
|
||||||
|
|||||||
@ -175,11 +175,11 @@ import 'package:uae_stat/config/toggle_lang_service.dart';
|
|||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/logo_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/logo_asset_path.dart';
|
||||||
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
||||||
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
||||||
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.dart';
|
import 'package:uae_stat/presentation/Screens/app_tour/Target_content.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:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
|
|||||||
@ -6,8 +6,7 @@ import 'package:flutter_svg/svg.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
|
|||||||
@ -23,8 +23,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.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/drawer_routes/custom_drawer_routes.dart';
|
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class EditProfile extends ConsumerStatefulWidget {
|
class EditProfile extends ConsumerStatefulWidget {
|
||||||
const EditProfile({super.key});
|
const EditProfile({super.key});
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import 'package:go_router/go_router.dart';
|
|||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:uae_stat/config/theme/theme_provider.dart';
|
import 'package:uae_stat/config/theme/theme_provider.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
@ -18,6 +17,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/feedback_asset_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/feedback_asset_path.dart';
|
||||||
|
|
||||||
import 'package:uae_stat/infrastructure/services/packages/go_router.dart';
|
import 'package:uae_stat/infrastructure/services/packages/go_router.dart';
|
||||||
|
import 'package:uae_stat/l10n/app_localizations.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/components/my_drawer.dart';
|
import 'package:uae_stat/presentation/components/my_drawer.dart';
|
||||||
import 'package:mailer/mailer.dart';
|
import 'package:mailer/mailer.dart';
|
||||||
|
|||||||
@ -17,8 +17,7 @@ import 'package:uae_stat/presentation/components/indicators/locale_provider.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';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class ManageUserRouter extends ConsumerStatefulWidget {
|
class ManageUserRouter extends ConsumerStatefulWidget {
|
||||||
late final Widget title;
|
late final Widget title;
|
||||||
|
|||||||
@ -14,8 +14,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
|
||||||
import '../../custom_drawer_routes.dart';
|
import '../../custom_drawer_routes.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class NotificationPage extends ConsumerStatefulWidget {
|
class NotificationPage extends ConsumerStatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -4,14 +4,10 @@ import 'package:go_router/go_router.dart';
|
|||||||
import 'package:uae_stat/config/theme/theme_provider.dart';
|
import 'package:uae_stat/config/theme/theme_provider.dart';
|
||||||
import 'package:uae_stat/config/toggle_lang_service.dart';
|
import 'package:uae_stat/config/toggle_lang_service.dart';
|
||||||
import 'package:uae_stat/domain/use_cases/language.dart';
|
import 'package:uae_stat/domain/use_cases/language.dart';
|
||||||
// import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.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/Screens/Bottom%20Navigation%20Pages/Country_Profile/country_profile.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:iconify_design/iconify_design.dart';
|
import 'package:iconify_design/iconify_design.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
class Userguide extends ConsumerStatefulWidget {
|
class Userguide extends ConsumerStatefulWidget {
|
||||||
Userguide({super.key});
|
Userguide({super.key});
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import 'package:package_info_plus/package_info_plus.dart';
|
|||||||
import 'package:pocketbase/pocketbase.dart';
|
import 'package:pocketbase/pocketbase.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
|
||||||
import 'package:uae_stat/config/injector.dart';
|
import 'package:uae_stat/config/injector.dart';
|
||||||
import 'package:uae_stat/config/theme/app_theme.dart';
|
import 'package:uae_stat/config/theme/app_theme.dart';
|
||||||
@ -24,7 +23,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
|
|||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/bottom_bar_asset_icon_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/bottom_bar_asset_icon_path.dart';
|
||||||
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/drawer_asset_icon_path.dart';
|
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/drawer_asset_icon_path.dart';
|
||||||
// import 'package:uae_stat/l10n/app_localizations.dart';
|
import 'package:uae_stat/l10n/app_localizations.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/components/my_toggle.dart';
|
import 'package:uae_stat/presentation/components/my_toggle.dart';
|
||||||
|
|||||||
24
pubspec.lock
24
pubspec.lock
@ -117,10 +117,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.12.0"
|
version: "2.13.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -476,10 +476,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.2"
|
version: "1.3.3"
|
||||||
fast_immutable_collections:
|
fast_immutable_collections:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1024,10 +1024,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.19.0"
|
version: "0.20.2"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1072,10 +1072,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.8"
|
version: "10.0.9"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1136,10 +1136,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: material_charts
|
name: material_charts
|
||||||
sha256: ada5af96e9cdd9888c1931eaf307e6693408584ca0de1b1c795f9862590f9fcf
|
sha256: f30b2410c00cc946440e606600b7b72d107737ec508a1300fbc4119820a0f454
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.25"
|
version: "0.0.28"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1795,10 +1795,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.3.1"
|
version: "15.0.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -33,7 +33,7 @@ dependencies:
|
|||||||
# path: packages/dynamic_layouts
|
# path: packages/dynamic_layouts
|
||||||
csv: ^6.0.0
|
csv: ^6.0.0
|
||||||
excel: ^4.0.2
|
excel: ^4.0.2
|
||||||
intl: ^0.19.0
|
intl: ^0.20.2
|
||||||
# firebase_core: ^3.12.1
|
# firebase_core: ^3.12.1
|
||||||
the_validator: ^2.0.0
|
the_validator: ^2.0.0
|
||||||
pocketbase: ^0.18.1
|
pocketbase: ^0.18.1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user