From b94d5d1fbd905c6d46323da273594e7c781929d4 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 4 Mar 2026 12:51:07 +0300 Subject: [PATCH] android sdk upgraded to 36, 16kb page size support added. --- .gitignore | 4 + android/app/build.gradle | 92 - android/app/build.gradle.kts | 110 + android/app/src/main/AndroidManifest.xml | 6 + android/build.gradle | 63 - android/build.gradle.kts | 51 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 39 - android/settings.gradle.kts | 27 + l10n.yaml | 2 +- .../api_routes/http_status_manger.dart | 4 +- .../localization/localization.dart | 2 +- .../providers/api/devices_provider.dart | 3 +- lib/extensions/context_extension.dart | 3 +- lib/helper/utils.dart | 40 +- lib/l10n/app_localizations.dart | 3481 +++++++++++++++++ lib/l10n/app_localizations_ar.dart | 1705 ++++++++ lib/l10n/app_localizations_en.dart | 1712 ++++++++ lib/main.dart | 4 +- .../dialoge/nfc_reader_sheet.dart | 52 +- .../utils/swipe_general_utils.dart | 42 +- lib/nfc/nfc_reader_sheet.dart | 108 +- .../widgets/sound/TextSpeechRecordWidget.dart | 39 +- lib/views/widgets/sound/record_sound.dart | 37 +- pubspec.lock | 767 ++-- pubspec.yaml | 96 +- 26 files changed, 7753 insertions(+), 738 deletions(-) delete mode 100644 android/app/build.gradle create mode 100644 android/app/build.gradle.kts delete mode 100644 android/build.gradle create mode 100644 android/build.gradle.kts delete mode 100644 android/settings.gradle create mode 100644 android/settings.gradle.kts create mode 100644 lib/l10n/app_localizations.dart create mode 100644 lib/l10n/app_localizations_ar.dart create mode 100644 lib/l10n/app_localizations_en.dart diff --git a/.gitignore b/.gitignore index d7192f85..ad1bfc20 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,7 @@ android/gradle.properties /android/app/profile /android/app/release /android/gradle/wrapper/gradle-wrapper.properties +# Build files - should not be committed +android/app/build/ +android/build/ +build/ diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index b315f561..00000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,92 +0,0 @@ -plugins { - id "com.android.application" - id "kotlin-android" - id "dev.flutter.flutter-gradle-plugin" - id "com.google.gms.google-services" -} - -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file('key.properties') -if (keystorePropertiesFile.exists()) { - keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) -} - -apply plugin: "com.huawei.agconnect" - -android { - namespace 'com.example.test_sa' -// ndkVersion flutter.ndkVersion - ndkVersion = "27.0.12077973" - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - - kotlinOptions { - jvmTarget = "17" // Must match the compileOptions target - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.hmg.atoms" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion 21 - targetSdkVersion 35 - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - signingConfigs { - release { - keyAlias keystoreProperties['keyAlias'] - keyPassword keystoreProperties['keyPassword'] - storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - storePassword keystoreProperties['storePassword'] - } - } - buildTypes { - debug { - signingConfig signingConfigs.debug - } -// release { -// signingConfig signingConfigs.debug -// } - release { - minifyEnabled true - shrinkResources true - signingConfig signingConfigs.release - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300' - implementation 'com.huawei.hms:push:6.7.0.300' - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' -} - diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..840cf3ab --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,110 @@ +import java.util.Properties +import java.io.FileInputStream + +plugins { + id("com.android.application") + id("kotlin-android") + id("dev.flutter.flutter-gradle-plugin") + id("com.google.gms.google-services") + id("com.huawei.agconnect") +} + +val localProperties = Properties() +val localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localProperties.load(FileInputStream(localPropertiesFile)) +} + +val flutterVersionCode = localProperties.getProperty("flutter.versionCode") ?: "1" +val flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0" + +val keystoreProperties = Properties() +val keystorePropertiesFile = rootProject.file("key.properties") +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) +} + +android { + namespace = "com.example.test_sa" + ndkVersion = "28.2.13676358" + compileSdk = 36 + + compileOptions { + isCoreLibraryDesugaringEnabled = true + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + } + + defaultConfig { + applicationId = "com.hmg.atoms" + minSdk = flutter.minSdkVersion + targetSdk = 36 + versionCode = flutterVersionCode.toInt() + versionName = flutterVersionName + + // 16KB page size support - ensure all ABIs are included + ndk { + abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")) + } + + // Additional 16KB page size optimization + manifestPlaceholders["16kb_page_size_compatible"] = "true" + } + + signingConfigs { + create("release") { + keyAlias = keystoreProperties["keyAlias"] as String? + keyPassword = keystoreProperties["keyPassword"] as String? + storeFile = keystoreProperties["storeFile"]?.let { file(it as String) } + storePassword = keystoreProperties["storePassword"] as String? + } + } + + buildTypes { + debug { + signingConfig = signingConfigs.getByName("debug") + } + release { + isMinifyEnabled = true + isShrinkResources = true + signingConfig = signingConfigs.getByName("release") + } + } + + // 16KB page size support for Google Play Store (August 2025 requirement) + // AGP 8.1+ uses packaging.jniLibs instead of the deprecated gradle.properties flag + packaging { + jniLibs { + useLegacyPackaging = false + // Ensure proper extraction and alignment for 16KB page size + excludes.add("**/libunity.so") + } + resources { + excludes += setOf( + "META-INF/DEPENDENCIES", + "META-INF/LICENSE", + "META-INF/LICENSE.txt", + "META-INF/license.txt", + "META-INF/NOTICE", + "META-INF/NOTICE.txt", + "META-INF/notice.txt", + "META-INF/*.kotlin_module" + ) + } + } +} + +flutter { + source = "../.." +} + +dependencies { + implementation("com.huawei.agconnect:agconnect-core:1.5.2.300") + implementation("com.huawei.hms:push:6.7.0.300") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.3") +} + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index df7bac77..ae995740 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -42,6 +42,12 @@ android:showWhenLocked="true" android:turnScreenOn="true" android:usesCleartextTraffic="true"> + + + + - if (project.plugins.hasPlugin("com.android.application") || - project.plugins.hasPlugin("com.android.library")) { - project.android { - compileSdkVersion 34 - } - } - } - -} - -//subprojects { -// project.buildDir = "${rootProject.buildDir}/${project.name}" -// project.evaluationDependsOn(':app') -//} - -//rootProject.buildDir = File("../build") -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(":app") -} - - -//subprojects { -// project.buildDir = "${rootProject.buildDir}/${project.name}" -//} -//subprojects { -// project.evaluationDependsOn(':app') -//} - -tasks.register("clean", Delete) { - delete rootProject.buildDir -} diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 00000000..7e718766 --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,51 @@ +buildscript { + repositories { + google() + mavenCentral() + maven { url = uri("https://jitpack.io") } + maven { url = uri("https://developer.huawei.com/repo/") } + } + + dependencies { + classpath("com.android.tools.build:gradle:8.9.1") + classpath("com.huawei.agconnect:agcp:1.9.1.304") + } +} + +configurations.all { + resolutionStrategy.force("androidx.appcompat:appcompat:1.3.0") +} + +allprojects { + repositories { + google() + mavenCentral() + maven { url = uri("https://developer.huawei.com/repo/") } + } +} + +rootProject.buildDir = file("../build") + +subprojects { + afterEvaluate { + if (plugins.hasPlugin("com.android.application") || + plugins.hasPlugin("com.android.library")) { + extensions.configure { + compileSdkVersion(36) + } + } + } +} + +subprojects { + project.buildDir = file("${rootProject.buildDir}/${project.name}") +} + +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.buildDir) +} + diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2fd3de27..3df3acaf 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Oct 24 09:39:31 AST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index b9a925b1..00000000 --- a/android/settings.gradle +++ /dev/null @@ -1,39 +0,0 @@ -//include ':app' -// -//def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -//def properties = new Properties() -// -//assert localPropertiesFile.exists() -//localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } -// -//def flutterSdkPath = properties.getProperty("flutter.sdk") -//assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -//apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" -// - -pluginManagement { - def flutterSdkPath = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def flutterSdkPath = properties.getProperty("flutter.sdk") - assert flutterSdkPath != null, "flutter.sdk not set in local.properties" - return flutterSdkPath - }() - - includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -plugins { - id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.7.0" apply false - id "org.jetbrains.kotlin.android" version "1.9.25" apply false // Replace {kotlinVersion} with your version, e.g., "1.7.10" - id "com.google.gms.google-services" version "4.3.13" apply false // Replace {kotlinVersion} with your version, e.g., "1.7.10" -} - -include ":app" \ No newline at end of file diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 00000000..5804dc0a --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,27 @@ +pluginManagement { + val flutterSdkPath: String = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val path = properties.getProperty("flutter.sdk") + require(path != null) { "flutter.sdk not set in local.properties" } + path + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.9.1" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false + id("com.google.gms.google-services") version "4.4.2" apply false +} + +include(":app") + diff --git a/l10n.yaml b/l10n.yaml index ce15a00b..0b38c4dc 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,4 +1,4 @@ arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart -untranslated-messages-file: localization_error.txt +untranslated-messages-file: localization_error.txt \ No newline at end of file diff --git a/lib/controllers/api_routes/http_status_manger.dart b/lib/controllers/api_routes/http_status_manger.dart index 93ea13ee..d4d5066c 100644 --- a/lib/controllers/api_routes/http_status_manger.dart +++ b/lib/controllers/api_routes/http_status_manger.dart @@ -1,4 +1,6 @@ -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:localization/localization.dart'; + +import '../../l10n/app_localizations.dart'; class HttpStatusManger { static String getStatusMessage({ diff --git a/lib/controllers/localization/localization.dart b/lib/controllers/localization/localization.dart index 75d6e383..61356f3a 100644 --- a/lib/controllers/localization/localization.dart +++ b/lib/controllers/localization/localization.dart @@ -3,7 +3,7 @@ // // import 'package:flutter/material.dart'; // import 'package:flutter/services.dart'; -// import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +// import 'package:localization/localization.dart'; // // class AppLocalization { // AppLocalization(this.locale); diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index bc0e5a61..218ebf80 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:developer'; import 'package:flutter/cupertino.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:localization/localization.dart'; import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; @@ -13,6 +13,7 @@ import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/modules/asset_delivery_module/models/technical_inpection_asset_model.dart'; +import '../../../l10n/app_localizations.dart'; import '../../../models/device/asset.dart'; class AssetProvider extends ChangeNotifier { diff --git a/lib/extensions/context_extension.dart b/lib/extensions/context_extension.dart index 792dd942..41f93d7f 100644 --- a/lib/extensions/context_extension.dart +++ b/lib/extensions/context_extension.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:localization/localization.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; @@ -7,6 +7,7 @@ import 'package:test_sa/new_views/swipe_module/dialoge/confirm_dialog.dart'; import 'package:test_sa/new_views/swipe_module/dialoge/info_dialog.dart'; import '../controllers/providers/settings/setting_provider.dart'; +import '../l10n/app_localizations.dart'; extension BuildContextExtension on BuildContext { AppLocalizations get translation => AppLocalizations.of(this)!; diff --git a/lib/helper/utils.dart b/lib/helper/utils.dart index 41026321..d35cd4cb 100644 --- a/lib/helper/utils.dart +++ b/lib/helper/utils.dart @@ -20,7 +20,6 @@ import 'package:google_api_availability/google_api_availability.dart'; // import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; // import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; import 'package:nfc_manager/nfc_manager.dart'; -import 'package:nfc_manager/platform_tags.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/views/widgets/dialogs/confirm_dialog.dart'; @@ -418,17 +417,40 @@ class Utils { // } static void readNFc({required Function(String) onRead}) { - NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - MifareUltralight f; - if (Platform.isAndroid) { - f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); - } else { - f = MifareUltralight(tag: tag, identifier: tag.data["mifare"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); + NfcManager.instance.startSession( + onDiscovered: (NfcTag tag) async { + String identifier = ''; + + try { + final dynamic tagDynamic = tag; + final Map tagData = Map.from(tagDynamic.data as Map); + + if (Platform.isAndroid) { + if (tagData.containsKey('nfca')) { + final nfcaData = tagData['nfca'] as Map; + if (nfcaData.containsKey('identifier')) { + final List idBytes = List.from(nfcaData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } else { + if (tagData.containsKey('mifare')) { + final mifareData = tagData['mifare'] as Map; + if (mifareData.containsKey('identifier')) { + final List idBytes = List.from(mifareData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } + } catch (e) { + print('Error reading NFC: $e'); } - String identifier = f.identifier.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + NfcManager.instance.stopSession(); onRead(identifier); - }).catchError((err) { + }, + pollingOptions: {NfcPollingOption.iso14443}, + ).catchError((err) { print(err); }); } diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart new file mode 100644 index 00000000..1001219e --- /dev/null +++ b/lib/l10n/app_localizations.dart @@ -0,0 +1,3481 @@ +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(context, AppLocalizations); + } + + static const LocalizationsDelegate 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> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [ + Locale('ar'), + Locale('en') + ]; + + /// No description provided for @serverErrorMessage. + /// + /// In en, this message translates to: + /// **'Currently, Service not available'** + String get serverErrorMessage; + + /// No description provided for @failedRequestMessage. + /// + /// In en, this message translates to: + /// **'Failed to complete request'** + String get failedRequestMessage; + + /// No description provided for @successfulRequestMessage. + /// + /// In en, this message translates to: + /// **'Request complete successfully'** + String get successfulRequestMessage; + + /// No description provided for @commentAdded. + /// + /// In en, this message translates to: + /// **'Comment Added'** + String get commentAdded; + + /// No description provided for @requestLockMessage. + /// + /// In en, this message translates to: + /// **'Wait until your request complete'** + String get requestLockMessage; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @confirm. + /// + /// In en, this message translates to: + /// **'Confirm'** + String get confirm; + + /// No description provided for @notArrived. + /// + /// In en, this message translates to: + /// **'Not Arrived'** + String get notArrived; + + /// No description provided for @arrived. + /// + /// In en, this message translates to: + /// **'Arrived'** + String get arrived; + + /// No description provided for @done. + /// + /// In en, this message translates to: + /// **'Done'** + String get done; + + /// No description provided for @exit. + /// + /// In en, this message translates to: + /// **'Exit'** + String get exit; + + /// No description provided for @refreshQrCode. + /// + /// In en, this message translates to: + /// **'Refresh QR Code'** + String get refreshQrCode; + + /// No description provided for @exitAlert. + /// + /// In en, this message translates to: + /// **'Are you sure you want to exit?'** + String get exitAlert; + + /// No description provided for @assetRetiredPendingOpManagementApproval. + /// + /// In en, this message translates to: + /// **'Asset Retired. Pending OP Management Approval'** + String get assetRetiredPendingOpManagementApproval; + + /// No description provided for @assetRetirementRequestSubmittedSuccessfully. + /// + /// In en, this message translates to: + /// **'Asset retirement request submitted successfully'** + String get assetRetirementRequestSubmittedSuccessfully; + + /// No description provided for @youMarkedThisIssueAsFixedWaitingForTheRequesterToConfirm. + /// + /// In en, this message translates to: + /// **'You marked this issue as fixed. Waiting for the requester to confirm'** + String get youMarkedThisIssueAsFixedWaitingForTheRequesterToConfirm; + + /// No description provided for @signOut. + /// + /// In en, this message translates to: + /// **'Sign Out'** + String get signOut; + + /// No description provided for @logoutAlert. + /// + /// In en, this message translates to: + /// **'Are you sure you want to Sign Out?'** + String get logoutAlert; + + /// No description provided for @language. + /// + /// In en, this message translates to: + /// **'English'** + String get language; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @email. + /// + /// In en, this message translates to: + /// **'Email'** + String get email; + + /// No description provided for @retirementType. + /// + /// In en, this message translates to: + /// **'Retirement Type'** + String get retirementType; + + /// No description provided for @assetSituation. + /// + /// In en, this message translates to: + /// **'Asset Situation'** + String get assetSituation; + + /// No description provided for @phoneNumber. + /// + /// In en, this message translates to: + /// **'Phone Number'** + String get phoneNumber; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @confirmPassword. + /// + /// In en, this message translates to: + /// **'Confirm Password'** + String get confirmPassword; + + /// No description provided for @skipForLater. + /// + /// In en, this message translates to: + /// **'Skip For Later'** + String get skipForLater; + + /// No description provided for @signIn. + /// + /// In en, this message translates to: + /// **'Sign In'** + String get signIn; + + /// No description provided for @letSignInToAccount. + /// + /// In en, this message translates to: + /// **'Let’s sign in to your account'** + String get letSignInToAccount; + + /// No description provided for @signUp. + /// + /// In en, this message translates to: + /// **'Sign Up'** + String get signUp; + + /// No description provided for @accept. + /// + /// In en, this message translates to: + /// **'Accept'** + String get accept; + + /// No description provided for @reject. + /// + /// In en, this message translates to: + /// **'Reject'** + String get reject; + + /// No description provided for @forgetPassword. + /// + /// In en, this message translates to: + /// **'Forget Password'** + String get forgetPassword; + + /// No description provided for @acceptTermsAndConditions. + /// + /// In en, this message translates to: + /// **'Accept Terms And Conditions'** + String get acceptTermsAndConditions; + + /// No description provided for @emailValidateMessage. + /// + /// In en, this message translates to: + /// **'Not valid email'** + String get emailValidateMessage; + + /// No description provided for @nameValidateMessage. + /// + /// In en, this message translates to: + /// **'name is required'** + String get nameValidateMessage; + + /// No description provided for @passwordValidateMessage. + /// + /// In en, this message translates to: + /// **'at least 6 characters or numbers'** + String get passwordValidateMessage; + + /// No description provided for @confirmPasswordValidateMessage. + /// + /// In en, this message translates to: + /// **'Password and confirm password not match'** + String get confirmPasswordValidateMessage; + + /// No description provided for @phoneNumberValidateMessage. + /// + /// In en, this message translates to: + /// **'Not valid phone number'** + String get phoneNumberValidateMessage; + + /// No description provided for @termsAndConditionsValidateMessage. + /// + /// In en, this message translates to: + /// **'Accept terms and conditions is required'** + String get termsAndConditionsValidateMessage; + + /// No description provided for @update. + /// + /// In en, this message translates to: + /// **'Update'** + String get update; + + /// No description provided for @step. + /// + /// In en, this message translates to: + /// **'Step'** + String get step; + + /// No description provided for @forgetPasswordWithMark. + /// + /// In en, this message translates to: + /// **'Forget Password?'** + String get forgetPasswordWithMark; + + /// No description provided for @showPassword. + /// + /// In en, this message translates to: + /// **'show password'** + String get showPassword; + + /// No description provided for @wrongEmailOrPassword. + /// + /// In en, this message translates to: + /// **'Wrong email or password'** + String get wrongEmailOrPassword; + + /// No description provided for @emailExist. + /// + /// In en, this message translates to: + /// **'Email exist'** + String get emailExist; + + /// No description provided for @phoneNumberExist. + /// + /// In en, this message translates to: + /// **'Phone number exist'** + String get phoneNumberExist; + + /// No description provided for @next. + /// + /// In en, this message translates to: + /// **'Next'** + String get next; + + /// No description provided for @back. + /// + /// In en, this message translates to: + /// **'Back'** + String get back; + + /// No description provided for @search. + /// + /// In en, this message translates to: + /// **'Search'** + String get search; + + /// No description provided for @searchByName. + /// + /// In en, this message translates to: + /// **'Search by name'** + String get searchByName; + + /// No description provided for @searchByAssetNumber. + /// + /// In en, this message translates to: + /// **'Search by asset number'** + String get searchByAssetNumber; + + /// No description provided for @address. + /// + /// In en, this message translates to: + /// **'Address'** + String get address; + + /// No description provided for @addressNotFound. + /// + /// In en, this message translates to: + /// **'Address not found'** + String get addressNotFound; + + /// No description provided for @addressValidateMessage. + /// + /// In en, this message translates to: + /// **'Address validateMessage'** + String get addressValidateMessage; + + /// No description provided for @dataNotFound. + /// + /// In en, this message translates to: + /// **'Data not found'** + String get dataNotFound; + + /// No description provided for @description. + /// + /// In en, this message translates to: + /// **'Description'** + String get description; + + /// No description provided for @descriptionNotFound. + /// + /// In en, this message translates to: + /// **'Description not found'** + String get descriptionNotFound; + + /// No description provided for @descriptionValidateMessage. + /// + /// In en, this message translates to: + /// **'Description can\'t be empty'** + String get descriptionValidateMessage; + + /// No description provided for @edit. + /// + /// In en, this message translates to: + /// **'Edit'** + String get edit; + + /// No description provided for @emailNotFound. + /// + /// In en, this message translates to: + /// **'Email not found'** + String get emailNotFound; + + /// No description provided for @from. + /// + /// In en, this message translates to: + /// **'From'** + String get from; + + /// No description provided for @endDateTimeMustBeGreaterThanStartDate. + /// + /// In en, this message translates to: + /// **'End Date time must be greater than start date'** + String get endDateTimeMustBeGreaterThanStartDate; + + /// No description provided for @signaturesAreRequired. + /// + /// In en, this message translates to: + /// **'Signatures are required'** + String get signaturesAreRequired; + + /// No description provided for @to. + /// + /// In en, this message translates to: + /// **'To'** + String get to; + + /// No description provided for @linkNotFound. + /// + /// In en, this message translates to: + /// **'Link not found'** + String get linkNotFound; + + /// No description provided for @nameNotFound. + /// + /// In en, this message translates to: + /// **'Name not found'** + String get nameNotFound; + + /// No description provided for @phoneNumberNotFound. + /// + /// In en, this message translates to: + /// **'Phone number not found'** + String get phoneNumberNotFound; + + /// No description provided for @title. + /// + /// In en, this message translates to: + /// **'Title'** + String get title; + + /// No description provided for @titleNotFound. + /// + /// In en, this message translates to: + /// **'Title not found'** + String get titleNotFound; + + /// No description provided for @titleValidateMessage. + /// + /// In en, this message translates to: + /// **'Title Can\'t be empty'** + String get titleValidateMessage; + + /// No description provided for @urlNotFound. + /// + /// In en, this message translates to: + /// **'URL not found'** + String get urlNotFound; + + /// No description provided for @date. + /// + /// In en, this message translates to: + /// **'Date'** + String get date; + + /// No description provided for @status. + /// + /// In en, this message translates to: + /// **'Status'** + String get status; + + /// No description provided for @code. + /// + /// In en, this message translates to: + /// **'Code'** + String get code; + + /// No description provided for @serialNumber. + /// + /// In en, this message translates to: + /// **'Serial Number'** + String get serialNumber; + + /// No description provided for @add. + /// + /// In en, this message translates to: + /// **'Add'** + String get add; + + /// No description provided for @brand. + /// + /// In en, this message translates to: + /// **'manufacture'** + String get brand; + + /// No description provided for @clearSearch. + /// + /// In en, this message translates to: + /// **'Clear Search'** + String get clearSearch; + + /// No description provided for @closed. + /// + /// In en, this message translates to: + /// **'Closed'** + String get closed; + + /// No description provided for @close. + /// + /// In en, this message translates to: + /// **'Close'** + String get close; + + /// No description provided for @scanOrPickAsset. + /// + /// In en, this message translates to: + /// **'Scan or Pick Asset'** + String get scanOrPickAsset; + + /// No description provided for @reScanOrPickAsset. + /// + /// In en, this message translates to: + /// **'Re-Scan or Pick Asset'** + String get reScanOrPickAsset; + + /// No description provided for @camera. + /// + /// In en, this message translates to: + /// **'Camera'** + String get camera; + + /// No description provided for @gallery. + /// + /// In en, this message translates to: + /// **'Gallery'** + String get gallery; + + /// No description provided for @files. + /// + /// In en, this message translates to: + /// **'Files'** + String get files; + + /// No description provided for @attachFiles. + /// + /// In en, this message translates to: + /// **'Attach Files'** + String get attachFiles; + + /// No description provided for @activityStatus. + /// + /// In en, this message translates to: + /// **'Activity Status'** + String get activityStatus; + + /// No description provided for @takeAction. + /// + /// In en, this message translates to: + /// **'Take Action'** + String get takeAction; + + /// No description provided for @pleaseConfirmTheIssueHasBeenResolved. + /// + /// In en, this message translates to: + /// **'Please confirm the issue has been resolved'** + String get pleaseConfirmTheIssueHasBeenResolved; + + /// No description provided for @nurseAcknowledge. + /// + /// In en, this message translates to: + /// **'I acknowledge the completion of this work order'** + String get nurseAcknowledge; + + /// No description provided for @hours. + /// + /// In en, this message translates to: + /// **'Hours'** + String get hours; + + /// No description provided for @internal. + /// + /// In en, this message translates to: + /// **'Internal'** + String get internal; + + /// No description provided for @external. + /// + /// In en, this message translates to: + /// **'External'** + String get external; + + /// No description provided for @addInternalActivity. + /// + /// In en, this message translates to: + /// **'Add Internal Activity'** + String get addInternalActivity; + + /// No description provided for @addExternalActivity. + /// + /// In en, this message translates to: + /// **'Add External Activity'** + String get addExternalActivity; + + /// No description provided for @remotely. + /// + /// In en, this message translates to: + /// **'Remotely'** + String get remotely; + + /// No description provided for @workshop. + /// + /// In en, this message translates to: + /// **'Workshop'** + String get workshop; + + /// No description provided for @abroad. + /// + /// In en, this message translates to: + /// **'Abroad'** + String get abroad; + + /// No description provided for @create. + /// + /// In en, this message translates to: + /// **'Create'** + String get create; + + /// No description provided for @createServiceRequest. + /// + /// In en, this message translates to: + /// **'Create Service Request'** + String get createServiceRequest; + + /// No description provided for @delete. + /// + /// In en, this message translates to: + /// **'Delete'** + String get delete; + + /// No description provided for @details. + /// + /// In en, this message translates to: + /// **'Details'** + String get details; + + /// No description provided for @device. + /// + /// In en, this message translates to: + /// **'Device'** + String get device; + + /// No description provided for @deviceArName. + /// + /// In en, this message translates to: + /// **'Asset Ar Name'** + String get deviceArName; + + /// No description provided for @sparePartDetails. + /// + /// In en, this message translates to: + /// **'Spare Part Details'** + String get sparePartDetails; + + /// No description provided for @attachQuotation. + /// + /// In en, this message translates to: + /// **'Attach Quotation'** + String get attachQuotation; + + /// No description provided for @addSparePartActivity. + /// + /// In en, this message translates to: + /// **'Add Spare Part Activity'** + String get addSparePartActivity; + + /// No description provided for @addActivity. + /// + /// In en, this message translates to: + /// **'Add Activity'** + String get addActivity; + + /// No description provided for @updateSparePartActivity. + /// + /// In en, this message translates to: + /// **'Update Spare Part Activity'** + String get updateSparePartActivity; + + /// No description provided for @deviceName. + /// + /// In en, this message translates to: + /// **'Asset Name'** + String get deviceName; + + /// No description provided for @deviceImages. + /// + /// In en, this message translates to: + /// **'Asset Images'** + String get deviceImages; + + /// No description provided for @deviceModel. + /// + /// In en, this message translates to: + /// **'Asset Model'** + String get deviceModel; + + /// No description provided for @doYouWantToCreateAnotherSparePartRequest. + /// + /// In en, this message translates to: + /// **'Do you want to create another spare part request?'** + String get doYouWantToCreateAnotherSparePartRequest; + + /// No description provided for @sparePartActivitySuccess. + /// + /// In en, this message translates to: + /// **'Spare Part Request activity has been created successfully'** + String get sparePartActivitySuccess; + + /// No description provided for @deviceRequired. + /// + /// In en, this message translates to: + /// **'Asset Required'** + String get deviceRequired; + + /// No description provided for @deviceSN. + /// + /// In en, this message translates to: + /// **'Asset Serial Number'** + String get deviceSN; + + /// No description provided for @engineerName. + /// + /// In en, this message translates to: + /// **'Engineer Name'** + String get engineerName; + + /// No description provided for @engineerPhone. + /// + /// In en, this message translates to: + /// **'Engineer Phone'** + String get engineerPhone; + + /// No description provided for @facebook. + /// + /// In en, this message translates to: + /// **'facebook'** + String get facebook; + + /// No description provided for @faultDescription. + /// + /// In en, this message translates to: + /// **'Fault Description'** + String get faultDescription; + + /// No description provided for @general. + /// + /// In en, this message translates to: + /// **'General'** + String get general; + + /// No description provided for @hospital. + /// + /// In en, this message translates to: + /// **'Site'** + String get hospital; + + /// No description provided for @hospitalRequired. + /// + /// In en, this message translates to: + /// **'Site Required'** + String get hospitalRequired; + + /// No description provided for @hotLine. + /// + /// In en, this message translates to: + /// **'Hot Line'** + String get hotLine; + + /// No description provided for @jobSheetNumber. + /// + /// In en, this message translates to: + /// **'Job Sheet Number'** + String get jobSheetNumber; + + /// No description provided for @linkedIn. + /// + /// In en, this message translates to: + /// **'linkedIn'** + String get linkedIn; + + /// No description provided for @maintenanceIssue. + /// + /// In en, this message translates to: + /// **'Maintenance Issue'** + String get maintenanceIssue; + + /// No description provided for @maintenanceIssueRequired. + /// + /// In en, this message translates to: + /// **'maintenance Issue Required'** + String get maintenanceIssueRequired; + + /// No description provided for @maxImagesNumberIs5. + /// + /// In en, this message translates to: + /// **'Maximum Images Number Is 5'** + String get maxImagesNumberIs5; + + /// No description provided for @model. + /// + /// In en, this message translates to: + /// **'Model'** + String get model; + + /// No description provided for @modelNo. + /// + /// In en, this message translates to: + /// **'Model No.'** + String get modelNo; + + /// No description provided for @modelName. + /// + /// In en, this message translates to: + /// **'Model Name'** + String get modelName; + + /// No description provided for @nameExist. + /// + /// In en, this message translates to: + /// **'Name Exist'** + String get nameExist; + + /// No description provided for @newServiceRequest. + /// + /// In en, this message translates to: + /// **'New Service Request'** + String get newServiceRequest; + + /// No description provided for @newWord. + /// + /// In en, this message translates to: + /// **'New'** + String get newWord; + + /// No description provided for @noDateFound. + /// + /// In en, this message translates to: + /// **'No Date Found'** + String get noDateFound; + + /// No description provided for @noDeviceFound. + /// + /// In en, this message translates to: + /// **'No Asset Found'** + String get noDeviceFound; + + /// No description provided for @noHospitalFound. + /// + /// In en, this message translates to: + /// **'No Site Found'** + String get noHospitalFound; + + /// No description provided for @noModelFound. + /// + /// In en, this message translates to: + /// **'No Model Found'** + String get noModelFound; + + /// No description provided for @noServiceRequestFound. + /// + /// In en, this message translates to: + /// **'No Service Request Found'** + String get noServiceRequestFound; + + /// No description provided for @noSnFound. + /// + /// In en, this message translates to: + /// **'No SN Found'** + String get noSnFound; + + /// No description provided for @notifications. + /// + /// In en, this message translates to: + /// **'Notifications'** + String get notifications; + + /// No description provided for @notificationsNotFound. + /// + /// In en, this message translates to: + /// **'Notifications Not Found'** + String get notificationsNotFound; + + /// No description provided for @noUniteFound. + /// + /// In en, this message translates to: + /// **'No Unit Found'** + String get noUniteFound; + + /// No description provided for @ourWebsite. + /// + /// In en, this message translates to: + /// **'Our Website'** + String get ourWebsite; + + /// No description provided for @pickDevice. + /// + /// In en, this message translates to: + /// **'Pick Asset'** + String get pickDevice; + + /// No description provided for @pickHospital. + /// + /// In en, this message translates to: + /// **'Pick Site'** + String get pickHospital; + + /// No description provided for @pickUnite. + /// + /// In en, this message translates to: + /// **'Pick Unit'** + String get pickUnite; + + /// No description provided for @policy. + /// + /// In en, this message translates to: + /// **'Policy'** + String get policy; + + /// No description provided for @fixed. + /// + /// In en, this message translates to: + /// **'Fixed'** + String get fixed; + + /// No description provided for @reason1. + /// + /// In en, this message translates to: + /// **'The engineer didn\'t confirm visit date with 2 hours from the request time'** + String get reason1; + + /// No description provided for @reason2. + /// + /// In en, this message translates to: + /// **'The engineer change the visit date without coordination with me'** + String get reason2; + + /// No description provided for @reason3. + /// + /// In en, this message translates to: + /// **'the engineer didn\'t attend on date/time'** + String get reason3; + + /// No description provided for @reason4. + /// + /// In en, this message translates to: + /// **'I can\'t reach engineer by phone or SMS'** + String get reason4; + + /// No description provided for @reason5. + /// + /// In en, this message translates to: + /// **'There is delay ib bringing the spare parts'** + String get reason5; + + /// No description provided for @repaired. + /// + /// In en, this message translates to: + /// **'Repaired'** + String get repaired; + + /// No description provided for @repeated. + /// + /// In en, this message translates to: + /// **'Repeated'** + String get repeated; + + /// No description provided for @reportIssue. + /// + /// In en, this message translates to: + /// **'Report a Issue'** + String get reportIssue; + + /// No description provided for @requestInformation. + /// + /// In en, this message translates to: + /// **'request Information'** + String get requestInformation; + + /// No description provided for @searchBySn. + /// + /// In en, this message translates to: + /// **'Search By Sn'** + String get searchBySn; + + /// No description provided for @serviceRequestInformation. + /// + /// In en, this message translates to: + /// **'Service Request Information'** + String get serviceRequestInformation; + + /// No description provided for @serviceRequests. + /// + /// In en, this message translates to: + /// **'Service Requests'** + String get serviceRequests; + + /// No description provided for @correctiveMaintenance. + /// + /// In en, this message translates to: + /// **'Corrective Maintenance'** + String get correctiveMaintenance; + + /// No description provided for @shareAntherIssue. + /// + /// In en, this message translates to: + /// **'share Another Issue'** + String get shareAntherIssue; + + /// No description provided for @shareApp. + /// + /// In en, this message translates to: + /// **'Share App'** + String get shareApp; + + /// No description provided for @sn. + /// + /// In en, this message translates to: + /// **'SN'** + String get sn; + + /// No description provided for @submit. + /// + /// In en, this message translates to: + /// **'Submit'** + String get submit; + + /// No description provided for @trackServiceRequest. + /// + /// In en, this message translates to: + /// **'Track Service Requests'** + String get trackServiceRequest; + + /// No description provided for @twitter. + /// + /// In en, this message translates to: + /// **'Twitter'** + String get twitter; + + /// No description provided for @underRepair. + /// + /// In en, this message translates to: + /// **'Under Repair'** + String get underRepair; + + /// No description provided for @unite. + /// + /// In en, this message translates to: + /// **'Unit'** + String get unite; + + /// No description provided for @uniteRequired. + /// + /// In en, this message translates to: + /// **'Unit Required'** + String get uniteRequired; + + /// No description provided for @visitDate. + /// + /// In en, this message translates to: + /// **'Visit Date'** + String get visitDate; + + /// No description provided for @returnToService. + /// + /// In en, this message translates to: + /// **'Return to service'** + String get returnToService; + + /// No description provided for @whatsApp. + /// + /// In en, this message translates to: + /// **'WhatsApp'** + String get whatsApp; + + /// No description provided for @workPerformed. + /// + /// In en, this message translates to: + /// **'Work Performed'** + String get workPerformed; + + /// No description provided for @actualDate. + /// + /// In en, this message translates to: + /// **'Actual Date'** + String get actualDate; + + /// No description provided for @expectDate. + /// + /// In en, this message translates to: + /// **'Expect Date'** + String get expectDate; + + /// No description provided for @images. + /// + /// In en, this message translates to: + /// **'Images'** + String get images; + + /// No description provided for @imagesRequired. + /// + /// In en, this message translates to: + /// **'Images Required'** + String get imagesRequired; + + /// No description provided for @noSerialNumberFound. + /// + /// In en, this message translates to: + /// **'No Serial Number Found'** + String get noSerialNumberFound; + + /// No description provided for @notYet. + /// + /// In en, this message translates to: + /// **'Not Yet'** + String get notYet; + + /// No description provided for @noVisitsFound. + /// + /// In en, this message translates to: + /// **'No Visits Found'** + String get noVisitsFound; + + /// No description provided for @onHold. + /// + /// In en, this message translates to: + /// **'On Hold'** + String get onHold; + + /// No description provided for @pickFromCamera. + /// + /// In en, this message translates to: + /// **'Pick From Camera'** + String get pickFromCamera; + + /// No description provided for @pickFromGallery. + /// + /// In en, this message translates to: + /// **'Pick From Gallery'** + String get pickFromGallery; + + /// No description provided for @preventiveMaintenance. + /// + /// In en, this message translates to: + /// **'Preventive Maintenance'** + String get preventiveMaintenance; + + /// No description provided for @preventiveMaintenanceUpdatedSuccessfully. + /// + /// In en, this message translates to: + /// **'Preventive Maintenance Updated Successfully'** + String get preventiveMaintenanceUpdatedSuccessfully; + + /// No description provided for @regularVisits. + /// + /// In en, this message translates to: + /// **'Regular Visits'** + String get regularVisits; + + /// No description provided for @regularVisitsUpdatedSuccessfully. + /// + /// In en, this message translates to: + /// **'Regular Visits Updated Successfully'** + String get regularVisitsUpdatedSuccessfully; + + /// No description provided for @requiredStatus. + /// + /// In en, this message translates to: + /// **'Required Status'** + String get requiredStatus; + + /// No description provided for @updatePreventiveMaintenance. + /// + /// In en, this message translates to: + /// **'Update Preventive Maintenance'** + String get updatePreventiveMaintenance; + + /// No description provided for @updateRegularVisits. + /// + /// In en, this message translates to: + /// **'Update Regular Visits'** + String get updateRegularVisits; + + /// No description provided for @updateVisitsGroup. + /// + /// In en, this message translates to: + /// **'Update Visits Group'** + String get updateVisitsGroup; + + /// No description provided for @updatingDots. + /// + /// In en, this message translates to: + /// **'Updating ...'** + String get updatingDots; + + /// No description provided for @expectedVisitDate. + /// + /// In en, this message translates to: + /// **'Next Visit Date'** + String get expectedVisitDate; + + /// No description provided for @actualVisitDate. + /// + /// In en, this message translates to: + /// **'Actual Visit Date'** + String get actualVisitDate; + + /// No description provided for @visitInformation. + /// + /// In en, this message translates to: + /// **'Visit Information'** + String get visitInformation; + + /// No description provided for @travelingHours. + /// + /// In en, this message translates to: + /// **'Traveling Hours'** + String get travelingHours; + + /// No description provided for @workingHours. + /// + /// In en, this message translates to: + /// **'Working Hours'** + String get workingHours; + + /// No description provided for @contactStatus. + /// + /// In en, this message translates to: + /// **'Assigned To'** + String get contactStatus; + + /// No description provided for @image. + /// + /// In en, this message translates to: + /// **'Image'** + String get image; + + /// No description provided for @pickImage. + /// + /// In en, this message translates to: + /// **'Pick Image'** + String get pickImage; + + /// No description provided for @requiredImage. + /// + /// In en, this message translates to: + /// **'Image Required'** + String get requiredImage; + + /// No description provided for @taskStatus. + /// + /// In en, this message translates to: + /// **'Task Status'** + String get taskStatus; + + /// No description provided for @activationAlert. + /// + /// In en, this message translates to: + /// **'Account under reviewing please wait until be activated'** + String get activationAlert; + + /// No description provided for @attachImage. + /// + /// In en, this message translates to: + /// **'Attach Image'** + String get attachImage; + + /// No description provided for @callLastSituation. + /// + /// In en, this message translates to: + /// **'Call\'s Last Situation'** + String get callLastSituation; + + /// No description provided for @customer. + /// + /// In en, this message translates to: + /// **'Customer'** + String get customer; + + /// No description provided for @editServiceReport. + /// + /// In en, this message translates to: + /// **'Edit Work Order'** + String get editServiceReport; + + /// No description provided for @invoiceCode. + /// + /// In en, this message translates to: + /// **'Invoice Code'** + String get invoiceCode; + + /// No description provided for @invoiceNumber. + /// + /// In en, this message translates to: + /// **'Invoice Number'** + String get invoiceNumber; + + /// No description provided for @newServiceReport. + /// + /// In en, this message translates to: + /// **'New Work Order'** + String get newServiceReport; + + /// No description provided for @number. + /// + /// In en, this message translates to: + /// **'Number'** + String get number; + + /// No description provided for @operatingHours. + /// + /// In en, this message translates to: + /// **'Operating Hours'** + String get operatingHours; + + /// No description provided for @partName. + /// + /// In en, this message translates to: + /// **'Part Name'** + String get partName; + + /// No description provided for @quantity. + /// + /// In en, this message translates to: + /// **'Quantity'** + String get quantity; + + /// No description provided for @installedQty. + /// + /// In en, this message translates to: + /// **'Installed Quantity'** + String get installedQty; + + /// No description provided for @returnQty. + /// + /// In en, this message translates to: + /// **'Return Quantity'** + String get returnQty; + + /// No description provided for @oracleNo. + /// + /// In en, this message translates to: + /// **'Oracle No.'** + String get oracleNo; + + /// No description provided for @reasons. + /// + /// In en, this message translates to: + /// **'Reasons'** + String get reasons; + + /// No description provided for @addSparePartActionHeading. + /// + /// In en, this message translates to: + /// **'Do you want to create another spare part request?'** + String get addSparePartActionHeading; + + /// No description provided for @reason. + /// + /// In en, this message translates to: + /// **'Reason'** + String get reason; + + /// No description provided for @reportStatus. + /// + /// In en, this message translates to: + /// **'Report Status'** + String get reportStatus; + + /// No description provided for @reportType. + /// + /// In en, this message translates to: + /// **'Report Type'** + String get reportType; + + /// No description provided for @callId. + /// + /// In en, this message translates to: + /// **'Call Id'** + String get callId; + + /// No description provided for @requiredWord. + /// + /// In en, this message translates to: + /// **'required'** + String get requiredWord; + + /// No description provided for @assetType. + /// + /// In en, this message translates to: + /// **'Asset Type'** + String get assetType; + + /// No description provided for @workPreformed. + /// + /// In en, this message translates to: + /// **'Work Preformed'** + String get workPreformed; + + /// No description provided for @orderWorkNumber. + /// + /// In en, this message translates to: + /// **'Order Work Number'** + String get orderWorkNumber; + + /// No description provided for @assignedEmployee. + /// + /// In en, this message translates to: + /// **'Assigned Employee'** + String get assignedEmployee; + + /// No description provided for @assetSN. + /// + /// In en, this message translates to: + /// **'Asset S.N'** + String get assetSN; + + /// No description provided for @assetName. + /// + /// In en, this message translates to: + /// **'Asset Name'** + String get assetName; + + /// No description provided for @assetNumber. + /// + /// In en, this message translates to: + /// **'Asset Number'** + String get assetNumber; + + /// No description provided for @assetDetail. + /// + /// In en, this message translates to: + /// **'Asset Detail'** + String get assetDetail; + + /// No description provided for @requestDetail. + /// + /// In en, this message translates to: + /// **'Request Details'** + String get requestDetail; + + /// No description provided for @site. + /// + /// In en, this message translates to: + /// **'Site'** + String get site; + + /// No description provided for @maintenanceSituation. + /// + /// In en, this message translates to: + /// **'Maintenance Situation'** + String get maintenanceSituation; + + /// No description provided for @currentSituation. + /// + /// In en, this message translates to: + /// **'Current Situation'** + String get currentSituation; + + /// No description provided for @alert. + /// + /// In en, this message translates to: + /// **'Alert'** + String get alert; + + /// No description provided for @duplicateAlert. + /// + /// In en, this message translates to: + /// **'Duplicate Alert'** + String get duplicateAlert; + + /// No description provided for @duplicateAlertMessage. + /// + /// In en, this message translates to: + /// **'Are you sure you want to duplicate request?'** + String get duplicateAlertMessage; + + /// No description provided for @duplicateRequest. + /// + /// In en, this message translates to: + /// **'Duplicate Request'** + String get duplicateRequest; + + /// No description provided for @comment. + /// + /// In en, this message translates to: + /// **'Comment'** + String get comment; + + /// No description provided for @updateServiceRequest. + /// + /// In en, this message translates to: + /// **'Update Service Request'** + String get updateServiceRequest; + + /// No description provided for @repairLocation. + /// + /// In en, this message translates to: + /// **'Repair Location'** + String get repairLocation; + + /// No description provided for @travelingExpense. + /// + /// In en, this message translates to: + /// **'Traveling Expense'** + String get travelingExpense; + + /// No description provided for @startDate. + /// + /// In en, this message translates to: + /// **'Start Date'** + String get startDate; + + /// No description provided for @startTime. + /// + /// In en, this message translates to: + /// **'Start Time'** + String get startTime; + + /// No description provided for @endTime. + /// + /// In en, this message translates to: + /// **'End Time'** + String get endTime; + + /// No description provided for @no. + /// + /// In en, this message translates to: + /// **'No'** + String get no; + + /// No description provided for @fillDetails. + /// + /// In en, this message translates to: + /// **'Please fill the below details'** + String get fillDetails; + + /// No description provided for @yes. + /// + /// In en, this message translates to: + /// **'Yes'** + String get yes; + + /// No description provided for @requestedQuantity. + /// + /// In en, this message translates to: + /// **'Requested Quantity'** + String get requestedQuantity; + + /// No description provided for @deliveredQuantity. + /// + /// In en, this message translates to: + /// **'Delivered Quantity'** + String get deliveredQuantity; + + /// No description provided for @endDate. + /// + /// In en, this message translates to: + /// **'End Date'** + String get endDate; + + /// No description provided for @destinationSite. + /// + /// In en, this message translates to: + /// **'Destination Site'** + String get destinationSite; + + /// No description provided for @building. + /// + /// In en, this message translates to: + /// **'Building'** + String get building; + + /// No description provided for @floor. + /// + /// In en, this message translates to: + /// **'Floor'** + String get floor; + + /// No description provided for @department. + /// + /// In en, this message translates to: + /// **'Department'** + String get department; + + /// No description provided for @room. + /// + /// In en, this message translates to: + /// **'Room'** + String get room; + + /// No description provided for @actions. + /// + /// In en, this message translates to: + /// **'Actions'** + String get actions; + + /// No description provided for @deviceFiles. + /// + /// In en, this message translates to: + /// **'Asset Files'** + String get deviceFiles; + + /// No description provided for @pickFromFiles. + /// + /// In en, this message translates to: + /// **'Pick From Files'** + String get pickFromFiles; + + /// No description provided for @requiredFile. + /// + /// In en, this message translates to: + /// **'File Required'** + String get requiredFile; + + /// No description provided for @pickFile. + /// + /// In en, this message translates to: + /// **'Pick File'** + String get pickFile; + + /// No description provided for @login. + /// + /// In en, this message translates to: + /// **'Login'** + String get login; + + /// No description provided for @enterCredsToLogin. + /// + /// In en, this message translates to: + /// **'Enter your credential to login'** + String get enterCredsToLogin; + + /// No description provided for @signInToYour. + /// + /// In en, this message translates to: + /// **'Sign in to your'** + String get signInToYour; + + /// No description provided for @account. + /// + /// In en, this message translates to: + /// **'account'** + String get account; + + /// No description provided for @forgotPassword. + /// + /// In en, this message translates to: + /// **'Forgot Password?'** + String get forgotPassword; + + /// No description provided for @username. + /// + /// In en, this message translates to: + /// **'Username'** + String get username; + + /// No description provided for @requiredField. + /// + /// In en, this message translates to: + /// **'Required Field'** + String get requiredField; + + /// No description provided for @passwordLengthMessage. + /// + /// In en, this message translates to: + /// **'Password must has at least 6 characters'** + String get passwordLengthMessage; + + /// No description provided for @overview. + /// + /// In en, this message translates to: + /// **'Overview'** + String get overview; + + /// No description provided for @request. + /// + /// In en, this message translates to: + /// **'Request'** + String get request; + + /// No description provided for @assets. + /// + /// In en, this message translates to: + /// **'Assets'** + String get assets; + + /// No description provided for @contact. + /// + /// In en, this message translates to: + /// **'Contact'** + String get contact; + + /// No description provided for @welcome. + /// + /// In en, this message translates to: + /// **'Welcome,'** + String get welcome; + + /// No description provided for @openWhatsapp. + /// + /// In en, this message translates to: + /// **'Open WhatsApp'** + String get openWhatsapp; + + /// No description provided for @timeAndDuration. + /// + /// In en, this message translates to: + /// **'Time and Duration'** + String get timeAndDuration; + + /// No description provided for @assetsCondition. + /// + /// In en, this message translates to: + /// **'Asset’s Condition'** + String get assetsCondition; + + /// No description provided for @attachmentsAcknowledge. + /// + /// In en, this message translates to: + /// **'Attachments & Acknowledge'** + String get attachmentsAcknowledge; + + /// No description provided for @up_and_running. + /// + /// In en, this message translates to: + /// **'Up & Running'** + String get up_and_running; + + /// No description provided for @partially_down. + /// + /// In en, this message translates to: + /// **'Partially Down'** + String get partially_down; + + /// No description provided for @needAVisit. + /// + /// In en, this message translates to: + /// **'Need a Visit'** + String get needAVisit; + + /// No description provided for @fixedRemotely. + /// + /// In en, this message translates to: + /// **'Fixed Remotely'** + String get fixedRemotely; + + /// No description provided for @iHaveArrived. + /// + /// In en, this message translates to: + /// **'I have arrived'** + String get iHaveArrived; + + /// No description provided for @updateAssetDetails. + /// + /// In en, this message translates to: + /// **'Update Asset Details'** + String get updateAssetDetails; + + /// No description provided for @equipment_status. + /// + /// In en, this message translates to: + /// **'Equipment Status'** + String get equipment_status; + + /// No description provided for @failureReason. + /// + /// In en, this message translates to: + /// **'Failure Reason'** + String get failureReason; + + /// No description provided for @visitDateAndTime. + /// + /// In en, this message translates to: + /// **'Visit Date & Time'** + String get visitDateAndTime; + + /// No description provided for @markAsFixed. + /// + /// In en, this message translates to: + /// **'Mark as Fixed'** + String get markAsFixed; + + /// No description provided for @fully_down. + /// + /// In en, this message translates to: + /// **'Fully Down'** + String get fully_down; + + /// No description provided for @solutions. + /// + /// In en, this message translates to: + /// **'Solutions'** + String get solutions; + + /// No description provided for @callUs. + /// + /// In en, this message translates to: + /// **'Call Us'** + String get callUs; + + /// No description provided for @liveChat. + /// + /// In en, this message translates to: + /// **'Live Chat'** + String get liveChat; + + /// No description provided for @feedBack. + /// + /// In en, this message translates to: + /// **'Feedback'** + String get feedBack; + + /// No description provided for @gasRefillRequest. + /// + /// In en, this message translates to: + /// **'Gas Refill Request'** + String get gasRefillRequest; + + /// No description provided for @transferRequest. + /// + /// In en, this message translates to: + /// **'Transfer Request'** + String get transferRequest; + + /// No description provided for @serviceRequest. + /// + /// In en, this message translates to: + /// **'Service Request'** + String get serviceRequest; + + /// No description provided for @newGasRefillRequest. + /// + /// In en, this message translates to: + /// **'New Gas Refill Request'** + String get newGasRefillRequest; + + /// No description provided for @newTransferRequest. + /// + /// In en, this message translates to: + /// **'New Transfer Request'** + String get newTransferRequest; + + /// No description provided for @submitRequest. + /// + /// In en, this message translates to: + /// **'Submit Request'** + String get submitRequest; + + /// No description provided for @select. + /// + /// In en, this message translates to: + /// **'Select'** + String get select; + + /// No description provided for @gasType. + /// + /// In en, this message translates to: + /// **'Gas Type'** + String get gasType; + + /// No description provided for @cylinderType. + /// + /// In en, this message translates to: + /// **'Cylinder Type'** + String get cylinderType; + + /// No description provided for @cylinderSize. + /// + /// In en, this message translates to: + /// **'Cylinder Size'** + String get cylinderSize; + + /// No description provided for @httpError. + /// + /// In en, this message translates to: + /// **'Error Request Failed'** + String get httpError; + + /// No description provided for @tryAgain. + /// + /// In en, this message translates to: + /// **'Try Again'** + String get tryAgain; + + /// No description provided for @onlyNumbers. + /// + /// In en, this message translates to: + /// **'Only Numbers Allowed'** + String get onlyNumbers; + + /// No description provided for @youHaveToSelect. + /// + /// In en, this message translates to: + /// **'You have to select'** + String get youHaveToSelect; + + /// No description provided for @youHaveToAddRequests. + /// + /// In en, this message translates to: + /// **'You have to add requests'** + String get youHaveToAddRequests; + + /// No description provided for @createdSuccessfully. + /// + /// In en, this message translates to: + /// **'Created successfully'** + String get createdSuccessfully; + + /// No description provided for @failedToCompleteRequest. + /// + /// In en, this message translates to: + /// **'Failed to complete request'** + String get failedToCompleteRequest; + + /// No description provided for @assetNo. + /// + /// In en, this message translates to: + /// **'Asset No'** + String get assetNo; + + /// No description provided for @manufacture. + /// + /// In en, this message translates to: + /// **'Manufacture'** + String get manufacture; + + /// No description provided for @serialNo. + /// + /// In en, this message translates to: + /// **'Serial No'** + String get serialNo; + + /// No description provided for @pickAsset. + /// + /// In en, this message translates to: + /// **'Pick Asset'** + String get pickAsset; + + /// No description provided for @filter. + /// + /// In en, this message translates to: + /// **'Filter'** + String get filter; + + /// No description provided for @firstAction. + /// + /// In en, this message translates to: + /// **'First Action'** + String get firstAction; + + /// No description provided for @rejectionReason. + /// + /// In en, this message translates to: + /// **'Rejection Reason'** + String get rejectionReason; + + /// No description provided for @workOrder. + /// + /// In en, this message translates to: + /// **'Work Order'** + String get workOrder; + + /// No description provided for @cmDetails. + /// + /// In en, this message translates to: + /// **'CM Details'** + String get cmDetails; + + /// No description provided for @assetInformation. + /// + /// In en, this message translates to: + /// **'Asset Information'** + String get assetInformation; + + /// No description provided for @callDetails. + /// + /// In en, this message translates to: + /// **'Call Details'** + String get callDetails; + + /// No description provided for @assetStatus. + /// + /// In en, this message translates to: + /// **'Asset Status'** + String get assetStatus; + + /// No description provided for @workOrders. + /// + /// In en, this message translates to: + /// **'Work Orders'** + String get workOrders; + + /// No description provided for @viewWorkOrder. + /// + /// In en, this message translates to: + /// **'View All Work Order'** + String get viewWorkOrder; + + /// No description provided for @createWorkOrder. + /// + /// In en, this message translates to: + /// **'Create Work Order'** + String get createWorkOrder; + + /// No description provided for @serviceDetails. + /// + /// In en, this message translates to: + /// **'Service Details'** + String get serviceDetails; + + /// No description provided for @setVisitDate. + /// + /// In en, this message translates to: + /// **'Set Date Of Visit'** + String get setVisitDate; + + /// No description provided for @verifyArrival. + /// + /// In en, this message translates to: + /// **'Verify Arrival'** + String get verifyArrival; + + /// No description provided for @selectWorkOrder. + /// + /// In en, this message translates to: + /// **'Select Work Order'** + String get selectWorkOrder; + + /// No description provided for @scanQr. + /// + /// In en, this message translates to: + /// **'Scan QR'** + String get scanQr; + + /// No description provided for @scanQrDetail. + /// + /// In en, this message translates to: + /// **'Scan QR Code of the device'** + String get scanQrDetail; + + /// No description provided for @askRequester. + /// + /// In en, this message translates to: + /// **'Ask Requester to Verify'** + String get askRequester; + + /// No description provided for @askRequesterDetail. + /// + /// In en, this message translates to: + /// **'Ask requester to verify your arrival through Atoms Application.'** + String get askRequesterDetail; + + /// No description provided for @askOtp. + /// + /// In en, this message translates to: + /// **'Ask OTP From Requester'** + String get askOtp; + + /// No description provided for @askOtpDetail. + /// + /// In en, this message translates to: + /// **'Ask OTP from requester to verify you arrival'** + String get askOtpDetail; + + /// No description provided for @takeDevicePhoto. + /// + /// In en, this message translates to: + /// **'Take Device Photo'** + String get takeDevicePhoto; + + /// No description provided for @takeDevicePhotoDetail. + /// + /// In en, this message translates to: + /// **'Take the photo of the device from location'** + String get takeDevicePhotoDetail; + + /// No description provided for @lastSituationStatus. + /// + /// In en, this message translates to: + /// **'Last Situation Status'** + String get lastSituationStatus; + + /// No description provided for @priority. + /// + /// In en, this message translates to: + /// **'Request Priority'** + String get priority; + + /// No description provided for @equipmentStatus. + /// + /// In en, this message translates to: + /// **'Equipment Status'** + String get equipmentStatus; + + /// No description provided for @requestSparePart. + /// + /// In en, this message translates to: + /// **'Request Spare Part'** + String get requestSparePart; + + /// No description provided for @callResponse. + /// + /// In en, this message translates to: + /// **'Call Response'** + String get callResponse; + + /// No description provided for @selectAction. + /// + /// In en, this message translates to: + /// **'Select Action'** + String get selectAction; + + /// No description provided for @requestSparePartForYourAsset. + /// + /// In en, this message translates to: + /// **'Request spare part for your asset'** + String get requestSparePartForYourAsset; + + /// No description provided for @addNewActivity. + /// + /// In en, this message translates to: + /// **'Add New Activity'** + String get addNewActivity; + + /// No description provided for @addNewActivityToYourWorkOrder. + /// + /// In en, this message translates to: + /// **'Add new activity to your work order'** + String get addNewActivityToYourWorkOrder; + + /// No description provided for @markAsCompleted. + /// + /// In en, this message translates to: + /// **'Mark As Completed'** + String get markAsCompleted; + + /// No description provided for @cmNumber. + /// + /// In en, this message translates to: + /// **'CM Number'** + String get cmNumber; + + /// No description provided for @jopStatus. + /// + /// In en, this message translates to: + /// **'Jop Status'** + String get jopStatus; + + /// No description provided for @callComments. + /// + /// In en, this message translates to: + /// **'Call Comments'** + String get callComments; + + /// No description provided for @comments. + /// + /// In en, this message translates to: + /// **'Comments'** + String get comments; + + /// No description provided for @recordVoice. + /// + /// In en, this message translates to: + /// **'Record Voice'** + String get recordVoice; + + /// No description provided for @gasRefillDetails. + /// + /// In en, this message translates to: + /// **'Gas Refill Details'** + String get gasRefillDetails; + + /// No description provided for @updateRequest. + /// + /// In en, this message translates to: + /// **'Update Request'** + String get updateRequest; + + /// No description provided for @gasRefill. + /// + /// In en, this message translates to: + /// **'Gas Refill'** + String get gasRefill; + + /// No description provided for @assetDetails. + /// + /// In en, this message translates to: + /// **'Asset Details'** + String get assetDetails; + + /// No description provided for @receiverName. + /// + /// In en, this message translates to: + /// **'Receiver Name'** + String get receiverName; + + /// No description provided for @receiverDetails. + /// + /// In en, this message translates to: + /// **'Receiver Details'** + String get receiverDetails; + + /// No description provided for @requestedThrough. + /// + /// In en, this message translates to: + /// **'Requested Through'** + String get requestedThrough; + + /// No description provided for @typeOfRequest. + /// + /// In en, this message translates to: + /// **'Type of Request'** + String get typeOfRequest; + + /// No description provided for @deviceTransfer. + /// + /// In en, this message translates to: + /// **'Device Transfer'** + String get deviceTransfer; + + /// No description provided for @deviceTransferRequest. + /// + /// In en, this message translates to: + /// **'Device Transfer Requests'** + String get deviceTransferRequest; + + /// No description provided for @deviceTransferDetails. + /// + /// In en, this message translates to: + /// **'Device Transfer Details'** + String get deviceTransferDetails; + + /// No description provided for @transferDetails. + /// + /// In en, this message translates to: + /// **'Transfer Details'** + String get transferDetails; + + /// No description provided for @senderDetails. + /// + /// In en, this message translates to: + /// **'Sender Details'** + String get senderDetails; + + /// No description provided for @searchBy. + /// + /// In en, this message translates to: + /// **'Search by'** + String get searchBy; + + /// No description provided for @searchByDesc. + /// + /// In en, this message translates to: + /// **'Search by any of the following criteria'** + String get searchByDesc; + + /// No description provided for @location. + /// + /// In en, this message translates to: + /// **'Location'** + String get location; + + /// No description provided for @supplier. + /// + /// In en, this message translates to: + /// **'Supplier'** + String get supplier; + + /// No description provided for @supplierEngineer. + /// + /// In en, this message translates to: + /// **'Supplier Engineer'** + String get supplierEngineer; + + /// No description provided for @md. + /// + /// In en, this message translates to: + /// **'MD'** + String get md; + + /// No description provided for @snNumber. + /// + /// In en, this message translates to: + /// **'SN Number'** + String get snNumber; + + /// No description provided for @snNo. + /// + /// In en, this message translates to: + /// **'SN No.'** + String get snNo; + + /// No description provided for @oracleCode. + /// + /// In en, this message translates to: + /// **'Oracle Code'** + String get oracleCode; + + /// No description provided for @byDepartment. + /// + /// In en, this message translates to: + /// **'By Department'** + String get byDepartment; + + /// No description provided for @bySite. + /// + /// In en, this message translates to: + /// **'By Site'** + String get bySite; + + /// No description provided for @applyFilter. + /// + /// In en, this message translates to: + /// **'Apply Filter'** + String get applyFilter; + + /// No description provided for @pmDateRange. + /// + /// In en, this message translates to: + /// **'PM Date Range'** + String get pmDateRange; + + /// No description provided for @pickDate. + /// + /// In en, this message translates to: + /// **'Pick Date'** + String get pickDate; + + /// No description provided for @verify. + /// + /// In en, this message translates to: + /// **'Verify'** + String get verify; + + /// No description provided for @resend. + /// + /// In en, this message translates to: + /// **'Resend'** + String get resend; + + /// No description provided for @resendIn. + /// + /// In en, this message translates to: + /// **'Resend In'** + String get resendIn; + + /// No description provided for @havingTroubleReceivingOtp. + /// + /// In en, this message translates to: + /// **'Having trouble receiving OTP?'** + String get havingTroubleReceivingOtp; + + /// No description provided for @askOtpFromRequester. + /// + /// In en, this message translates to: + /// **'Ask OTP From Requester'** + String get askOtpFromRequester; + + /// No description provided for @checkOutOtherMethods. + /// + /// In en, this message translates to: + /// **'Check out other methods.'** + String get checkOutOtherMethods; + + /// No description provided for @otpSentToNumber. + /// + /// In en, this message translates to: + /// **'An OTP sent to the number'** + String get otpSentToNumber; + + /// No description provided for @requestDetails. + /// + /// In en, this message translates to: + /// **'Request Details'** + String get requestDetails; + + /// No description provided for @historyLogs. + /// + /// In en, this message translates to: + /// **'History Logs'** + String get historyLogs; + + /// No description provided for @pickTime. + /// + /// In en, this message translates to: + /// **'Pick Time'** + String get pickTime; + + /// No description provided for @readCompleteThread. + /// + /// In en, this message translates to: + /// **'Read Complete thread'** + String get readCompleteThread; + + /// No description provided for @pickADate. + /// + /// In en, this message translates to: + /// **'Pick a date'** + String get pickADate; + + /// No description provided for @firstActionStatus. + /// + /// In en, this message translates to: + /// **'First Action Status'** + String get firstActionStatus; + + /// No description provided for @loanAvailability. + /// + /// In en, this message translates to: + /// **'Loan Availability'** + String get loanAvailability; + + /// No description provided for @save. + /// + /// In en, this message translates to: + /// **'Save'** + String get save; + + /// No description provided for @serviceType. + /// + /// In en, this message translates to: + /// **'Service Type'** + String get serviceType; + + /// No description provided for @assistantEmployee. + /// + /// In en, this message translates to: + /// **'Assistant Employee'** + String get assistantEmployee; + + /// No description provided for @assignAssistant. + /// + /// In en, this message translates to: + /// **'Assign Assistant'** + String get assignAssistant; + + /// No description provided for @partNo. + /// + /// In en, this message translates to: + /// **'Part No.'** + String get partNo; + + /// No description provided for @partNumber. + /// + /// In en, this message translates to: + /// **'Part Number'** + String get partNumber; + + /// No description provided for @engSign. + /// + /// In en, this message translates to: + /// **'Engineer Signature'** + String get engSign; + + /// No description provided for @requesterName. + /// + /// In en, this message translates to: + /// **'Requester Name'** + String get requesterName; + + /// No description provided for @updateWorkOrder. + /// + /// In en, this message translates to: + /// **'Update Work Order'** + String get updateWorkOrder; + + /// No description provided for @createPreventiveMaintenanceRequest. + /// + /// In en, this message translates to: + /// **'Create Preventive Maintenance Request'** + String get createPreventiveMaintenanceRequest; + + /// No description provided for @createNewRequest. + /// + /// In en, this message translates to: + /// **'Create New Request'** + String get createNewRequest; + + /// No description provided for @calendar. + /// + /// In en, this message translates to: + /// **'Calendar'** + String get calendar; + + /// No description provided for @helpCenter. + /// + /// In en, this message translates to: + /// **'Help Center'** + String get helpCenter; + + /// No description provided for @rateUs. + /// + /// In en, this message translates to: + /// **'Rate Us'** + String get rateUs; + + /// No description provided for @settings. + /// + /// In en, this message translates to: + /// **'Settings'** + String get settings; + + /// No description provided for @reportBg. + /// + /// In en, this message translates to: + /// **'Report a bug'** + String get reportBg; + + /// No description provided for @whatsNew. + /// + /// In en, this message translates to: + /// **'What\'s New'** + String get whatsNew; + + /// No description provided for @logout. + /// + /// In en, this message translates to: + /// **'Logout'** + String get logout; + + /// No description provided for @arabic. + /// + /// In en, this message translates to: + /// **'Arabic'** + String get arabic; + + /// No description provided for @lightTheme. + /// + /// In en, this message translates to: + /// **'Light Theme'** + String get lightTheme; + + /// No description provided for @myProfile. + /// + /// In en, this message translates to: + /// **'My Profile'** + String get myProfile; + + /// No description provided for @viewDetails. + /// + /// In en, this message translates to: + /// **'View Details'** + String get viewDetails; + + /// No description provided for @requests. + /// + /// In en, this message translates to: + /// **'Requests'** + String get requests; + + /// No description provided for @highPriority. + /// + /// In en, this message translates to: + /// **'High Priority'** + String get highPriority; + + /// No description provided for @newRequests. + /// + /// In en, this message translates to: + /// **'New'** + String get newRequests; + + /// No description provided for @completed. + /// + /// In en, this message translates to: + /// **'Completed'** + String get completed; + + /// No description provided for @overdue. + /// + /// In en, this message translates to: + /// **'Overdue'** + String get overdue; + + /// No description provided for @lowPriority. + /// + /// In en, this message translates to: + /// **'Low Priority'** + String get lowPriority; + + /// No description provided for @newR. + /// + /// In en, this message translates to: + /// **'New'** + String get newR; + + /// No description provided for @inProgress. + /// + /// In en, this message translates to: + /// **'In Progress'** + String get inProgress; + + /// No description provided for @open. + /// + /// In en, this message translates to: + /// **'Open'** + String get open; + + /// No description provided for @requestType. + /// + /// In en, this message translates to: + /// **'Request Type'** + String get requestType; + + /// No description provided for @requestNo. + /// + /// In en, this message translates to: + /// **'Request No'** + String get requestNo; + + /// No description provided for @assignedTo. + /// + /// In en, this message translates to: + /// **'Assigned To'** + String get assignedTo; + + /// No description provided for @waitingForQuotation. + /// + /// In en, this message translates to: + /// **'Waiting for quotation'** + String get waitingForQuotation; + + /// No description provided for @gasRequest. + /// + /// In en, this message translates to: + /// **'Gas Request'** + String get gasRequest; + + /// No description provided for @viewComments. + /// + /// In en, this message translates to: + /// **'View Comments'** + String get viewComments; + + /// No description provided for @commentHere. + /// + /// In en, this message translates to: + /// **'Comment Here'** + String get commentHere; + + /// No description provided for @nurseSignature. + /// + /// In en, this message translates to: + /// **'Nurse Signature'** + String get nurseSignature; + + /// No description provided for @ppmVisit. + /// + /// In en, this message translates to: + /// **'PPM Visit Status'** + String get ppmVisit; + + /// No description provided for @ppmRequest. + /// + /// In en, this message translates to: + /// **'PPMs Request'** + String get ppmRequest; + + /// No description provided for @timer. + /// + /// In en, this message translates to: + /// **'Timer'** + String get timer; + + /// No description provided for @deviceStatus. + /// + /// In en, this message translates to: + /// **'Device Status'** + String get deviceStatus; + + /// No description provided for @addAsset. + /// + /// In en, this message translates to: + /// **'Add Asset'** + String get addAsset; + + /// No description provided for @calibrationDate. + /// + /// In en, this message translates to: + /// **'Calibration Date'** + String get calibrationDate; + + /// No description provided for @asset. + /// + /// In en, this message translates to: + /// **'Asset'** + String get asset; + + /// No description provided for @addItem. + /// + /// In en, this message translates to: + /// **'Add Item'** + String get addItem; + + /// No description provided for @item. + /// + /// In en, this message translates to: + /// **'Item'** + String get item; + + /// No description provided for @measuredValue. + /// + /// In en, this message translates to: + /// **'Measured Value'** + String get measuredValue; + + /// No description provided for @sureExit. + /// + /// In en, this message translates to: + /// **'Are you sure ypu want to Exit? '** + String get sureExit; + + /// No description provided for @daily. + /// + /// In en, this message translates to: + /// **'Daily'** + String get daily; + + /// No description provided for @weekly. + /// + /// In en, this message translates to: + /// **'Weekly'** + String get weekly; + + /// No description provided for @monthly. + /// + /// In en, this message translates to: + /// **'Monthly'** + String get monthly; + + /// No description provided for @confirmEngineerArrival. + /// + /// In en, this message translates to: + /// **'Confirm Engineer Arrival'** + String get confirmEngineerArrival; + + /// No description provided for @confirmingEngineerArrivalAction. + /// + /// In en, this message translates to: + /// **'With this action you are confirming engineer arrival'** + String get confirmingEngineerArrivalAction; + + /// No description provided for @myShift. + /// + /// In en, this message translates to: + /// **'My Shift'** + String get myShift; + + /// No description provided for @myTeamRequest. + /// + /// In en, this message translates to: + /// **'My Team Request'** + String get myTeamRequest; + + /// No description provided for @sunToThurs. + /// + /// In en, this message translates to: + /// **'Sunday to Thursday'** + String get sunToThurs; + + /// No description provided for @requestGasRefill. + /// + /// In en, this message translates to: + /// **'Request Gas Refill'** + String get requestGasRefill; + + /// No description provided for @trackGasRefill. + /// + /// In en, this message translates to: + /// **'Track Gas Refill'** + String get trackGasRefill; + + /// No description provided for @trackAssetTransfer. + /// + /// In en, this message translates to: + /// **'Track Asset Transfer'** + String get trackAssetTransfer; + + /// No description provided for @total. + /// + /// In en, this message translates to: + /// **'Total'** + String get total; + + /// No description provided for @noDataFound. + /// + /// In en, this message translates to: + /// **'No Data Found'** + String get noDataFound; + + /// No description provided for @allRequests. + /// + /// In en, this message translates to: + /// **'All Requests'** + String get allRequests; + + /// No description provided for @allWorkOrder. + /// + /// In en, this message translates to: + /// **'All Work Orders'** + String get allWorkOrder; + + /// No description provided for @requestStatus. + /// + /// In en, this message translates to: + /// **'Request Status'** + String get requestStatus; + + /// No description provided for @createSubWorkOrder. + /// + /// In en, this message translates to: + /// **'Create Sub Work Order'** + String get createSubWorkOrder; + + /// No description provided for @mrNumber. + /// + /// In en, this message translates to: + /// **'MR Number'** + String get mrNumber; + + /// No description provided for @vendorEng. + /// + /// In en, this message translates to: + /// **'Vendor Engineer'** + String get vendorEng; + + /// No description provided for @vendorName. + /// + /// In en, this message translates to: + /// **'Vendor Name'** + String get vendorName; + + /// No description provided for @reset. + /// + /// In en, this message translates to: + /// **'Reset'** + String get reset; + + /// No description provided for @solution. + /// + /// In en, this message translates to: + /// **'Solution'** + String get solution; + + /// No description provided for @technicalComment. + /// + /// In en, this message translates to: + /// **'Technical Comment'** + String get technicalComment; + + /// No description provided for @recentActivities. + /// + /// In en, this message translates to: + /// **'Recent Activities'** + String get recentActivities; + + /// No description provided for @activities. + /// + /// In en, this message translates to: + /// **'Activities'** + String get activities; + + /// No description provided for @provideQrCodeToEngineer. + /// + /// In en, this message translates to: + /// **'Provide the below QR Code to Engineer to verify his arrival'** + String get provideQrCodeToEngineer; + + /// No description provided for @qrCode. + /// + /// In en, this message translates to: + /// **'QR Code'** + String get qrCode; + + /// No description provided for @createNewActivity. + /// + /// In en, this message translates to: + /// **'Create New Activity'** + String get createNewActivity; + + /// No description provided for @selectActivityType. + /// + /// In en, this message translates to: + /// **'Select Activity Type'** + String get selectActivityType; + + /// No description provided for @sparePartRequest. + /// + /// In en, this message translates to: + /// **'Spare Part Request'** + String get sparePartRequest; + + /// No description provided for @sparePartRequestDetail. + /// + /// In en, this message translates to: + /// **'Ask requester to verify your arrival through Atoms Application.'** + String get sparePartRequestDetail; + + /// No description provided for @maintenanceRequest. + /// + /// In en, this message translates to: + /// **'Maintenance Request'** + String get maintenanceRequest; + + /// No description provided for @assetToBeRetired. + /// + /// In en, this message translates to: + /// **'Asset to be retired'** + String get assetToBeRetired; + + /// No description provided for @problemDesc. + /// + /// In en, this message translates to: + /// **'Problem Description'** + String get problemDesc; + + /// No description provided for @source. + /// + /// In en, this message translates to: + /// **'Source'** + String get source; + + /// No description provided for @costCodeName. + /// + /// In en, this message translates to: + /// **'Cost Code Name'** + String get costCodeName; + + /// No description provided for @installationDate. + /// + /// In en, this message translates to: + /// **'Installation Date'** + String get installationDate; + + /// No description provided for @nextPmDate. + /// + /// In en, this message translates to: + /// **'Next PM Date'** + String get nextPmDate; + + /// No description provided for @lastPmDate. + /// + /// In en, this message translates to: + /// **'Last PM Date'** + String get lastPmDate; + + /// No description provided for @assetScan. + /// + /// In en, this message translates to: + /// **'Asset Scan'** + String get assetScan; + + /// No description provided for @pickManually. + /// + /// In en, this message translates to: + /// **'Pick Manually'** + String get pickManually; + + /// No description provided for @doYouWantToSetReminder. + /// + /// In en, this message translates to: + /// **'Do you want to set reminder?'** + String get doYouWantToSetReminder; + + /// No description provided for @youCanSetTheReminderInAlarmToRemindYouBeforeVisit. + /// + /// In en, this message translates to: + /// **'You can set the reminder in alarm to remind you before visit. Please select the time below'** + String get youCanSetTheReminderInAlarmToRemindYouBeforeVisit; + + /// No description provided for @setReminder. + /// + /// In en, this message translates to: + /// **'Set Reminder'** + String get setReminder; + + /// No description provided for @searchAsset. + /// + /// In en, this message translates to: + /// **'Search Asset'** + String get searchAsset; + + /// No description provided for @newPassword. + /// + /// In en, this message translates to: + /// **'New Password'** + String get newPassword; + + /// No description provided for @resetPassword. + /// + /// In en, this message translates to: + /// **'Reset Password'** + String get resetPassword; + + /// No description provided for @otpVerification. + /// + /// In en, this message translates to: + /// **'OTP Verification'** + String get otpVerification; + + /// No description provided for @pleaseEnterTheOtpSentTo. + /// + /// In en, this message translates to: + /// **'Please enter the OTP sent to'** + String get pleaseEnterTheOtpSentTo; + + /// No description provided for @pleaseEnterTheNewPassword. + /// + /// In en, this message translates to: + /// **'Please enter the new password'** + String get pleaseEnterTheNewPassword; + + /// No description provided for @markAttendance. + /// + /// In en, this message translates to: + /// **'Mark Attendance'** + String get markAttendance; + + /// No description provided for @selectMethodToMarkAttendance. + /// + /// In en, this message translates to: + /// **'Select the method to mark the attendance'** + String get selectMethodToMarkAttendance; + + /// No description provided for @employeeIdIsRequired. + /// + /// In en, this message translates to: + /// **'Employee Id is required'** + String get employeeIdIsRequired; + + /// No description provided for @successful. + /// + /// In en, this message translates to: + /// **'Successful'** + String get successful; + + /// No description provided for @youHaveSuccessfullyMarkedYourAttendance. + /// + /// In en, this message translates to: + /// **'You have successfully marked your attendance'** + String get youHaveSuccessfullyMarkedYourAttendance; + + /// No description provided for @swipeTypeName. + /// + /// In en, this message translates to: + /// **'Swipe Type Name'** + String get swipeTypeName; + + /// No description provided for @userName. + /// + /// In en, this message translates to: + /// **'User Name'** + String get userName; + + /// No description provided for @siteName. + /// + /// In en, this message translates to: + /// **'Site Name'** + String get siteName; + + /// No description provided for @pointName. + /// + /// In en, this message translates to: + /// **'Point Name'** + String get pointName; + + /// No description provided for @checkIn. + /// + /// In en, this message translates to: + /// **'Check in'** + String get checkIn; + + /// No description provided for @pmWo. + /// + /// In en, this message translates to: + /// **'PM WO'** + String get pmWo; + + /// No description provided for @recurrentWo. + /// + /// In en, this message translates to: + /// **'Recurrent WO'** + String get recurrentWo; + + /// No description provided for @taskNo. + /// + /// In en, this message translates to: + /// **'Task No'** + String get taskNo; + + /// No description provided for @assignEngineer. + /// + /// In en, this message translates to: + /// **'Assign Engineer'** + String get assignEngineer; + + /// No description provided for @scheduledDate. + /// + /// In en, this message translates to: + /// **'Scheduled Date'** + String get scheduledDate; + + /// No description provided for @complete. + /// + /// In en, this message translates to: + /// **'Complete'** + String get complete; + + /// No description provided for @createdDate. + /// + /// In en, this message translates to: + /// **'Created Date'** + String get createdDate; + + /// No description provided for @employeeId. + /// + /// In en, this message translates to: + /// **'Employee ID'** + String get employeeId; + + /// No description provided for @extensionNo. + /// + /// In en, this message translates to: + /// **'Extension No'** + String get extensionNo; + + /// No description provided for @fail. + /// + /// In en, this message translates to: + /// **'FAIL'** + String get fail; + + /// No description provided for @pass. + /// + /// In en, this message translates to: + /// **'PASS'** + String get pass; + + /// No description provided for @pmPlanNo. + /// + /// In en, this message translates to: + /// **'PM Plan No'** + String get pmPlanNo; + + /// No description provided for @executionTimeFrame. + /// + /// In en, this message translates to: + /// **'Execution Time Frame'** + String get executionTimeFrame; + + /// No description provided for @pmTestResult. + /// + /// In en, this message translates to: + /// **'PM Test Result'** + String get pmTestResult; + + /// No description provided for @actualVisit. + /// + /// In en, this message translates to: + /// **'Actual Visit'** + String get actualVisit; + + /// No description provided for @totalWorkingTime. + /// + /// In en, this message translates to: + /// **'Total Working Time'** + String get totalWorkingTime; + + /// No description provided for @typeOfPm. + /// + /// In en, this message translates to: + /// **'Type of PM'** + String get typeOfPm; + + /// No description provided for @attachments. + /// + /// In en, this message translates to: + /// **'Attachments'** + String get attachments; + + /// No description provided for @supplierName. + /// + /// In en, this message translates to: + /// **'Supplier Name'** + String get supplierName; + + /// No description provided for @externalEngineerName. + /// + /// In en, this message translates to: + /// **'External Engineer Name'** + String get externalEngineerName; + + /// No description provided for @telephone. + /// + /// In en, this message translates to: + /// **'Telephone'** + String get telephone; + + /// No description provided for @task. + /// + /// In en, this message translates to: + /// **'Task'** + String get task; + + /// No description provided for @taskType. + /// + /// In en, this message translates to: + /// **'Task Type'** + String get taskType; + + /// No description provided for @createTaskRequest. + /// + /// In en, this message translates to: + /// **'Create Task Request'** + String get createTaskRequest; + + /// No description provided for @taskRequest. + /// + /// In en, this message translates to: + /// **'Task Request'** + String get taskRequest; + + /// No description provided for @completedActions. + /// + /// In en, this message translates to: + /// **'Completed Actions'** + String get completedActions; + + /// No description provided for @impactStatus. + /// + /// In en, this message translates to: + /// **'Impact Status'** + String get impactStatus; + + /// No description provided for @installationSite. + /// + /// In en, this message translates to: + /// **'Installation Site'** + String get installationSite; + + /// No description provided for @installationBuilding. + /// + /// In en, this message translates to: + /// **'Installation Building'** + String get installationBuilding; + + /// No description provided for @installationFloor. + /// + /// In en, this message translates to: + /// **'Installation Floor'** + String get installationFloor; + + /// No description provided for @installationDepartment. + /// + /// In en, this message translates to: + /// **'Installation Department'** + String get installationDepartment; + + /// No description provided for @acknowledge. + /// + /// In en, this message translates to: + /// **'Acknowledge'** + String get acknowledge; + + /// No description provided for @transferAsset. + /// + /// In en, this message translates to: + /// **'Transfer Asset'** + String get transferAsset; + + /// No description provided for @createAssetTransferRequest. + /// + /// In en, this message translates to: + /// **'Create Asset Transfer Request'** + String get createAssetTransferRequest; + + /// No description provided for @arrivedDate. + /// + /// In en, this message translates to: + /// **'Arrived Date'** + String get arrivedDate; + + /// No description provided for @closedDate. + /// + /// In en, this message translates to: + /// **'Closed Date'** + String get closedDate; + + /// No description provided for @transferType. + /// + /// In en, this message translates to: + /// **'Transfer Type'** + String get transferType; + + /// No description provided for @since. + /// + /// In en, this message translates to: + /// **'Since'** + String get since; + + /// No description provided for @rejectionDetails. + /// + /// In en, this message translates to: + /// **'Rejection Details'** + String get rejectionDetails; + + /// No description provided for @part. + /// + /// In en, this message translates to: + /// **'Part'** + String get part; + + /// No description provided for @creationDate. + /// + /// In en, this message translates to: + /// **'Creation Date'** + String get creationDate; + + /// No description provided for @createdBy. + /// + /// In en, this message translates to: + /// **'Created BY'** + String get createdBy; + + /// No description provided for @trNumber. + /// + /// In en, this message translates to: + /// **'TR Number'** + String get trNumber; + + /// No description provided for @workOrderDetails. + /// + /// In en, this message translates to: + /// **'Work Order Details'** + String get workOrderDetails; + + /// No description provided for @woNumber. + /// + /// In en, this message translates to: + /// **'WO Number'** + String get woNumber; + + /// No description provided for @contactInfo. + /// + /// In en, this message translates to: + /// **'Contact Info'** + String get contactInfo; + + /// No description provided for @destinationBuilding. + /// + /// In en, this message translates to: + /// **'Destination Building'** + String get destinationBuilding; + + /// No description provided for @destinationFloor. + /// + /// In en, this message translates to: + /// **'Destination Floor'** + String get destinationFloor; + + /// No description provided for @destinationDepartment. + /// + /// In en, this message translates to: + /// **'Destination Department'** + String get destinationDepartment; +} + +class _AppLocalizationsDelegate + extends LocalizationsDelegate { + const _AppLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture(lookupAppLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => + ['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.'); +} diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart new file mode 100644 index 00000000..9f5681b3 --- /dev/null +++ b/lib/l10n/app_localizations_ar.dart @@ -0,0 +1,1705 @@ +// 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 serverErrorMessage => 'الخدمة غير متاحة حاليا'; + + @override + String get failedRequestMessage => 'فشل إكمال الطلب'; + + @override + String get successfulRequestMessage => 'تم إكمال الطلب بنجاح'; + + @override + String get commentAdded => 'تم إضافة التعليق'; + + @override + String get requestLockMessage => 'انتظر حتى إكمال الطلب'; + + @override + String get cancel => 'إلغاء'; + + @override + String get confirm => 'تاكيد'; + + @override + String get notArrived => 'لم يصل'; + + @override + String get arrived => 'وصل'; + + @override + String get done => 'تم'; + + @override + String get exit => 'إغلاق'; + + @override + String get refreshQrCode => 'تحديث رمز الاستجابة السريعة'; + + @override + String get exitAlert => 'هل انت متاكد من رغبتك في إغلاق التطبيق؟'; + + @override + String get assetRetiredPendingOpManagementApproval => + 'تم تقاعد الأصل. في انتظار موافقة إدارة العمليات'; + + @override + String get assetRetirementRequestSubmittedSuccessfully => + 'تم تقديم طلب تقاعد الأصل بنجاح'; + + @override + String get youMarkedThisIssueAsFixedWaitingForTheRequesterToConfirm => + 'لقد قمت بوضع علامة على هذه المشكلة على أنها تم إصلاحها. في انتظار تأكيد مقدم الطلب'; + + @override + String get signOut => 'تسجيل الخروج'; + + @override + String get logoutAlert => 'هل انت متاكد من رغبتك في تسجيل الخروج؟'; + + @override + String get language => 'اللغة'; + + @override + String get name => 'الاسم'; + + @override + String get email => 'البريد الالكتروني'; + + @override + String get retirementType => 'نوع التقاعد'; + + @override + String get assetSituation => 'حالة الأصول'; + + @override + String get phoneNumber => 'رقم الهاتف'; + + @override + String get password => 'كلمة السر'; + + @override + String get confirmPassword => 'تاكيد كلمة المرور'; + + @override + String get skipForLater => 'تخطي لاحقًا'; + + @override + String get signIn => 'تسجيل الدخول'; + + @override + String get letSignInToAccount => 'لنقم بتسجيل الدخول إلى حسابك'; + + @override + String get signUp => 'انشاء حساب'; + + @override + String get accept => 'قبول'; + + @override + String get reject => 'رفض'; + + @override + String get forgetPassword => 'نسيت كلمة المرور'; + + @override + String get acceptTermsAndConditions => 'موافقة علي الشروط والاحكام'; + + @override + String get emailValidateMessage => 'البريد الالكتروني غير صحيح'; + + @override + String get nameValidateMessage => 'الاسم مطلوب'; + + @override + String get passwordValidateMessage => 'علي الاقل استخدم 6 حروف او ارقام'; + + @override + String get confirmPasswordValidateMessage => + 'كلمة المرور و تاكيد كلمة المرور غير متطابقان'; + + @override + String get phoneNumberValidateMessage => 'رقم الهاتف غير صالح'; + + @override + String get termsAndConditionsValidateMessage => + 'موافقة علي الشروط والاحكام مطاوبة'; + + @override + String get update => 'تحديث'; + + @override + String get step => 'خطوة'; + + @override + String get forgetPasswordWithMark => 'نسيت كلمة المرور؟'; + + @override + String get showPassword => 'اظهار كلمة المرور'; + + @override + String get wrongEmailOrPassword => + 'البريد الالكتروني او كلمة المرور غير صحيح'; + + @override + String get emailExist => 'البريد الالكتروني موجود بالفعل'; + + @override + String get phoneNumberExist => 'رقم الهاتف موجود بالفعل'; + + @override + String get next => 'التالي'; + + @override + String get back => 'السابق'; + + @override + String get search => 'بحث'; + + @override + String get searchByName => 'بحث بالاسم'; + + @override + String get searchByAssetNumber => 'بحث برقم الجهاز'; + + @override + String get address => 'العنوان'; + + @override + String get addressNotFound => 'لا يوجد عنوان'; + + @override + String get addressValidateMessage => 'العنوان مطلوب'; + + @override + String get dataNotFound => 'لا يوجد تاريخ'; + + @override + String get description => 'الوصف'; + + @override + String get descriptionNotFound => 'لا يوجد وصف'; + + @override + String get descriptionValidateMessage => 'الوصف مطلوب'; + + @override + String get edit => 'تعدل'; + + @override + String get emailNotFound => 'لا يوجد بريد الكتروني'; + + @override + String get from => 'من'; + + @override + String get endDateTimeMustBeGreaterThanStartDate => + 'يجب أن يكون تاريخ ووقت الانتهاء أكبر من تاريخ البدء'; + + @override + String get signaturesAreRequired => 'التوقيعات مطلوبة'; + + @override + String get to => 'إلى'; + + @override + String get linkNotFound => 'لا يوجد رابط'; + + @override + String get nameNotFound => 'لا يوجد إسم'; + + @override + String get phoneNumberNotFound => 'لا يوجد رقم هاتف'; + + @override + String get title => 'عنوان'; + + @override + String get titleNotFound => 'لا يوجد عنوان'; + + @override + String get titleValidateMessage => 'العنوان مطلوب'; + + @override + String get urlNotFound => 'لا يوجد رابط'; + + @override + String get date => 'تاريخ'; + + @override + String get status => 'الحالة'; + + @override + String get code => 'كود'; + + @override + String get serialNumber => 'رقم تسلسلي'; + + @override + String get add => 'أضف'; + + @override + String get brand => 'ماركة'; + + @override + String get clearSearch => 'تنظيف البحث'; + + @override + String get closed => 'غلق'; + + @override + String get close => 'يغلق'; + + @override + String get scanOrPickAsset => 'امسح أو اختر الأصل'; + + @override + String get reScanOrPickAsset => 'أعد المسح أو اختر الأصل'; + + @override + String get camera => 'الكاميرا'; + + @override + String get gallery => 'المعرض'; + + @override + String get files => 'الملفات'; + + @override + String get attachFiles => 'إرفاق الملفات'; + + @override + String get activityStatus => 'حالة النشاط'; + + @override + String get takeAction => 'اتخذ إجراء'; + + @override + String get pleaseConfirmTheIssueHasBeenResolved => + 'يرجى تأكيد أن المشكلة قد تم حلها'; + + @override + String get nurseAcknowledge => 'أقر بإكمال أمر العمل هذا'; + + @override + String get hours => 'ساعات'; + + @override + String get internal => 'داخلي'; + + @override + String get external => 'خارجي'; + + @override + String get addInternalActivity => 'إضافة نشاط داخلي'; + + @override + String get addExternalActivity => 'إضافة نشاط خارجي'; + + @override + String get remotely => 'عن بُعد'; + + @override + String get workshop => 'ورشة'; + + @override + String get abroad => 'خارج البلاد'; + + @override + String get create => 'انشاء'; + + @override + String get createServiceRequest => 'انشاء طلب خدمة'; + + @override + String get delete => 'مسح'; + + @override + String get details => 'تفاصيل'; + + @override + String get device => 'الجهاز'; + + @override + String get deviceArName => 'اسم الجهاز بعربي'; + + @override + String get sparePartDetails => 'تفاصيل قطع الغيار'; + + @override + String get attachQuotation => 'إرفاق العرض'; + + @override + String get addSparePartActivity => 'إضافة نشاط قطع الغيار'; + + @override + String get addActivity => 'إضافة نشاط'; + + @override + String get updateSparePartActivity => 'تحديث نشاط قطع غيار'; + + @override + String get deviceName => 'اسم الجهاز'; + + @override + String get deviceImages => 'صور الجهاز'; + + @override + String get deviceModel => 'مركة الجهاز'; + + @override + String get doYouWantToCreateAnotherSparePartRequest => + 'هل تريد إنشاء طلب قطعة غيار آخر؟'; + + @override + String get sparePartActivitySuccess => 'تم إنشاء نشاط طلب قطعة الغيار بنجاح'; + + @override + String get deviceRequired => 'الجهاز مطلوب'; + + @override + String get deviceSN => 'رقم تسلسلي للجهاز'; + + @override + String get engineerName => 'اسم المهندس'; + + @override + String get engineerPhone => 'رقم المهندس'; + + @override + String get facebook => 'فيسبوك'; + + @override + String get faultDescription => 'تفاصيل الخطأ'; + + @override + String get general => 'تفاصيل العامة'; + + @override + String get hospital => 'العميل'; + + @override + String get hospitalRequired => 'العميل مطلوبة'; + + @override + String get hotLine => 'الخط ساخن'; + + @override + String get jobSheetNumber => 'رقم ورقة العمل'; + + @override + String get linkedIn => 'لينكد إن'; + + @override + String get maintenanceIssue => 'مشكلة الصيانة'; + + @override + String get maintenanceIssueRequired => 'مطلوب مسألة صيانة'; + + @override + String get maxImagesNumberIs5 => 'أقصى عدد للصورة 5'; + + @override + String get model => 'الطراز'; + + @override + String get modelNo => 'رقم النموذج'; + + @override + String get modelName => 'اسم النموذج'; + + @override + String get nameExist => 'الاسم موجود'; + + @override + String get newServiceRequest => 'طلب خدمة جديدة'; + + @override + String get newWord => 'جديد'; + + @override + String get noDateFound => 'لم يتم العثور على تاريخ'; + + @override + String get noDeviceFound => 'لم يتم العثور على جهاز'; + + @override + String get noHospitalFound => 'لا يوجد عميل'; + + @override + String get noModelFound => 'لم يتم العثور على نموذج'; + + @override + String get noServiceRequestFound => 'لم يتم العثور على طلب خدمة'; + + @override + String get noSnFound => 'لم يتم العثور على رقم تسلسلي'; + + @override + String get notifications => 'إشعارات'; + + @override + String get notificationsNotFound => 'لم يتم العثور على إشعارات'; + + @override + String get noUniteFound => 'لا توجد اقسام'; + + @override + String get ourWebsite => 'موقعنا'; + + @override + String get pickDevice => 'اختر الجهاز'; + + @override + String get pickHospital => 'اختر العميل'; + + @override + String get pickUnite => 'اختر القسم'; + + @override + String get policy => 'سياسة'; + + @override + String get fixed => 'تم الإصلاح'; + + @override + String get reason1 => 'لم يؤكد المهندس موعد الزيارة قبل ساعتين من وقت الطلب'; + + @override + String get reason2 => 'يقوم المهندس بتغيير موعد الزيارة دون التنسيق معي'; + + @override + String get reason3 => 'لم يحضر المهندس في التاريخ / الوقت'; + + @override + String get reason4 => + 'لا يمكنني الوصول إلى المهندس عن طريق الهاتف أو الرسائل القصيرة'; + + @override + String get reason5 => 'هناك تأخير في إحضار قطع الغيار'; + + @override + String get repaired => 'تم الاصلاح'; + + @override + String get repeated => 'معاد'; + + @override + String get reportIssue => 'الإبلاغ عن مشكلة'; + + @override + String get requestInformation => 'معلومات طلب'; + + @override + String get searchBySn => 'البحث بالرقم التسلسلي'; + + @override + String get serviceRequestInformation => 'معلومات طلب الخدمة'; + + @override + String get serviceRequests => 'طلبات الخدمة'; + + @override + String get correctiveMaintenance => 'الصيانة التصحيحية'; + + @override + String get shareAntherIssue => 'مشاركة قضية أخرى'; + + @override + String get shareApp => 'مشاركة التطبيق'; + + @override + String get sn => 'الرقم التسلسلي'; + + @override + String get submit => 'إرسال'; + + @override + String get trackServiceRequest => 'تتبع طلبات الخدمة'; + + @override + String get twitter => 'تويتر'; + + @override + String get underRepair => 'تحت الاصلاح'; + + @override + String get unite => 'قسم'; + + @override + String get uniteRequired => 'القسم مطلوب'; + + @override + String get visitDate => 'تاريخ الزيارة'; + + @override + String get returnToService => 'Return to service'; + + @override + String get whatsApp => 'واتساب'; + + @override + String get workPerformed => 'العمل انجز'; + + @override + String get actualDate => 'تاريخ الفعلي'; + + @override + String get expectDate => 'التاريخ المتوقع'; + + @override + String get images => 'الصور'; + + @override + String get imagesRequired => 'الصور مطلوبة'; + + @override + String get noSerialNumberFound => 'لا يوجد رقم تسلسلي'; + + @override + String get notYet => 'ليس بعد'; + + @override + String get noVisitsFound => 'لا توجد زيارات'; + + @override + String get onHold => 'معلق'; + + @override + String get pickFromCamera => 'الالتقاط من الكاميرا'; + + @override + String get pickFromGallery => 'الاختيار من معرض صور'; + + @override + String get preventiveMaintenance => 'الصيانة الوقائية'; + + @override + String get preventiveMaintenanceUpdatedSuccessfully => + 'تم تحديث الصيانة الوقائية بنجاح'; + + @override + String get regularVisits => 'زيارات منتظمة'; + + @override + String get regularVisitsUpdatedSuccessfully => + 'تم تحديث الزيارات المنتظمة بنجاح'; + + @override + String get requiredStatus => 'الحالة المطلوبة'; + + @override + String get updatePreventiveMaintenance => 'تحديث الصيانة الوقائية'; + + @override + String get updateRegularVisits => 'تحديث الزيارات المنتظمة'; + + @override + String get updateVisitsGroup => 'تحديث مجموعة الزيارات'; + + @override + String get updatingDots => 'تحديث ...'; + + @override + String get expectedVisitDate => 'تاريخ الزيارة القادم'; + + @override + String get actualVisitDate => 'تاريخ الزيارة الفعلي'; + + @override + String get visitInformation => 'معلومات الزيارة'; + + @override + String get travelingHours => 'ساعات السفر'; + + @override + String get workingHours => 'ساعات العمل'; + + @override + String get contactStatus => 'تخصص'; + + @override + String get image => 'صورة'; + + @override + String get pickImage => 'اختر صورة'; + + @override + String get requiredImage => 'الصورة مطلوبة'; + + @override + String get taskStatus => 'حالة الطلب'; + + @override + String get activationAlert => + 'الحساب قيد المراجعة يرجى الانتظار حتى يتم تفعيله'; + + @override + String get attachImage => 'إرفاق صورة'; + + @override + String get callLastSituation => 'اخر موقف للطلب'; + + @override + String get customer => 'العميل'; + + @override + String get editServiceReport => 'تعديل التقرير الخدمة'; + + @override + String get invoiceCode => 'كود الفتورة'; + + @override + String get invoiceNumber => 'رقم الفتورة'; + + @override + String get newServiceReport => 'تقرير خدمة جديد'; + + @override + String get number => 'رقم'; + + @override + String get operatingHours => 'ساعات العمل'; + + @override + String get partName => 'اسم القطعة'; + + @override + String get quantity => 'الكمية'; + + @override + String get installedQty => 'الكمية المثبتة'; + + @override + String get returnQty => 'كمية العودة'; + + @override + String get oracleNo => 'رقم أوراكل'; + + @override + String get reasons => 'الاسباب'; + + @override + String get addSparePartActionHeading => 'هل تريد إنشاء طلب قطع غيار آخر؟'; + + @override + String get reason => 'السبب'; + + @override + String get reportStatus => 'حالة التقرير'; + + @override + String get reportType => 'نوع التقرير'; + + @override + String get callId => 'رقم الطلب'; + + @override + String get requiredWord => 'مطلوب'; + + @override + String get assetType => 'نوع الاصل'; + + @override + String get workPreformed => 'العمل المنجز'; + + @override + String get orderWorkNumber => 'رقم طلب العمل'; + + @override + String get assignedEmployee => 'الموظف المعين'; + + @override + String get assetSN => 'رقم تسلسلي للاصل '; + + @override + String get assetName => 'اسم الاصل'; + + @override + String get assetNumber => 'رقم الاصل'; + + @override + String get assetDetail => 'تفاصيل الأصل'; + + @override + String get requestDetail => 'تفاصيل الطلب'; + + @override + String get site => 'الموقع'; + + @override + String get maintenanceSituation => 'موقع الصيانه'; + + @override + String get currentSituation => 'الموقع الحالي'; + + @override + String get alert => 'تنبيه'; + + @override + String get duplicateAlert => 'تنبيه التكرار'; + + @override + String get duplicateAlertMessage => 'هل أنت متأكد أنك تريد تكرار الطلب؟'; + + @override + String get duplicateRequest => 'تكرار الطلب'; + + @override + String get comment => 'تعليق'; + + @override + String get updateServiceRequest => 'تعديل طلب الخدمة'; + + @override + String get repairLocation => 'موقع الإصلاح'; + + @override + String get travelingExpense => 'مصاريف التنقل'; + + @override + String get startDate => 'وقت البدء'; + + @override + String get startTime => 'وقت البدء'; + + @override + String get endTime => 'وقت الانتهاء'; + + @override + String get no => 'لا'; + + @override + String get fillDetails => 'يرجى ملء التفاصيل أدناه'; + + @override + String get yes => 'نعم'; + + @override + String get requestedQuantity => 'الكمية المطلوبة'; + + @override + String get deliveredQuantity => 'الكمية المسلّمة'; + + @override + String get endDate => 'وقت الانتهاء'; + + @override + String get destinationSite => 'موقع الوجهة'; + + @override + String get building => 'المبنى'; + + @override + String get floor => 'الطابق'; + + @override + String get department => 'القسم'; + + @override + String get room => 'غرفه'; + + @override + String get actions => 'اجراءات'; + + @override + String get deviceFiles => 'ملفات الجهاز'; + + @override + String get pickFromFiles => 'اختر من الملفات'; + + @override + String get requiredFile => 'الملف مطلوب'; + + @override + String get pickFile => 'اختر ملف'; + + @override + String get login => 'تسجيل الدخول'; + + @override + String get enterCredsToLogin => 'أدخل بياناتك الخاصة لتسجيل الدخول'; + + @override + String get signInToYour => 'Sign in to your'; + + @override + String get account => 'الحساب'; + + @override + String get forgotPassword => 'نسيت كلمة السر؟'; + + @override + String get username => 'اسم المستخدم'; + + @override + String get requiredField => 'الحقل مطلوب'; + + @override + String get passwordLengthMessage => + 'يجب أن تتكون كلمة السر من 6 خانات على الأقل'; + + @override + String get overview => 'نظرة عامة'; + + @override + String get request => 'طلب'; + + @override + String get assets => 'الأصول'; + + @override + String get contact => 'اتصال'; + + @override + String get welcome => 'مرحبا،'; + + @override + String get openWhatsapp => 'الإنتقال الى الواتس اب'; + + @override + String get timeAndDuration => 'الوقت والمدة'; + + @override + String get assetsCondition => 'حالة الأصول'; + + @override + String get attachmentsAcknowledge => 'إقرار & المرفقات'; + + @override + String get up_and_running => 'قيد التشغيل'; + + @override + String get partially_down => 'معطل جزئيًا'; + + @override + String get needAVisit => 'بحاجة إلى زيارة'; + + @override + String get fixedRemotely => 'تم الإصلاح عن بُعد'; + + @override + String get iHaveArrived => 'لقد وصلت'; + + @override + String get updateAssetDetails => 'تحديث تفاصيل الأصل'; + + @override + String get equipment_status => 'حالة المعدات'; + + @override + String get failureReason => 'سبب الفشل'; + + @override + String get visitDateAndTime => 'تاريخ ووقت الزيارة'; + + @override + String get markAsFixed => 'تحديد كإصلاح'; + + @override + String get fully_down => 'معطل تمامًا'; + + @override + String get solutions => 'الحلول'; + + @override + String get callUs => 'إتصل بنا'; + + @override + String get liveChat => 'محادثة حية'; + + @override + String get feedBack => 'تعليقات'; + + @override + String get gasRefillRequest => 'طلب إعادة تعبئة غاز'; + + @override + String get transferRequest => 'طلب نقل'; + + @override + String get serviceRequest => 'طلب خدمة'; + + @override + String get newGasRefillRequest => 'طلب إعادة تعبئة غاز جديد'; + + @override + String get newTransferRequest => 'طلب نقل جديد'; + + @override + String get submitRequest => 'تأكيد الطلب'; + + @override + String get select => 'إختر'; + + @override + String get gasType => 'نوع الغاز'; + + @override + String get cylinderType => 'نوع الأسطوانة'; + + @override + String get cylinderSize => 'حجم الأسطوانة'; + + @override + String get httpError => 'خطأ فشل الطلب'; + + @override + String get tryAgain => 'أعد المحاولة'; + + @override + String get onlyNumbers => 'يسمح بإدخال الأرقام فقط'; + + @override + String get youHaveToSelect => 'يجب عليك إختيار'; + + @override + String get youHaveToAddRequests => 'يجب إضافة طلبات'; + + @override + String get createdSuccessfully => 'إكتمل الطلب بنجاح'; + + @override + String get failedToCompleteRequest => 'فشل إتمام الطلب'; + + @override + String get assetNo => 'رقم الجهاز'; + + @override + String get manufacture => 'صناعة'; + + @override + String get serialNo => 'رقم التسلسلي'; + + @override + String get pickAsset => 'إختر جهاز'; + + @override + String get filter => 'تصفية'; + + @override + String get firstAction => 'الإجراء الأول'; + + @override + String get rejectionReason => 'سبب الرفض'; + + @override + String get workOrder => 'طلب عمل'; + + @override + String get cmDetails => 'تفاصيل الصيانة التصحيحية'; + + @override + String get assetInformation => 'معلومات الأصول'; + + @override + String get callDetails => 'تفاصيل الاتصال'; + + @override + String get assetStatus => 'حالة الأصول'; + + @override + String get workOrders => 'طلبات عمل'; + + @override + String get viewWorkOrder => 'عرض جميع طلبات العمل'; + + @override + String get createWorkOrder => 'إنشاء طلب عمل'; + + @override + String get serviceDetails => 'تفاصيل الخدمات'; + + @override + String get setVisitDate => 'تحديد تاريخ الزيارة'; + + @override + String get verifyArrival => 'التحقق من الوصول'; + + @override + String get selectWorkOrder => 'اختر أمر العمل'; + + @override + String get scanQr => 'مسح رمز QR'; + + @override + String get scanQrDetail => 'امسح رمز الاستجابة السريعة للجهاز'; + + @override + String get askRequester => 'اطلب من مقدم الطلب التحقق'; + + @override + String get askRequesterDetail => + 'اطلب من مقدم الطلب التحقق من وصولك من خلال تطبيق Atoms.'; + + @override + String get askOtp => 'اطلب رمز OTP من مقدم الطلب'; + + @override + String get askOtpDetail => 'اطلب رمز OTP من مقدم الطلب للتحقق من وصولك'; + + @override + String get takeDevicePhoto => 'التقط صورة للجهاز'; + + @override + String get takeDevicePhotoDetail => 'التقط صورة الجهاز من الموقع'; + + @override + String get lastSituationStatus => 'حالة الوضع الأخير'; + + @override + String get priority => 'أولوية الطلب'; + + @override + String get equipmentStatus => 'حالة المعدات'; + + @override + String get requestSparePart => 'طلب قطعة غيار'; + + @override + String get callResponse => 'استجابة الاتصال'; + + @override + String get selectAction => 'اختر إجراء'; + + @override + String get requestSparePartForYourAsset => 'اطلب قطعة غيار لأصلك'; + + @override + String get addNewActivity => 'أضف نشاطًا جديدًا'; + + @override + String get addNewActivityToYourWorkOrder => + 'أضف نشاطًا جديدًا إلى أمر العمل الخاص بك'; + + @override + String get markAsCompleted => 'وضع علامة كمكتمل'; + + @override + String get cmNumber => 'رقم الصيانة التصحيحية'; + + @override + String get jopStatus => 'حالة الوظيفة'; + + @override + String get callComments => 'تعليقات الطلب'; + + @override + String get comments => 'تعليقات'; + + @override + String get recordVoice => 'تسجيل صوت'; + + @override + String get gasRefillDetails => 'تفاصيل اعادة تعبئة غاز'; + + @override + String get updateRequest => 'تعديل الطلب'; + + @override + String get gasRefill => 'اعادة تعبئة غاز'; + + @override + String get assetDetails => 'تفاصيل الجهاز'; + + @override + String get receiverName => 'اسم المستلم'; + + @override + String get receiverDetails => 'تفاصيل المستقبل'; + + @override + String get requestedThrough => 'الطلب عبر'; + + @override + String get typeOfRequest => 'نوع الطلب'; + + @override + String get deviceTransfer => 'نقل جهاز '; + + @override + String get deviceTransferRequest => 'طلب نقل جهاز '; + + @override + String get deviceTransferDetails => 'تفاصيل نقل جهاز '; + + @override + String get transferDetails => 'تفاصيل النقل'; + + @override + String get senderDetails => 'تفاصيل المرسل'; + + @override + String get searchBy => 'إبحث بـ'; + + @override + String get searchByDesc => 'إبحث بأي من المعايير التالية'; + + @override + String get location => 'الموقع'; + + @override + String get supplier => 'المزود'; + + @override + String get supplierEngineer => 'Supplier Engineer'; + + @override + String get md => 'تعريف النموذج'; + + @override + String get snNumber => 'الرقم التسلسلي'; + + @override + String get snNo => 'الرقم التسلسلي'; + + @override + String get oracleCode => 'رمز اوراكل'; + + @override + String get byDepartment => 'حسب القسم'; + + @override + String get bySite => 'حسب الموقع'; + + @override + String get applyFilter => 'تصفية'; + + @override + String get pmDateRange => 'النطاق الزمني للصيانة الوقائية'; + + @override + String get pickDate => 'إختر تاريخ'; + + @override + String get verify => 'تحقق'; + + @override + String get resend => 'إعادة الإرسال'; + + @override + String get resendIn => 'إعادة الإرسال خلال'; + + @override + String get havingTroubleReceivingOtp => 'تواجه صعوبة في استلام رمز التحقق؟'; + + @override + String get askOtpFromRequester => 'طلب رمز التحقق من مقدم الطلب'; + + @override + String get checkOutOtherMethods => 'اطلع على طرق أخرى.'; + + @override + String get otpSentToNumber => 'تم إرسال رمز التحقق إلى الرقم'; + + @override + String get requestDetails => 'تفاصيل الطلب'; + + @override + String get historyLogs => 'سجلات التاريخ'; + + @override + String get pickTime => 'اختر الوقت'; + + @override + String get readCompleteThread => 'اقرأ الموضوع بالكامل'; + + @override + String get pickADate => 'إختر تاريخ'; + + @override + String get firstActionStatus => 'حالة الإجراء الأول'; + + @override + String get loanAvailability => 'توافر القرض'; + + @override + String get save => 'حفظ'; + + @override + String get serviceType => 'نوع الخدمة'; + + @override + String get assistantEmployee => 'موظف مساعد'; + + @override + String get assignAssistant => 'تعيين مساعد'; + + @override + String get partNo => 'الجزء رقم'; + + @override + String get partNumber => 'الجزء رقم'; + + @override + String get engSign => 'توقيع المهندس'; + + @override + String get requesterName => 'اسم الطالب'; + + @override + String get updateWorkOrder => 'تعديل طلب العمل'; + + @override + String get createPreventiveMaintenanceRequest => 'إنشاء طلب صيانة وقائية'; + + @override + String get createNewRequest => 'إنشاء طلب جديد'; + + @override + String get calendar => 'التقويم'; + + @override + String get helpCenter => 'مركز المساعدة'; + + @override + String get rateUs => 'قيمنا'; + + @override + String get settings => ' الاعدادات'; + + @override + String get reportBg => 'ابلاغ عن خطا'; + + @override + String get whatsNew => 'ماهو الجديد'; + + @override + String get logout => 'خروج'; + + @override + String get arabic => 'عربي'; + + @override + String get lightTheme => 'وضع النهاري'; + + @override + String get myProfile => 'الملف الشخصي'; + + @override + String get viewDetails => 'عرض التفاصيل'; + + @override + String get requests => 'طلبات'; + + @override + String get highPriority => 'اولوية عالية'; + + @override + String get newRequests => ' طلبات\nجديدة'; + + @override + String get completed => 'مكتملة'; + + @override + String get overdue => 'Overdue'; + + @override + String get lowPriority => 'اولوية منخفضة'; + + @override + String get newR => 'New'; + + @override + String get inProgress => 'قيد التنفيذ'; + + @override + String get open => 'مفتوح'; + + @override + String get requestType => 'نوع الطلب'; + + @override + String get requestNo => 'رقم الطلب'; + + @override + String get assignedTo => 'تعيين الى'; + + @override + String get waitingForQuotation => 'في انتظار السؤال'; + + @override + String get gasRequest => 'طلب غاز'; + + @override + String get viewComments => 'عرض التعليقات'; + + @override + String get commentHere => 'علق هنا'; + + @override + String get nurseSignature => 'توقيع الممرض'; + + @override + String get ppmVisit => 'موعد زيارة الصيانة الوقائية'; + + @override + String get ppmRequest => 'طلب الصيانة الوقائية'; + + @override + String get timer => 'مؤقت'; + + @override + String get deviceStatus => 'حالة الجهاز'; + + @override + String get addAsset => 'اضافة جهاز'; + + @override + String get calibrationDate => 'موعد المعايرة'; + + @override + String get asset => 'جهاز'; + + @override + String get addItem => 'اضافة عنصر'; + + @override + String get item => 'عنصر'; + + @override + String get measuredValue => 'القيمة المقاسه'; + + @override + String get sureExit => ' هل انت متاكد من الخروج؟'; + + @override + String get daily => 'يومي'; + + @override + String get weekly => 'اسبوعي'; + + @override + String get monthly => 'شهري'; + + @override + String get confirmEngineerArrival => 'تأكيد وصول المهندس'; + + @override + String get confirmingEngineerArrivalAction => + 'من خلال هذا الإجراء، أنت تؤكد وصول المهندس'; + + @override + String get myShift => 'ورديتي'; + + @override + String get myTeamRequest => 'طلب فريقي'; + + @override + String get sunToThurs => 'الاحد الى الخميس'; + + @override + String get requestGasRefill => 'طلب اعادة تعبئة غاز'; + + @override + String get trackGasRefill => 'تتبع طلبات اعادة تعبئة غاز'; + + @override + String get trackAssetTransfer => 'تتبع نقل اجهزة'; + + @override + String get total => 'مجموع'; + + @override + String get noDataFound => 'No Data Found'; + + @override + String get allRequests => 'كل الطلبات'; + + @override + String get allWorkOrder => 'جميع أوامر العمل'; + + @override + String get requestStatus => 'حالة الطلب'; + + @override + String get createSubWorkOrder => 'إنشاء أمر عمل فرعي'; + + @override + String get mrNumber => 'MR Number'; + + @override + String get vendorEng => 'المهندس المزود'; + + @override + String get vendorName => 'اسم المزود'; + + @override + String get reset => 'اعادة تعيين'; + + @override + String get solution => 'الحل'; + + @override + String get technicalComment => 'تعليق تقني'; + + @override + String get recentActivities => 'الأنشطة الحالية'; + + @override + String get activities => 'الأنشطة'; + + @override + String get provideQrCodeToEngineer => + 'قدم رمز الاستجابة السريعة أدناه للمهندس للتحقق من وصوله'; + + @override + String get qrCode => 'رمز الاستجابة السريعة'; + + @override + String get createNewActivity => 'إنشاء نشاط جديد'; + + @override + String get selectActivityType => 'اختر نوع النشاط'; + + @override + String get sparePartRequest => 'طلب قطع غيار'; + + @override + String get sparePartRequestDetail => + 'اطلب من مقدم الطلب التحقق من وصولك من خلال تطبيق Atoms.'; + + @override + String get maintenanceRequest => 'طلب صيانة'; + + @override + String get assetToBeRetired => 'الأصل الذي سيتم إخراجه من الخدمة'; + + @override + String get problemDesc => 'وصف المشكلة'; + + @override + String get source => 'المصدر'; + + @override + String get costCodeName => 'اسم رمز التكلفة'; + + @override + String get installationDate => 'تاريخ التثبيت'; + + @override + String get nextPmDate => 'تاريخ الصيانة الوقائية التالي'; + + @override + String get lastPmDate => 'موعد الزيارة الوقائية الأخيرة'; + + @override + String get assetScan => 'مسح الجهاز'; + + @override + String get pickManually => 'اختر يدويا'; + + @override + String get doYouWantToSetReminder => 'هل تريد تعيين تذكير؟'; + + @override + String get youCanSetTheReminderInAlarmToRemindYouBeforeVisit => + 'يمكنك تعيين التذكير في المنبه لتذكيرك قبل الزيارة. الرجاء اختيار الوقت أدناه'; + + @override + String get setReminder => 'تعيين التذكير'; + + @override + String get searchAsset => 'ابحث عن جهاز'; + + @override + String get newPassword => 'كلمة المرور الجديدة'; + + @override + String get resetPassword => 'إعادة تعيين كلمة المرور'; + + @override + String get otpVerification => 'التحقق من OTP'; + + @override + String get pleaseEnterTheOtpSentTo => 'يرجى إدخال OTP المرسل إلى'; + + @override + String get pleaseEnterTheNewPassword => 'يرجى إدخال كلمة المرور الجديدة'; + + @override + String get markAttendance => 'تسجيل الحضور'; + + @override + String get selectMethodToMarkAttendance => 'اختر الطريقة لتسجيل الحضور'; + + @override + String get employeeIdIsRequired => 'رقم الموظف مطلوب'; + + @override + String get successful => 'Successful'; + + @override + String get youHaveSuccessfullyMarkedYourAttendance => + 'لقد قمت بتسجيل حضورك بنجاح'; + + @override + String get swipeTypeName => 'اسم نوع السحب'; + + @override + String get userName => 'اسم المستخدم'; + + @override + String get siteName => 'اسم الموقع'; + + @override + String get pointName => 'اسم النقطة'; + + @override + String get checkIn => 'تسجيل الدخول'; + + @override + String get pmWo => 'أمر العمل الوقائي'; + + @override + String get recurrentWo => 'أمر العمل المتكرر'; + + @override + String get taskNo => 'رقم المهمة'; + + @override + String get assignEngineer => 'تعيين مهندس'; + + @override + String get scheduledDate => 'التاريخ المجدول'; + + @override + String get complete => 'اكتمل'; + + @override + String get createdDate => 'تاريخ الإنشاء'; + + @override + String get employeeId => 'رقم الموظف'; + + @override + String get extensionNo => 'رقم التمديد'; + + @override + String get fail => 'فشل'; + + @override + String get pass => 'نجاح'; + + @override + String get pmPlanNo => 'رقم خطة الصيانة الوقائية'; + + @override + String get executionTimeFrame => 'إطار زمني للتنفيذ'; + + @override + String get pmTestResult => 'نتيجة اختبار الصيانة الوقائية'; + + @override + String get actualVisit => 'الزيارة الفعلية'; + + @override + String get totalWorkingTime => 'إجمالي وقت العمل'; + + @override + String get typeOfPm => 'نوع الصيانة الوقائية'; + + @override + String get attachments => 'المرفقات'; + + @override + String get supplierName => 'اسم المورد'; + + @override + String get externalEngineerName => 'اسم المهندس الخارجي'; + + @override + String get telephone => 'الهاتف'; + + @override + String get task => 'مهمة'; + + @override + String get taskType => 'نوع المهمة'; + + @override + String get createTaskRequest => 'إنشاء طلب مهمة'; + + @override + String get taskRequest => 'طلب مهمة'; + + @override + String get completedActions => 'الإجراءات المكتملة'; + + @override + String get impactStatus => 'حالة التأثير'; + + @override + String get installationSite => 'موقع التركيب'; + + @override + String get installationBuilding => 'مبنى التركيب'; + + @override + String get installationFloor => 'طابق التركيب'; + + @override + String get installationDepartment => 'قسم التركيب'; + + @override + String get acknowledge => 'إقرار'; + + @override + String get transferAsset => 'نقل الأصل'; + + @override + String get createAssetTransferRequest => 'إنشاء طلب نقل أصل'; + + @override + String get arrivedDate => 'تاريخ الوصول'; + + @override + String get closedDate => 'تاريخ الإغلاق'; + + @override + String get transferType => 'نوع النقل'; + + @override + String get since => 'منذ'; + + @override + String get rejectionDetails => 'تفاصيل الرفض'; + + @override + String get part => 'جزء'; + + @override + String get creationDate => 'تاريخ الإنشاء'; + + @override + String get createdBy => 'تم الإنشاء بواسطة'; + + @override + String get trNumber => 'رقم طلب النقل'; + + @override + String get workOrderDetails => 'تفاصيل أمر العمل'; + + @override + String get woNumber => 'رقم أمر العمل'; + + @override + String get contactInfo => 'معلومات الاتصال'; + + @override + String get destinationBuilding => 'مبنى الوجهة'; + + @override + String get destinationFloor => 'طابق الوجهة'; + + @override + String get destinationDepartment => 'قسم الوجهة'; +} diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart new file mode 100644 index 00000000..aedaaea0 --- /dev/null +++ b/lib/l10n/app_localizations_en.dart @@ -0,0 +1,1712 @@ +// 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 serverErrorMessage => 'Currently, Service not available'; + + @override + String get failedRequestMessage => 'Failed to complete request'; + + @override + String get successfulRequestMessage => 'Request complete successfully'; + + @override + String get commentAdded => 'Comment Added'; + + @override + String get requestLockMessage => 'Wait until your request complete'; + + @override + String get cancel => 'Cancel'; + + @override + String get confirm => 'Confirm'; + + @override + String get notArrived => 'Not Arrived'; + + @override + String get arrived => 'Arrived'; + + @override + String get done => 'Done'; + + @override + String get exit => 'Exit'; + + @override + String get refreshQrCode => 'Refresh QR Code'; + + @override + String get exitAlert => 'Are you sure you want to exit?'; + + @override + String get assetRetiredPendingOpManagementApproval => + 'Asset Retired. Pending OP Management Approval'; + + @override + String get assetRetirementRequestSubmittedSuccessfully => + 'Asset retirement request submitted successfully'; + + @override + String get youMarkedThisIssueAsFixedWaitingForTheRequesterToConfirm => + 'You marked this issue as fixed. Waiting for the requester to confirm'; + + @override + String get signOut => 'Sign Out'; + + @override + String get logoutAlert => 'Are you sure you want to Sign Out?'; + + @override + String get language => 'English'; + + @override + String get name => 'Name'; + + @override + String get email => 'Email'; + + @override + String get retirementType => 'Retirement Type'; + + @override + String get assetSituation => 'Asset Situation'; + + @override + String get phoneNumber => 'Phone Number'; + + @override + String get password => 'Password'; + + @override + String get confirmPassword => 'Confirm Password'; + + @override + String get skipForLater => 'Skip For Later'; + + @override + String get signIn => 'Sign In'; + + @override + String get letSignInToAccount => 'Let’s sign in to your account'; + + @override + String get signUp => 'Sign Up'; + + @override + String get accept => 'Accept'; + + @override + String get reject => 'Reject'; + + @override + String get forgetPassword => 'Forget Password'; + + @override + String get acceptTermsAndConditions => 'Accept Terms And Conditions'; + + @override + String get emailValidateMessage => 'Not valid email'; + + @override + String get nameValidateMessage => 'name is required'; + + @override + String get passwordValidateMessage => 'at least 6 characters or numbers'; + + @override + String get confirmPasswordValidateMessage => + 'Password and confirm password not match'; + + @override + String get phoneNumberValidateMessage => 'Not valid phone number'; + + @override + String get termsAndConditionsValidateMessage => + 'Accept terms and conditions is required'; + + @override + String get update => 'Update'; + + @override + String get step => 'Step'; + + @override + String get forgetPasswordWithMark => 'Forget Password?'; + + @override + String get showPassword => 'show password'; + + @override + String get wrongEmailOrPassword => 'Wrong email or password'; + + @override + String get emailExist => 'Email exist'; + + @override + String get phoneNumberExist => 'Phone number exist'; + + @override + String get next => 'Next'; + + @override + String get back => 'Back'; + + @override + String get search => 'Search'; + + @override + String get searchByName => 'Search by name'; + + @override + String get searchByAssetNumber => 'Search by asset number'; + + @override + String get address => 'Address'; + + @override + String get addressNotFound => 'Address not found'; + + @override + String get addressValidateMessage => 'Address validateMessage'; + + @override + String get dataNotFound => 'Data not found'; + + @override + String get description => 'Description'; + + @override + String get descriptionNotFound => 'Description not found'; + + @override + String get descriptionValidateMessage => 'Description can\'t be empty'; + + @override + String get edit => 'Edit'; + + @override + String get emailNotFound => 'Email not found'; + + @override + String get from => 'From'; + + @override + String get endDateTimeMustBeGreaterThanStartDate => + 'End Date time must be greater than start date'; + + @override + String get signaturesAreRequired => 'Signatures are required'; + + @override + String get to => 'To'; + + @override + String get linkNotFound => 'Link not found'; + + @override + String get nameNotFound => 'Name not found'; + + @override + String get phoneNumberNotFound => 'Phone number not found'; + + @override + String get title => 'Title'; + + @override + String get titleNotFound => 'Title not found'; + + @override + String get titleValidateMessage => 'Title Can\'t be empty'; + + @override + String get urlNotFound => 'URL not found'; + + @override + String get date => 'Date'; + + @override + String get status => 'Status'; + + @override + String get code => 'Code'; + + @override + String get serialNumber => 'Serial Number'; + + @override + String get add => 'Add'; + + @override + String get brand => 'manufacture'; + + @override + String get clearSearch => 'Clear Search'; + + @override + String get closed => 'Closed'; + + @override + String get close => 'Close'; + + @override + String get scanOrPickAsset => 'Scan or Pick Asset'; + + @override + String get reScanOrPickAsset => 'Re-Scan or Pick Asset'; + + @override + String get camera => 'Camera'; + + @override + String get gallery => 'Gallery'; + + @override + String get files => 'Files'; + + @override + String get attachFiles => 'Attach Files'; + + @override + String get activityStatus => 'Activity Status'; + + @override + String get takeAction => 'Take Action'; + + @override + String get pleaseConfirmTheIssueHasBeenResolved => + 'Please confirm the issue has been resolved'; + + @override + String get nurseAcknowledge => + 'I acknowledge the completion of this work order'; + + @override + String get hours => 'Hours'; + + @override + String get internal => 'Internal'; + + @override + String get external => 'External'; + + @override + String get addInternalActivity => 'Add Internal Activity'; + + @override + String get addExternalActivity => 'Add External Activity'; + + @override + String get remotely => 'Remotely'; + + @override + String get workshop => 'Workshop'; + + @override + String get abroad => 'Abroad'; + + @override + String get create => 'Create'; + + @override + String get createServiceRequest => 'Create Service Request'; + + @override + String get delete => 'Delete'; + + @override + String get details => 'Details'; + + @override + String get device => 'Device'; + + @override + String get deviceArName => 'Asset Ar Name'; + + @override + String get sparePartDetails => 'Spare Part Details'; + + @override + String get attachQuotation => 'Attach Quotation'; + + @override + String get addSparePartActivity => 'Add Spare Part Activity'; + + @override + String get addActivity => 'Add Activity'; + + @override + String get updateSparePartActivity => 'Update Spare Part Activity'; + + @override + String get deviceName => 'Asset Name'; + + @override + String get deviceImages => 'Asset Images'; + + @override + String get deviceModel => 'Asset Model'; + + @override + String get doYouWantToCreateAnotherSparePartRequest => + 'Do you want to create another spare part request?'; + + @override + String get sparePartActivitySuccess => + 'Spare Part Request activity has been created successfully'; + + @override + String get deviceRequired => 'Asset Required'; + + @override + String get deviceSN => 'Asset Serial Number'; + + @override + String get engineerName => 'Engineer Name'; + + @override + String get engineerPhone => 'Engineer Phone'; + + @override + String get facebook => 'facebook'; + + @override + String get faultDescription => 'Fault Description'; + + @override + String get general => 'General'; + + @override + String get hospital => 'Site'; + + @override + String get hospitalRequired => 'Site Required'; + + @override + String get hotLine => 'Hot Line'; + + @override + String get jobSheetNumber => 'Job Sheet Number'; + + @override + String get linkedIn => 'linkedIn'; + + @override + String get maintenanceIssue => 'Maintenance Issue'; + + @override + String get maintenanceIssueRequired => 'maintenance Issue Required'; + + @override + String get maxImagesNumberIs5 => 'Maximum Images Number Is 5'; + + @override + String get model => 'Model'; + + @override + String get modelNo => 'Model No.'; + + @override + String get modelName => 'Model Name'; + + @override + String get nameExist => 'Name Exist'; + + @override + String get newServiceRequest => 'New Service Request'; + + @override + String get newWord => 'New'; + + @override + String get noDateFound => 'No Date Found'; + + @override + String get noDeviceFound => 'No Asset Found'; + + @override + String get noHospitalFound => 'No Site Found'; + + @override + String get noModelFound => 'No Model Found'; + + @override + String get noServiceRequestFound => 'No Service Request Found'; + + @override + String get noSnFound => 'No SN Found'; + + @override + String get notifications => 'Notifications'; + + @override + String get notificationsNotFound => 'Notifications Not Found'; + + @override + String get noUniteFound => 'No Unit Found'; + + @override + String get ourWebsite => 'Our Website'; + + @override + String get pickDevice => 'Pick Asset'; + + @override + String get pickHospital => 'Pick Site'; + + @override + String get pickUnite => 'Pick Unit'; + + @override + String get policy => 'Policy'; + + @override + String get fixed => 'Fixed'; + + @override + String get reason1 => + 'The engineer didn\'t confirm visit date with 2 hours from the request time'; + + @override + String get reason2 => + 'The engineer change the visit date without coordination with me'; + + @override + String get reason3 => 'the engineer didn\'t attend on date/time'; + + @override + String get reason4 => 'I can\'t reach engineer by phone or SMS'; + + @override + String get reason5 => 'There is delay ib bringing the spare parts'; + + @override + String get repaired => 'Repaired'; + + @override + String get repeated => 'Repeated'; + + @override + String get reportIssue => 'Report a Issue'; + + @override + String get requestInformation => 'request Information'; + + @override + String get searchBySn => 'Search By Sn'; + + @override + String get serviceRequestInformation => 'Service Request Information'; + + @override + String get serviceRequests => 'Service Requests'; + + @override + String get correctiveMaintenance => 'Corrective Maintenance'; + + @override + String get shareAntherIssue => 'share Another Issue'; + + @override + String get shareApp => 'Share App'; + + @override + String get sn => 'SN'; + + @override + String get submit => 'Submit'; + + @override + String get trackServiceRequest => 'Track Service Requests'; + + @override + String get twitter => 'Twitter'; + + @override + String get underRepair => 'Under Repair'; + + @override + String get unite => 'Unit'; + + @override + String get uniteRequired => 'Unit Required'; + + @override + String get visitDate => 'Visit Date'; + + @override + String get returnToService => 'Return to service'; + + @override + String get whatsApp => 'WhatsApp'; + + @override + String get workPerformed => 'Work Performed'; + + @override + String get actualDate => 'Actual Date'; + + @override + String get expectDate => 'Expect Date'; + + @override + String get images => 'Images'; + + @override + String get imagesRequired => 'Images Required'; + + @override + String get noSerialNumberFound => 'No Serial Number Found'; + + @override + String get notYet => 'Not Yet'; + + @override + String get noVisitsFound => 'No Visits Found'; + + @override + String get onHold => 'On Hold'; + + @override + String get pickFromCamera => 'Pick From Camera'; + + @override + String get pickFromGallery => 'Pick From Gallery'; + + @override + String get preventiveMaintenance => 'Preventive Maintenance'; + + @override + String get preventiveMaintenanceUpdatedSuccessfully => + 'Preventive Maintenance Updated Successfully'; + + @override + String get regularVisits => 'Regular Visits'; + + @override + String get regularVisitsUpdatedSuccessfully => + 'Regular Visits Updated Successfully'; + + @override + String get requiredStatus => 'Required Status'; + + @override + String get updatePreventiveMaintenance => 'Update Preventive Maintenance'; + + @override + String get updateRegularVisits => 'Update Regular Visits'; + + @override + String get updateVisitsGroup => 'Update Visits Group'; + + @override + String get updatingDots => 'Updating ...'; + + @override + String get expectedVisitDate => 'Next Visit Date'; + + @override + String get actualVisitDate => 'Actual Visit Date'; + + @override + String get visitInformation => 'Visit Information'; + + @override + String get travelingHours => 'Traveling Hours'; + + @override + String get workingHours => 'Working Hours'; + + @override + String get contactStatus => 'Assigned To'; + + @override + String get image => 'Image'; + + @override + String get pickImage => 'Pick Image'; + + @override + String get requiredImage => 'Image Required'; + + @override + String get taskStatus => 'Task Status'; + + @override + String get activationAlert => + 'Account under reviewing please wait until be activated'; + + @override + String get attachImage => 'Attach Image'; + + @override + String get callLastSituation => 'Call\'s Last Situation'; + + @override + String get customer => 'Customer'; + + @override + String get editServiceReport => 'Edit Work Order'; + + @override + String get invoiceCode => 'Invoice Code'; + + @override + String get invoiceNumber => 'Invoice Number'; + + @override + String get newServiceReport => 'New Work Order'; + + @override + String get number => 'Number'; + + @override + String get operatingHours => 'Operating Hours'; + + @override + String get partName => 'Part Name'; + + @override + String get quantity => 'Quantity'; + + @override + String get installedQty => 'Installed Quantity'; + + @override + String get returnQty => 'Return Quantity'; + + @override + String get oracleNo => 'Oracle No.'; + + @override + String get reasons => 'Reasons'; + + @override + String get addSparePartActionHeading => + 'Do you want to create another spare part request?'; + + @override + String get reason => 'Reason'; + + @override + String get reportStatus => 'Report Status'; + + @override + String get reportType => 'Report Type'; + + @override + String get callId => 'Call Id'; + + @override + String get requiredWord => 'required'; + + @override + String get assetType => 'Asset Type'; + + @override + String get workPreformed => 'Work Preformed'; + + @override + String get orderWorkNumber => 'Order Work Number'; + + @override + String get assignedEmployee => 'Assigned Employee'; + + @override + String get assetSN => 'Asset S.N'; + + @override + String get assetName => 'Asset Name'; + + @override + String get assetNumber => 'Asset Number'; + + @override + String get assetDetail => 'Asset Detail'; + + @override + String get requestDetail => 'Request Details'; + + @override + String get site => 'Site'; + + @override + String get maintenanceSituation => 'Maintenance Situation'; + + @override + String get currentSituation => 'Current Situation'; + + @override + String get alert => 'Alert'; + + @override + String get duplicateAlert => 'Duplicate Alert'; + + @override + String get duplicateAlertMessage => + 'Are you sure you want to duplicate request?'; + + @override + String get duplicateRequest => 'Duplicate Request'; + + @override + String get comment => 'Comment'; + + @override + String get updateServiceRequest => 'Update Service Request'; + + @override + String get repairLocation => 'Repair Location'; + + @override + String get travelingExpense => 'Traveling Expense'; + + @override + String get startDate => 'Start Date'; + + @override + String get startTime => 'Start Time'; + + @override + String get endTime => 'End Time'; + + @override + String get no => 'No'; + + @override + String get fillDetails => 'Please fill the below details'; + + @override + String get yes => 'Yes'; + + @override + String get requestedQuantity => 'Requested Quantity'; + + @override + String get deliveredQuantity => 'Delivered Quantity'; + + @override + String get endDate => 'End Date'; + + @override + String get destinationSite => 'Destination Site'; + + @override + String get building => 'Building'; + + @override + String get floor => 'Floor'; + + @override + String get department => 'Department'; + + @override + String get room => 'Room'; + + @override + String get actions => 'Actions'; + + @override + String get deviceFiles => 'Asset Files'; + + @override + String get pickFromFiles => 'Pick From Files'; + + @override + String get requiredFile => 'File Required'; + + @override + String get pickFile => 'Pick File'; + + @override + String get login => 'Login'; + + @override + String get enterCredsToLogin => 'Enter your credential to login'; + + @override + String get signInToYour => 'Sign in to your'; + + @override + String get account => 'account'; + + @override + String get forgotPassword => 'Forgot Password?'; + + @override + String get username => 'Username'; + + @override + String get requiredField => 'Required Field'; + + @override + String get passwordLengthMessage => 'Password must has at least 6 characters'; + + @override + String get overview => 'Overview'; + + @override + String get request => 'Request'; + + @override + String get assets => 'Assets'; + + @override + String get contact => 'Contact'; + + @override + String get welcome => 'Welcome,'; + + @override + String get openWhatsapp => 'Open WhatsApp'; + + @override + String get timeAndDuration => 'Time and Duration'; + + @override + String get assetsCondition => 'Asset’s Condition'; + + @override + String get attachmentsAcknowledge => 'Attachments & Acknowledge'; + + @override + String get up_and_running => 'Up & Running'; + + @override + String get partially_down => 'Partially Down'; + + @override + String get needAVisit => 'Need a Visit'; + + @override + String get fixedRemotely => 'Fixed Remotely'; + + @override + String get iHaveArrived => 'I have arrived'; + + @override + String get updateAssetDetails => 'Update Asset Details'; + + @override + String get equipment_status => 'Equipment Status'; + + @override + String get failureReason => 'Failure Reason'; + + @override + String get visitDateAndTime => 'Visit Date & Time'; + + @override + String get markAsFixed => 'Mark as Fixed'; + + @override + String get fully_down => 'Fully Down'; + + @override + String get solutions => 'Solutions'; + + @override + String get callUs => 'Call Us'; + + @override + String get liveChat => 'Live Chat'; + + @override + String get feedBack => 'Feedback'; + + @override + String get gasRefillRequest => 'Gas Refill Request'; + + @override + String get transferRequest => 'Transfer Request'; + + @override + String get serviceRequest => 'Service Request'; + + @override + String get newGasRefillRequest => 'New Gas Refill Request'; + + @override + String get newTransferRequest => 'New Transfer Request'; + + @override + String get submitRequest => 'Submit Request'; + + @override + String get select => 'Select'; + + @override + String get gasType => 'Gas Type'; + + @override + String get cylinderType => 'Cylinder Type'; + + @override + String get cylinderSize => 'Cylinder Size'; + + @override + String get httpError => 'Error Request Failed'; + + @override + String get tryAgain => 'Try Again'; + + @override + String get onlyNumbers => 'Only Numbers Allowed'; + + @override + String get youHaveToSelect => 'You have to select'; + + @override + String get youHaveToAddRequests => 'You have to add requests'; + + @override + String get createdSuccessfully => 'Created successfully'; + + @override + String get failedToCompleteRequest => 'Failed to complete request'; + + @override + String get assetNo => 'Asset No'; + + @override + String get manufacture => 'Manufacture'; + + @override + String get serialNo => 'Serial No'; + + @override + String get pickAsset => 'Pick Asset'; + + @override + String get filter => 'Filter'; + + @override + String get firstAction => 'First Action'; + + @override + String get rejectionReason => 'Rejection Reason'; + + @override + String get workOrder => 'Work Order'; + + @override + String get cmDetails => 'CM Details'; + + @override + String get assetInformation => 'Asset Information'; + + @override + String get callDetails => 'Call Details'; + + @override + String get assetStatus => 'Asset Status'; + + @override + String get workOrders => 'Work Orders'; + + @override + String get viewWorkOrder => 'View All Work Order'; + + @override + String get createWorkOrder => 'Create Work Order'; + + @override + String get serviceDetails => 'Service Details'; + + @override + String get setVisitDate => 'Set Date Of Visit'; + + @override + String get verifyArrival => 'Verify Arrival'; + + @override + String get selectWorkOrder => 'Select Work Order'; + + @override + String get scanQr => 'Scan QR'; + + @override + String get scanQrDetail => 'Scan QR Code of the device'; + + @override + String get askRequester => 'Ask Requester to Verify'; + + @override + String get askRequesterDetail => + 'Ask requester to verify your arrival through Atoms Application.'; + + @override + String get askOtp => 'Ask OTP From Requester'; + + @override + String get askOtpDetail => 'Ask OTP from requester to verify you arrival'; + + @override + String get takeDevicePhoto => 'Take Device Photo'; + + @override + String get takeDevicePhotoDetail => + 'Take the photo of the device from location'; + + @override + String get lastSituationStatus => 'Last Situation Status'; + + @override + String get priority => 'Request Priority'; + + @override + String get equipmentStatus => 'Equipment Status'; + + @override + String get requestSparePart => 'Request Spare Part'; + + @override + String get callResponse => 'Call Response'; + + @override + String get selectAction => 'Select Action'; + + @override + String get requestSparePartForYourAsset => + 'Request spare part for your asset'; + + @override + String get addNewActivity => 'Add New Activity'; + + @override + String get addNewActivityToYourWorkOrder => + 'Add new activity to your work order'; + + @override + String get markAsCompleted => 'Mark As Completed'; + + @override + String get cmNumber => 'CM Number'; + + @override + String get jopStatus => 'Jop Status'; + + @override + String get callComments => 'Call Comments'; + + @override + String get comments => 'Comments'; + + @override + String get recordVoice => 'Record Voice'; + + @override + String get gasRefillDetails => 'Gas Refill Details'; + + @override + String get updateRequest => 'Update Request'; + + @override + String get gasRefill => 'Gas Refill'; + + @override + String get assetDetails => 'Asset Details'; + + @override + String get receiverName => 'Receiver Name'; + + @override + String get receiverDetails => 'Receiver Details'; + + @override + String get requestedThrough => 'Requested Through'; + + @override + String get typeOfRequest => 'Type of Request'; + + @override + String get deviceTransfer => 'Device Transfer'; + + @override + String get deviceTransferRequest => 'Device Transfer Requests'; + + @override + String get deviceTransferDetails => 'Device Transfer Details'; + + @override + String get transferDetails => 'Transfer Details'; + + @override + String get senderDetails => 'Sender Details'; + + @override + String get searchBy => 'Search by'; + + @override + String get searchByDesc => 'Search by any of the following criteria'; + + @override + String get location => 'Location'; + + @override + String get supplier => 'Supplier'; + + @override + String get supplierEngineer => 'Supplier Engineer'; + + @override + String get md => 'MD'; + + @override + String get snNumber => 'SN Number'; + + @override + String get snNo => 'SN No.'; + + @override + String get oracleCode => 'Oracle Code'; + + @override + String get byDepartment => 'By Department'; + + @override + String get bySite => 'By Site'; + + @override + String get applyFilter => 'Apply Filter'; + + @override + String get pmDateRange => 'PM Date Range'; + + @override + String get pickDate => 'Pick Date'; + + @override + String get verify => 'Verify'; + + @override + String get resend => 'Resend'; + + @override + String get resendIn => 'Resend In'; + + @override + String get havingTroubleReceivingOtp => 'Having trouble receiving OTP?'; + + @override + String get askOtpFromRequester => 'Ask OTP From Requester'; + + @override + String get checkOutOtherMethods => 'Check out other methods.'; + + @override + String get otpSentToNumber => 'An OTP sent to the number'; + + @override + String get requestDetails => 'Request Details'; + + @override + String get historyLogs => 'History Logs'; + + @override + String get pickTime => 'Pick Time'; + + @override + String get readCompleteThread => 'Read Complete thread'; + + @override + String get pickADate => 'Pick a date'; + + @override + String get firstActionStatus => 'First Action Status'; + + @override + String get loanAvailability => 'Loan Availability'; + + @override + String get save => 'Save'; + + @override + String get serviceType => 'Service Type'; + + @override + String get assistantEmployee => 'Assistant Employee'; + + @override + String get assignAssistant => 'Assign Assistant'; + + @override + String get partNo => 'Part No.'; + + @override + String get partNumber => 'Part Number'; + + @override + String get engSign => 'Engineer Signature'; + + @override + String get requesterName => 'Requester Name'; + + @override + String get updateWorkOrder => 'Update Work Order'; + + @override + String get createPreventiveMaintenanceRequest => + 'Create Preventive Maintenance Request'; + + @override + String get createNewRequest => 'Create New Request'; + + @override + String get calendar => 'Calendar'; + + @override + String get helpCenter => 'Help Center'; + + @override + String get rateUs => 'Rate Us'; + + @override + String get settings => 'Settings'; + + @override + String get reportBg => 'Report a bug'; + + @override + String get whatsNew => 'What\'s New'; + + @override + String get logout => 'Logout'; + + @override + String get arabic => 'Arabic'; + + @override + String get lightTheme => 'Light Theme'; + + @override + String get myProfile => 'My Profile'; + + @override + String get viewDetails => 'View Details'; + + @override + String get requests => 'Requests'; + + @override + String get highPriority => 'High Priority'; + + @override + String get newRequests => 'New'; + + @override + String get completed => 'Completed'; + + @override + String get overdue => 'Overdue'; + + @override + String get lowPriority => 'Low Priority'; + + @override + String get newR => 'New'; + + @override + String get inProgress => 'In Progress'; + + @override + String get open => 'Open'; + + @override + String get requestType => 'Request Type'; + + @override + String get requestNo => 'Request No'; + + @override + String get assignedTo => 'Assigned To'; + + @override + String get waitingForQuotation => 'Waiting for quotation'; + + @override + String get gasRequest => 'Gas Request'; + + @override + String get viewComments => 'View Comments'; + + @override + String get commentHere => 'Comment Here'; + + @override + String get nurseSignature => 'Nurse Signature'; + + @override + String get ppmVisit => 'PPM Visit Status'; + + @override + String get ppmRequest => 'PPMs Request'; + + @override + String get timer => 'Timer'; + + @override + String get deviceStatus => 'Device Status'; + + @override + String get addAsset => 'Add Asset'; + + @override + String get calibrationDate => 'Calibration Date'; + + @override + String get asset => 'Asset'; + + @override + String get addItem => 'Add Item'; + + @override + String get item => 'Item'; + + @override + String get measuredValue => 'Measured Value'; + + @override + String get sureExit => 'Are you sure ypu want to Exit? '; + + @override + String get daily => 'Daily'; + + @override + String get weekly => 'Weekly'; + + @override + String get monthly => 'Monthly'; + + @override + String get confirmEngineerArrival => 'Confirm Engineer Arrival'; + + @override + String get confirmingEngineerArrivalAction => + 'With this action you are confirming engineer arrival'; + + @override + String get myShift => 'My Shift'; + + @override + String get myTeamRequest => 'My Team Request'; + + @override + String get sunToThurs => 'Sunday to Thursday'; + + @override + String get requestGasRefill => 'Request Gas Refill'; + + @override + String get trackGasRefill => 'Track Gas Refill'; + + @override + String get trackAssetTransfer => 'Track Asset Transfer'; + + @override + String get total => 'Total'; + + @override + String get noDataFound => 'No Data Found'; + + @override + String get allRequests => 'All Requests'; + + @override + String get allWorkOrder => 'All Work Orders'; + + @override + String get requestStatus => 'Request Status'; + + @override + String get createSubWorkOrder => 'Create Sub Work Order'; + + @override + String get mrNumber => 'MR Number'; + + @override + String get vendorEng => 'Vendor Engineer'; + + @override + String get vendorName => 'Vendor Name'; + + @override + String get reset => 'Reset'; + + @override + String get solution => 'Solution'; + + @override + String get technicalComment => 'Technical Comment'; + + @override + String get recentActivities => 'Recent Activities'; + + @override + String get activities => 'Activities'; + + @override + String get provideQrCodeToEngineer => + 'Provide the below QR Code to Engineer to verify his arrival'; + + @override + String get qrCode => 'QR Code'; + + @override + String get createNewActivity => 'Create New Activity'; + + @override + String get selectActivityType => 'Select Activity Type'; + + @override + String get sparePartRequest => 'Spare Part Request'; + + @override + String get sparePartRequestDetail => + 'Ask requester to verify your arrival through Atoms Application.'; + + @override + String get maintenanceRequest => 'Maintenance Request'; + + @override + String get assetToBeRetired => 'Asset to be retired'; + + @override + String get problemDesc => 'Problem Description'; + + @override + String get source => 'Source'; + + @override + String get costCodeName => 'Cost Code Name'; + + @override + String get installationDate => 'Installation Date'; + + @override + String get nextPmDate => 'Next PM Date'; + + @override + String get lastPmDate => 'Last PM Date'; + + @override + String get assetScan => 'Asset Scan'; + + @override + String get pickManually => 'Pick Manually'; + + @override + String get doYouWantToSetReminder => 'Do you want to set reminder?'; + + @override + String get youCanSetTheReminderInAlarmToRemindYouBeforeVisit => + 'You can set the reminder in alarm to remind you before visit. Please select the time below'; + + @override + String get setReminder => 'Set Reminder'; + + @override + String get searchAsset => 'Search Asset'; + + @override + String get newPassword => 'New Password'; + + @override + String get resetPassword => 'Reset Password'; + + @override + String get otpVerification => 'OTP Verification'; + + @override + String get pleaseEnterTheOtpSentTo => 'Please enter the OTP sent to'; + + @override + String get pleaseEnterTheNewPassword => 'Please enter the new password'; + + @override + String get markAttendance => 'Mark Attendance'; + + @override + String get selectMethodToMarkAttendance => + 'Select the method to mark the attendance'; + + @override + String get employeeIdIsRequired => 'Employee Id is required'; + + @override + String get successful => 'Successful'; + + @override + String get youHaveSuccessfullyMarkedYourAttendance => + 'You have successfully marked your attendance'; + + @override + String get swipeTypeName => 'Swipe Type Name'; + + @override + String get userName => 'User Name'; + + @override + String get siteName => 'Site Name'; + + @override + String get pointName => 'Point Name'; + + @override + String get checkIn => 'Check in'; + + @override + String get pmWo => 'PM WO'; + + @override + String get recurrentWo => 'Recurrent WO'; + + @override + String get taskNo => 'Task No'; + + @override + String get assignEngineer => 'Assign Engineer'; + + @override + String get scheduledDate => 'Scheduled Date'; + + @override + String get complete => 'Complete'; + + @override + String get createdDate => 'Created Date'; + + @override + String get employeeId => 'Employee ID'; + + @override + String get extensionNo => 'Extension No'; + + @override + String get fail => 'FAIL'; + + @override + String get pass => 'PASS'; + + @override + String get pmPlanNo => 'PM Plan No'; + + @override + String get executionTimeFrame => 'Execution Time Frame'; + + @override + String get pmTestResult => 'PM Test Result'; + + @override + String get actualVisit => 'Actual Visit'; + + @override + String get totalWorkingTime => 'Total Working Time'; + + @override + String get typeOfPm => 'Type of PM'; + + @override + String get attachments => 'Attachments'; + + @override + String get supplierName => 'Supplier Name'; + + @override + String get externalEngineerName => 'External Engineer Name'; + + @override + String get telephone => 'Telephone'; + + @override + String get task => 'Task'; + + @override + String get taskType => 'Task Type'; + + @override + String get createTaskRequest => 'Create Task Request'; + + @override + String get taskRequest => 'Task Request'; + + @override + String get completedActions => 'Completed Actions'; + + @override + String get impactStatus => 'Impact Status'; + + @override + String get installationSite => 'Installation Site'; + + @override + String get installationBuilding => 'Installation Building'; + + @override + String get installationFloor => 'Installation Floor'; + + @override + String get installationDepartment => 'Installation Department'; + + @override + String get acknowledge => 'Acknowledge'; + + @override + String get transferAsset => 'Transfer Asset'; + + @override + String get createAssetTransferRequest => 'Create Asset Transfer Request'; + + @override + String get arrivedDate => 'Arrived Date'; + + @override + String get closedDate => 'Closed Date'; + + @override + String get transferType => 'Transfer Type'; + + @override + String get since => 'Since'; + + @override + String get rejectionDetails => 'Rejection Details'; + + @override + String get part => 'Part'; + + @override + String get creationDate => 'Creation Date'; + + @override + String get createdBy => 'Created BY'; + + @override + String get trNumber => 'TR Number'; + + @override + String get workOrderDetails => 'Work Order Details'; + + @override + String get woNumber => 'WO Number'; + + @override + String get contactInfo => 'Contact Info'; + + @override + String get destinationBuilding => 'Destination Building'; + + @override + String get destinationFloor => 'Destination Floor'; + + @override + String get destinationDepartment => 'Destination Department'; +} diff --git a/lib/main.dart b/lib/main.dart index 2aae2db0..16f152fe 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,9 +4,8 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_timezone/flutter_timezone.dart'; import 'package:localization/localization.dart'; +import 'package:flutter_timezone/flutter_timezone.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/comments_provider.dart'; @@ -121,6 +120,7 @@ import 'controllers/providers/api/gas_refill_comments.dart'; import 'controllers/providers/api/user_provider.dart'; import 'controllers/providers/settings/setting_provider.dart'; import 'dashboard_latest/dashboard_provider.dart'; +import 'l10n/app_localizations.dart'; import 'modules/demo_module/demo_document_lookup_provider.dart'; import 'modules/incident_module/create_incident_request_page.dart'; import 'modules/incident_module/incident_lookup_provider.dart'; diff --git a/lib/new_views/swipe_module/dialoge/nfc_reader_sheet.dart b/lib/new_views/swipe_module/dialoge/nfc_reader_sheet.dart index 3ee2e5d7..7eecd8e2 100644 --- a/lib/new_views/swipe_module/dialoge/nfc_reader_sheet.dart +++ b/lib/new_views/swipe_module/dialoge/nfc_reader_sheet.dart @@ -3,13 +3,12 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:nfc_manager/nfc_manager.dart'; -import 'package:nfc_manager/platform_tags.dart'; import 'package:test_sa/dashboard_latest/dashboard_view.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -void showNfcReader(BuildContext context, {Function(String nfcId)? onNcfScan}) { +void showNfcReader(BuildContext context, {Function(String?)? onNcfScan}) { showModalBottomSheet( context: context, enableDrag: false, @@ -27,9 +26,9 @@ void showNfcReader(BuildContext context, {Function(String nfcId)? onNcfScan}) { } class NfcLayout extends StatefulWidget { - Function(String nfcId)? onNcfScan; + final Function(String? nfcId)? onNcfScan; - NfcLayout({this.onNcfScan}); + const NfcLayout({super.key, required this.onNcfScan}); @override _NfcLayoutState createState() => _NfcLayoutState(); @@ -44,14 +43,35 @@ class _NfcLayoutState extends State { void initState() { super.initState(); - NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - var f; - if (Platform.isAndroid) { - f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); - } else { - f = MifareUltralight(tag: tag, identifier: tag.data["mifare"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); + NfcManager.instance.startSession( + onDiscovered: (NfcTag tag) async { + String? identifier; + + try { + final dynamic tagDynamic = tag; + final Map tagData = Map.from(tagDynamic.data as Map); + + if (Platform.isAndroid) { + if (tagData.containsKey('nfca')) { + final nfcaData = tagData['nfca'] as Map; + if (nfcaData.containsKey('identifier')) { + final List idBytes = List.from(nfcaData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } else { + if (tagData.containsKey('mifare')) { + final mifareData = tagData['mifare'] as Map; + if (mifareData.containsKey('identifier')) { + final List idBytes = List.from(mifareData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } + } catch (e) { + print('Error reading NFC tag: $e'); } - String identifier = f.identifier.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + nfcId = identifier; setState(() { @@ -62,15 +82,11 @@ class _NfcLayoutState extends State { Future.delayed(const Duration(seconds: 1), () { NfcManager.instance.stopSession(); Navigator.pop(context); - // if (Platform.isAndroid) { - // Navigator.pop(context); - // } else { - // Navigator.pop(context); - // Navigator.pop(context); - // } widget.onNcfScan!(nfcId!); }); - }).catchError((err) { + }, + pollingOptions: {NfcPollingOption.iso14443}, + ).catchError((err) { print(err); }); } diff --git a/lib/new_views/swipe_module/utils/swipe_general_utils.dart b/lib/new_views/swipe_module/utils/swipe_general_utils.dart index 4d6b6bf4..cadd8ea0 100644 --- a/lib/new_views/swipe_module/utils/swipe_general_utils.dart +++ b/lib/new_views/swipe_module/utils/swipe_general_utils.dart @@ -10,7 +10,6 @@ import 'package:google_api_availability/google_api_availability.dart'; import 'package:huawei_location/huawei_location.dart'; import 'package:intl/intl.dart'; import 'package:nfc_manager/nfc_manager.dart'; -import 'package:nfc_manager/platform_tags.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -303,7 +302,7 @@ class SwipeGeneralUtils { await _processNfcAttendance(nfcId, latitude, longitude, context); }); } else { - showNfcReader(context, onNcfScan: (String nfcId) async { + showNfcReader(context, onNcfScan: (String? nfcId) async { await _processNfcAttendance(nfcId ?? '', latitude, longitude, context); }); } @@ -451,17 +450,40 @@ class SwipeGeneralUtils { } void readNFc({Function(String)? onRead}) { - NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - MifareUltralight f; - if (Platform.isAndroid) { - f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); - } else { - f = MifareUltralight(tag: tag, identifier: tag.data["mifare"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); + NfcManager.instance.startSession( + onDiscovered: (NfcTag tag) async { + String identifier = ''; + + try { + final dynamic tagDynamic = tag; + final Map tagData = Map.from(tagDynamic.data as Map); + + if (Platform.isAndroid) { + if (tagData.containsKey('nfca')) { + final nfcaData = tagData['nfca'] as Map; + if (nfcaData.containsKey('identifier')) { + final List idBytes = List.from(nfcaData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } else { + if (tagData.containsKey('mifare')) { + final mifareData = tagData['mifare'] as Map; + if (mifareData.containsKey('identifier')) { + final List idBytes = List.from(mifareData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } + } catch (e) { + print('Error reading NFC: $e'); } - String identifier = f.identifier.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + NfcManager.instance.stopSession(); onRead!(identifier); - }).catchError((err) { + }, + pollingOptions: {NfcPollingOption.iso14443}, + ).catchError((err) { print(err); }); } diff --git a/lib/nfc/nfc_reader_sheet.dart b/lib/nfc/nfc_reader_sheet.dart index b4e2f7a4..151b1ebb 100644 --- a/lib/nfc/nfc_reader_sheet.dart +++ b/lib/nfc/nfc_reader_sheet.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:nfc_manager/nfc_manager.dart'; -import 'package:nfc_manager/platform_tags.dart'; void showNfcReader(BuildContext context, {required Function(String? nfcId) onNcfScan}) { showModalBottomSheet( @@ -23,9 +22,9 @@ void showNfcReader(BuildContext context, {required Function(String? nfcId) onNcf } class NfcLayout extends StatefulWidget { - Function(String? nfcId) onNcfScan; + final Function(String? nfcId) onNcfScan; - NfcLayout({required this.onNcfScan}); + const NfcLayout({super.key, required this.onNcfScan}); @override _NfcLayoutState createState() => _NfcLayoutState(); @@ -40,33 +39,79 @@ class _NfcLayoutState extends State { void initState() { super.initState(); - NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - var f; - if (Platform.isAndroid) { - f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); - } else { - f = MifareUltralight(tag: tag, identifier: tag.data["mifare"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); - } - String identifier = f.identifier.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); - nfcId = identifier; - - setState(() { - _reading = true; - mainWidget = doneNfc(); - }); - - Future.delayed(const Duration(seconds: 1), () { - NfcManager.instance.stopSession(); - Navigator.pop(context); - // if (Platform.isAndroid) { - // Navigator.pop(context); - // } else { - // Navigator.pop(context); - // Navigator.pop(context); - // } - widget.onNcfScan(nfcId); - }); - }).catchError((err) { + NfcManager.instance.startSession( + onDiscovered: (NfcTag tag) async { + String? identifier; + + // Access tag identifier from the tag data + // In nfc_manager 4.1.1, access data via dynamic cast to bypass protected member + try { + final dynamic tagDynamic = tag; + final Map tagData = Map.from(tagDynamic.data as Map); + + if (Platform.isAndroid) { + // For Android, try NfcA technology first + if (tagData.containsKey('nfca')) { + final nfcaData = tagData['nfca'] as Map; + if (nfcaData.containsKey('identifier')) { + final List idBytes = List.from(nfcaData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + // Fallback to other technologies if NfcA is not available + if (identifier == null && tagData.containsKey('nfcb')) { + final nfcbData = tagData['nfcb'] as Map; + if (nfcbData.containsKey('identifier')) { + final List idBytes = List.from(nfcbData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } else { + // For iOS, try MiFare technology + if (tagData.containsKey('mifare')) { + final mifareData = tagData['mifare'] as Map; + if (mifareData.containsKey('identifier')) { + final List idBytes = List.from(mifareData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + // Fallback to iso15693 for iOS + if (identifier == null && tagData.containsKey('iso15693')) { + final iso15693Data = tagData['iso15693'] as Map; + if (iso15693Data.containsKey('identifier')) { + final List idBytes = List.from(iso15693Data['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } + + // Universal fallback: try Ndef if available + if (identifier == null && tagData.containsKey('ndef')) { + final ndefData = tagData['ndef'] as Map; + if (ndefData.containsKey('identifier')) { + final List idBytes = List.from(ndefData['identifier'] as List); + identifier = idBytes.map((e) => e.toRadixString(16).padLeft(2, '0')).join(''); + } + } + } catch (e) { + print('Error reading NFC tag: $e'); + } + + nfcId = identifier; + + setState(() { + _reading = true; + mainWidget = doneNfc(); + }); + + Future.delayed(const Duration(seconds: 1), () { + NfcManager.instance.stopSession(); + Navigator.pop(context); + widget.onNcfScan(nfcId); + }); + }, + pollingOptions: {NfcPollingOption.iso14443}, + ).catchError((err) { print(err); }); } @@ -96,7 +141,6 @@ class _NfcLayoutState extends State { SizedBox( height: 30, ), - Image.asset( "assets/images/nfc_dummy.png", height: MediaQuery.of(context).size.width / 3, @@ -159,7 +203,7 @@ class _NfcLayoutState extends State { ), Image.asset( // "assets/icons/nfc/ic_done.png", - "assets/images/done_dummy.jpeg", + "assets/images/done_dummy.jpeg", height: MediaQuery.of(context).size.width / 3, width: double.infinity, ), diff --git a/lib/views/widgets/sound/TextSpeechRecordWidget.dart b/lib/views/widgets/sound/TextSpeechRecordWidget.dart index 44c80b96..74ce8e09 100644 --- a/lib/views/widgets/sound/TextSpeechRecordWidget.dart +++ b/lib/views/widgets/sound/TextSpeechRecordWidget.dart @@ -40,9 +40,7 @@ class _RecordSoundState extends State { bool _recorderIsOpened = false; bool _recording = false; - final bool _played = false; String? _record; - Artboard? _rive; Timer? _timer; late TextEditingController _timeController; late TextEditingController _commentController; @@ -78,31 +76,6 @@ class _RecordSoundState extends State { node.unfocus(); _recorderIsOpened = true; _settingProvider = Provider.of(context,listen: false); - // RecordMp3.instance.start(recordFilePath, (type) { - // // record fail callback - // }); - // _myRecorder.openRecorder().then((value) { - // _recorderIsOpened = true; - // setState(() {}); - // }); - - // Load the animation file from the bundle, note that you could also - // download this. The RiveFile just expects a list of bytes. - rootBundle.load('assets/rives/recording.riv').then( - (data) async { - // Load the RiveFile from the binary data. - final file = RiveFile.import(data); - // The artboard is the root of the animation and gets drawn in the - // Rive widget. - final artboard = file.mainArtboard; - // Add a controller to play back a known animation on the main/default - // artboard.We store a reference to it so we can toggle playback. - artboard.addController(SimpleAnimation('recording')); - _rive = artboard; - - setState(() {}); - }, - ); } @override @@ -131,7 +104,7 @@ class _RecordSoundState extends State { String duration = Duration(seconds: timer.tick).toString(); duration = duration.substring(duration.indexOf(":") + 1, duration.indexOf(".")); - String recordTime = ((timer.tick ?? 0) / 60).toStringAsFixed(2).replaceFirst(".", ":"); + String recordTime = (timer.tick / 60).toStringAsFixed(2).replaceFirst(".", ":"); // print("recordTime:$recordTime"); if (recordTime.length == 4 || recordTime.length == 7) { recordTime = "0$recordTime"; @@ -139,7 +112,6 @@ class _RecordSoundState extends State { _timeController.text = duration; }); }); - _rive?.addController(SimpleAnimation('recording')); if (!_recorderIsOpened) { // await _myRecorder.openRecorder(); _recorderIsOpened = true; @@ -198,21 +170,14 @@ class _RecordSoundState extends State { _cancelRecording() async { if (!_recording) return; RecordMp3.instance.stop(); - // String path = await _myRecorder.stopRecorder(); - // _myRecorder.deleteRecord(fileName: path); - _rive?.addController(SimpleAnimation('delete')); - - // rebuild(); _recording = false; - await Future.delayed(const Duration(seconds: 1)); + await Future.delayed(const Duration(milliseconds: 300)); if (!_recording) setState(() {}); - // _message.memoryAudio.; } @override Widget build(BuildContext context) { if (node.hasFocus && widget.enabled) node.unfocus(); - _settingProvider ??= Provider.of(context); return Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/views/widgets/sound/record_sound.dart b/lib/views/widgets/sound/record_sound.dart index 56a23c13..4033cb86 100644 --- a/lib/views/widgets/sound/record_sound.dart +++ b/lib/views/widgets/sound/record_sound.dart @@ -7,7 +7,6 @@ import 'package:fluttertoast/fluttertoast.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:record_mp3_plus/record_mp3_plus.dart'; -import 'package:rive/rive.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; @@ -33,9 +32,7 @@ class _RecordSoundState extends State { bool _recorderIsOpened = false; bool _recording = false; - final bool _played = false; String? _record; - late Artboard _rive; Timer? _timer; late TextEditingController _timeController; @@ -52,31 +49,6 @@ class _RecordSoundState extends State { _timeController = TextEditingController(); node.unfocus(); _recorderIsOpened = true; - // RecordMp3.instance.start(recordFilePath, (type) { - // // record fail callback - // }); - // _myRecorder.openRecorder().then((value) { - // _recorderIsOpened = true; - // setState(() {}); - // }); - - // Load the animation file from the bundle, note that you could also - // download this. The RiveFile just expects a list of bytes. - rootBundle.load('assets/rives/recording.riv').then( - (data) async { - // Load the RiveFile from the binary data. - final file = RiveFile.import(data); - // The artboard is the root of the animation and gets drawn in the - // Rive widget. - final artboard = file.mainArtboard; - // Add a controller to play back a known animation on the main/default - // artboard.We store a reference to it so we can toggle playback. - artboard.addController(SimpleAnimation('recording')); - _rive = artboard; - - setState(() {}); - }, - ); } @override @@ -113,7 +85,6 @@ class _RecordSoundState extends State { _timeController.text = duration; }); }); - _rive.addController(SimpleAnimation('recording')); if (!_recorderIsOpened) { // await _myRecorder.openRecorder(); _recorderIsOpened = true; @@ -150,15 +121,9 @@ class _RecordSoundState extends State { _cancelRecording() async { if (!_recording) return; RecordMp3.instance.stop(); - // String path = await _myRecorder.stopRecorder(); - // _myRecorder.deleteRecord(fileName: path); - _rive.addController(SimpleAnimation('delete')); - - // rebuild(); _recording = false; - await Future.delayed(const Duration(seconds: 1)); + await Future.delayed(const Duration(milliseconds: 300)); if (!_recording) setState(() {}); - // _message.memoryAudio.; } @override diff --git a/pubspec.lock b/pubspec.lock index f09bc410..50ce5e15 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,50 +5,50 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "5534e701a2c505fed1f0799e652dd6ae23bd4d2c4cf797220e5ced5764a7c1c2" + sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 url: "https://pub.dev" source: hosted - version: "1.3.44" + version: "1.3.59" another_flushbar: dependency: "direct main" description: name: another_flushbar - sha256: "19bf9520230ec40b300aaf9dd2a8fefcb277b25ecd1c4838f530566965befc2a" + sha256: "2b99671c010a7d5770acf5cb24c9f508b919c3a7948b6af9646e773e7da7b757" url: "https://pub.dev" source: hosted - version: "1.12.30" + version: "1.12.32" archive: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.9" args: dependency: transitive description: name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.7.0" async: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" audio_session: dependency: transitive description: name: audio_session - sha256: b2a26ba8b7efa1790d6460e82971fde3e398cfbe2295df9dea22f3499d2c12a7 + sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac" url: "https://pub.dev" source: hosted - version: "0.1.23" + version: "0.1.25" audio_waveforms: dependency: "direct main" description: @@ -61,58 +61,58 @@ packages: dependency: "direct main" description: name: audioplayers - sha256: c346ba5a39dc208f1bab55fc239855f573d69b0e832402114bf0b793622adc4d + sha256: a72dd459d1a48f61a6fb9c0134dba26597c9236af40639ff0eb70eb4e0baab70 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.6.0" audioplayers_android: dependency: transitive description: name: audioplayers_android - sha256: de576b890befe27175c2f511ba8b742bec83765fa97c3ce4282bba46212f58e4 + sha256: "60a6728277228413a85755bd3ffd6fab98f6555608923813ce383b190a360605" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.2.1" audioplayers_darwin: dependency: transitive description: name: audioplayers_darwin - sha256: e507887f3ff18d8e5a10a668d7bedc28206b12e10b98347797257c6ae1019c3b + sha256: c994b3bb3a921e4904ac40e013fbc94488e824fd7c1de6326f549943b0b44a91 url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.4.0" audioplayers_linux: dependency: transitive description: name: audioplayers_linux - sha256: "3d3d244c90436115417f170426ce768856d8fe4dfc5ed66a049d2890acfa82f9" + sha256: f75bce1ce864170ef5e6a2c6a61cd3339e1a17ce11e99a25bae4474ea491d001 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.2.1" audioplayers_platform_interface: dependency: transitive description: name: audioplayers_platform_interface - sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5" + sha256: "0e2f6a919ab56d0fec272e801abc07b26ae7f31980f912f24af4748763e5a656" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.1.1" audioplayers_web: dependency: transitive description: name: audioplayers_web - sha256: "3609bdf0e05e66a3d9750ee40b1e37f2a622c4edb796cc600b53a90a30a2ace4" + sha256: faa8fa6587f996a6f604433b53af44c57a1407d4fe8dff5766cf63d6875e8de9 url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.2.0" audioplayers_windows: dependency: transitive description: name: audioplayers_windows - sha256: "8605762dddba992138d476f6a0c3afd9df30ac5b96039929063eceed416795c2" + sha256: bafff2b38b6f6d331887558ba6e0a01c9c208d9dbb3ad0005234db065122a734 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.3.0" badges: dependency: "direct main" description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" cached_network_image: dependency: "direct main" description: @@ -157,74 +157,82 @@ packages: dependency: "direct main" description: name: carousel_slider - sha256: "7b006ec356205054af5beaef62e2221160ea36b90fb70a35e4deacd49d0349ae" + sha256: febf4b0163e0242adc13d7a863b04965351f59e7dfea56675c7c2caa7bcd7476 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.2" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.4" cli_util: dependency: transitive description: name: cli_util - sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.4.2" clipboard: dependency: "direct main" description: name: clipboard - sha256: "1920c0337f8808be4166c5f1b236301ff381ef69633b0757c502d97f1f740102" + sha256: c0ba5e7214035b824549473fa134870bc544fff0d7b89170d4756c0ac2c0239d url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "3.0.14" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.1" cross_file: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5+2" crypto: dependency: transitive description: name: crypto - sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.7" cupertino_icons: dependency: "direct main" description: @@ -237,18 +245,18 @@ packages: dependency: "direct main" description: name: date_picker_timeline - sha256: c05e6540fa3055c9036e6f99e758972e14be0e1010d5a6e7a1261d4a6f3292df + sha256: b99308cd224ca42900aa3ba2a75213c8deff6edee35fc18905a7834e8b0d7e70 url: "https://pub.dev" source: hosted - version: "1.2.6" + version: "1.2.7" dbus: dependency: transitive description: name: dbus - sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 url: "https://pub.dev" source: hosted - version: "0.7.10" + version: "0.7.12" device_calendar: dependency: "direct main" description: @@ -269,137 +277,138 @@ packages: dependency: "direct main" description: name: ellipsized_text - sha256: d4d372c2baf8d4adfb2ca3728c1e5955d1683e75fae774b311d557ad13317105 + sha256: "62d130a2531af8167de2b00ca0a46633fb0030df5eb794b4143cf53dcc1e8de6" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "2.0.0" fake_async: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" file: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" file_picker: dependency: "direct main" description: name: file_picker - sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12" + sha256: ab13ae8ef5580a411c458d6207b6774a6c237d77ac37011b13994879f68a8810 url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "8.3.7" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0" url: "https://pub.dev" source: hosted - version: "0.9.2+1" + version: "0.9.4" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: cb284e267f8e2a45a904b5c094d2ba51d0aabfc20b1538ab786d9ef7dc2bf75c + sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a" url: "https://pub.dev" source: hosted - version: "0.9.4+1" + version: "0.9.5" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+3" + version: "0.9.3+5" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "51dfe2fbf3a984787a2e7b8592f2f05c986bfedd6fdacea3f9e0a7beb334de96" + sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" url: "https://pub.dev" source: hosted - version: "3.6.0" + version: "3.15.2" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: e30da58198a6d4b49d5bce4e852f985c32cb10db329ebef9473db2b9f09ce810 + sha256: cccb4f572325dc14904c02fcc7db6323ad62ba02536833dddb5c02cac7341c64 url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "6.0.2" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: f967a7138f5d2ffb1ce15950e2a382924239eaa521150a8f144af34e68b3b3e5 + sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" url: "https://pub.dev" source: hosted - version: "2.18.1" + version: "2.24.1" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: eb6e28a3a35deda61fe8634967c84215efc19133ba58d8e0fc6c9a2af2cba05e + sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" url: "https://pub.dev" source: hosted - version: "15.1.3" + version: "15.2.10" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: b316c4ee10d93d32c033644207afc282d9b2b4372f3cf9c6022f3558b3873d2d + sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" url: "https://pub.dev" source: hosted - version: "4.5.46" + version: "4.6.10" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: d7f0147a1a9fe4313168e20154a01fd5cf332898de1527d3930ff77b8c7f5387 + sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" url: "https://pub.dev" source: hosted - version: "3.9.2" + version: "3.10.10" fixnum: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flare_flutter: dependency: "direct main" description: - name: flare_flutter - sha256: "99d63c60f00fac81249ce6410ee015d7b125c63d8278a30da81edf3317a1f6a0" - url: "https://pub.dev" - source: hosted + path: flare_flutter + ref: remove_hashValues + resolved-ref: d915c89bf01f1a9d5c97d9f5b2f964eb21ddf1e9 + url: "https://github.com/mbfakourii/Flare-Flutter.git" + source: git version: "3.0.2" flutter: dependency: "direct main" @@ -482,10 +491,10 @@ packages: dependency: "direct main" description: name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" url: "https://pub.dev" source: hosted - version: "0.13.1" + version: "0.14.4" flutter_lints: dependency: "direct overridden" description: @@ -498,10 +507,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: "49eeef364fddb71515bc78d5a8c51435a68bccd6e4d68e25a942c5e47761ae71" + sha256: "674173fd3c9eda9d4c8528da2ce0ea69f161577495a9cc835a2a4ecd7eadeb35" url: "https://pub.dev" source: hosted - version: "17.2.3" + version: "17.2.4" flutter_local_notifications_linux: dependency: transitive description: @@ -527,42 +536,42 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" + sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1 url: "https://pub.dev" source: hosted - version: "2.0.22" + version: "2.0.33" flutter_sound: dependency: "direct main" description: name: flutter_sound - sha256: "1f40b26b92907a433afe877c927cd48f5a2e4d0f7188e5d39eb5756008aa51ab" + sha256: "77f0252a2f08449d621f68b8fd617c3b391e7f862eaa94bb32f53cc2dc3bbe85" url: "https://pub.dev" source: hosted - version: "9.6.0" + version: "9.30.0" flutter_sound_platform_interface: dependency: transitive description: name: flutter_sound_platform_interface - sha256: "2e218521d8187b9a4c65063ad9c79bfe88119531ff68047a2eaa6b027cb276bb" + sha256: "5ffc858fd96c6fa277e3bb25eecc100849d75a8792b1f9674d1ba817aea9f861" url: "https://pub.dev" source: hosted - version: "9.6.0" + version: "9.30.0" flutter_sound_web: dependency: transitive description: name: flutter_sound_web - sha256: "5013a15e4e69a4bdc8badd729130eef43c3305e30ba8e6933f863436ce969932" + sha256: "3af46f45f44768c01c83ba260855c956d0963673664947926d942aa6fbf6f6fb" url: "https://pub.dev" source: hosted - version: "9.6.0" + version: "9.30.0" flutter_svg: dependency: "direct main" description: name: flutter_svg - sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" + sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95" url: "https://pub.dev" source: hosted - version: "2.0.10+1" + version: "2.2.3" flutter_test: dependency: "direct dev" description: flutter @@ -593,18 +602,18 @@ packages: dependency: "direct main" description: name: fluttertoast - sha256: "95f349437aeebe524ef7d6c9bde3e6b4772717cf46a0eb6a3ceaddc740b297cc" + sha256: "144ddd74d49c865eba47abe31cbc746c7b311c82d6c32e571fd73c4264b740e2" url: "https://pub.dev" source: hosted - version: "8.2.8" + version: "9.0.0" font_awesome_flutter: dependency: "direct main" description: name: font_awesome_flutter - sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f" + sha256: b9011df3a1fa02993630b8fb83526368cf2206a711259830325bab2f1d2a4eb0 url: "https://pub.dev" source: hosted - version: "10.7.0" + version: "10.12.0" geolocator: dependency: "direct main" description: @@ -617,26 +626,26 @@ packages: dependency: transitive description: name: geolocator_android - sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47" + sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d url: "https://pub.dev" source: hosted - version: "4.6.1" + version: "4.6.2" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: "6154ea2682563f69fc0125762ed7e91e7ed85d0b9776595653be33918e064807" + sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 url: "https://pub.dev" source: hosted - version: "2.3.8+1" + version: "2.3.13" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface - sha256: "386ce3d9cce47838355000070b1d0b13efb5bc430f8ecda7e9238c8409ace012" + sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.2.6" geolocator_web: dependency: transitive description: @@ -657,26 +666,34 @@ packages: dependency: transitive description: name: get - sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e + sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a" url: "https://pub.dev" source: hosted - version: "4.6.6" + version: "4.7.3" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" google_api_availability: dependency: "direct main" description: name: google_api_availability - sha256: "3e9548cfd991d983d11425a2436d5bd957d048c279cc9e145ffe3f36fd847385" + sha256: "2ffdc91e1e0cf4e7974fef6c2988a24cefa81f03526ff04b694df6dc0fcbca03" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.0.1" google_api_availability_android: dependency: transitive description: name: google_api_availability_android - sha256: d95429ae78083585c312de2c6578085e7d53d100a94656d691bce0bb0ce435be + sha256: "4794147f43a8f3eee6b514d3ae30dbe6f7b9048cae8cd2a74cb4055cd28d74a8" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.1" google_api_availability_platform_interface: dependency: transitive description: @@ -693,206 +710,206 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + hooks: + dependency: transitive + description: + name: hooks + sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" http: dependency: "direct main" description: name: http - sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.6.0" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.2" huawei_location: dependency: "direct main" description: name: huawei_location - sha256: "3100d6b2b11df56481b8deade71baa84970e0bae0ade6ec56407be2b036af355" + sha256: dd939b0add3e228865cb7da230d7723551e55677d7d59de7dbfd466229847b9f url: "https://pub.dev" source: hosted - version: "6.14.2+301" + version: "6.16.0+300" huawei_push: dependency: "direct main" description: name: huawei_push - sha256: d9bdbc62d5b6a07fe2bff92790682c77ffcc8b56bafba8c12700d2b4b0e30a70 + sha256: "63388ea0af5564453da9ac3abf354744173b598fa3a23f09f1c5724e8fa930c9" url: "https://pub.dev" source: hosted - version: "6.13.0+300" + version: "6.14.0+300" image: dependency: transitive description: name: image - sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.8.0" image_cropper: dependency: "direct main" description: name: image_cropper - sha256: fe37d9a129411486e0d93089b61bd326d05b89e78ad4981de54b560725bf5bd5 + sha256: "266760ed426d7121f0ada02c672bfe5c1b5c714e908328716aee756f045709dc" url: "https://pub.dev" source: hosted - version: "8.0.2" + version: "8.1.0" image_cropper_for_web: dependency: transitive description: name: image_cropper_for_web - sha256: "34256c8fb7fcb233251787c876bb37271744459b593a948a2db73caa323034d0" + sha256: fd81ebe36f636576094377aab32673c4e5d1609b32dec16fad98d2b71f1250a9 url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" image_cropper_platform_interface: dependency: transitive description: name: image_cropper_platform_interface - sha256: e8e9d2ca36360387aee39295ce49029362ae4df3071f23e8e71f2b81e40b7531 + sha256: "2d8db8f4b638e448fa89a1e77cd8f053b4547472bd3ae073169e86626d03afef" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.2.0" image_picker: dependency: "direct main" description: name: image_picker - sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.1" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85 + sha256: eda9b91b7e266d9041084a42d605a74937d996b87083395c5e47835916a86156 url: "https://pub.dev" source: hosted - version: "0.8.12+13" + version: "0.8.13+14" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "65d94623e15372c5c51bebbcb820848d7bcb323836e12dfdba60b5d3a8b39e50" + sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.1.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" + sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588 url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.13+6" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.2" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.2" intl: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf - url: "https://pub.dev" - source: hosted - version: "0.19.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.20.2" json_annotation: dependency: transitive description: name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + sha256: cb09e7dac6210041fad964ed7fbee004f14258b4eca4040f72d1234062ace4c8 url: "https://pub.dev" source: hosted - version: "4.9.0" + version: "4.11.0" just_audio: dependency: "direct main" description: name: just_audio - sha256: a49e7120b95600bd357f37a2bb04cd1e88252f7cdea8f3368803779b925b1049 + sha256: f978d5b4ccea08f267dae0232ec5405c1b05d3f3cd63f82097ea46c015d5c09e url: "https://pub.dev" source: hosted - version: "0.9.42" + version: "0.9.46" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface - sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790" + sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.6.0" just_audio_web: dependency: transitive description: name: just_audio_web - sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448" + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" url: "https://pub.dev" source: hosted - version: "0.4.13" + version: "0.4.16" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -913,26 +930,26 @@ packages: dependency: transitive description: name: local_auth_android - sha256: e9a3c321e94359a552b1bdd0f98f79885f2b3e27234d270f9bef5cd82b29340c + sha256: a0bdfcc0607050a26ef5b31d6b4b254581c3d3ce3c1816ab4d4f4a9173e84467 url: "https://pub.dev" source: hosted - version: "1.0.44" + version: "1.0.56" local_auth_darwin: dependency: "direct main" description: name: local_auth_darwin - sha256: "7ba5738c874ca2b910d72385d00d2bebad9d4e807612936cf5e32bc01a048c71" + sha256: "699873970067a40ef2f2c09b4c72eb1cfef64224ef041b3df9fdc5c4c1f91f49" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.6.1" local_auth_platform_interface: dependency: transitive description: name: local_auth_platform_interface - sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" + sha256: f98b8e388588583d3f781f6806e4f4c9f9e189d898d27f0c249b93a1973dd122 url: "https://pub.dev" source: hosted - version: "1.0.10" + version: "1.1.0" local_auth_windows: dependency: transitive description: @@ -953,10 +970,10 @@ packages: dependency: transitive description: name: logger - sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32" + sha256: a7967e31b703831a893bbc3c3dd11db08126fe5f369b5c648a36f821979f5be3 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.6.2" logging: dependency: transitive description: @@ -969,26 +986,26 @@ packages: dependency: "direct main" description: name: lottie - sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b" + sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.3.2" matcher: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.18" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" message_pack_dart: dependency: transitive description: @@ -1001,18 +1018,34 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.0" mime: dependency: transitive description: name: mime - sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "2.0.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" + url: "https://pub.dev" + source: hosted + version: "0.17.4" + ndef_record: + dependency: transitive + description: + name: ndef_record + sha256: "210ffb12284961cab9e44b99462143316d9a20cd992581170706069ef77d74a6" + url: "https://pub.dev" + source: hosted + version: "1.4.2" nested: dependency: transitive description: @@ -1025,10 +1058,18 @@ packages: dependency: "direct main" description: name: nfc_manager - sha256: f5be75e90f8f2bff3ee49fbd7ef65bdd4a86ee679c2412e71ab2846a8cff8c59 + sha256: "24c78b0e5702da53e7f8794d073624c0bee7cd99924f257cbd11f5d1c5866879" url: "https://pub.dev" source: hosted - version: "3.5.0" + version: "4.1.1" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" + url: "https://pub.dev" + source: hosted + version: "9.3.0" octo_image: dependency: transitive description: @@ -1041,90 +1082,90 @@ packages: dependency: "direct main" description: name: open_file - sha256: a070625d8684aa35a35d6701b91d684592f1ea03f5a737ee0d39332526d09421 + sha256: b22decdae85b459eac24aeece48f33845c6f16d278a9c63d75c5355345ca236b url: "https://pub.dev" source: hosted - version: "3.5.7" + version: "3.5.11" open_file_android: dependency: transitive description: name: open_file_android - sha256: eaa52421c5e10ba42eb3958d2632be0fc8b4f7e53556296064339d363caa2233 + sha256: "58141fcaece2f453a9684509a7275f231ac0e3d6ceb9a5e6de310a7dff9084aa" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.6" open_file_ios: dependency: transitive description: name: open_file_ios - sha256: "8d9c03495cf14ca70bdbf191894b822ba3b2629cc0046ee311cbbe504db66c44" + sha256: a5acd07ba1f304f807a97acbcc489457e1ad0aadff43c467987dd9eef814098f url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" open_file_linux: dependency: transitive description: name: open_file_linux - sha256: cd2088722048b9c40f8615c6d83005fe0726e0e447e9cdfb40c2b65477291f7d + sha256: d189f799eecbb139c97f8bc7d303f9e720954fa4e0fa1b0b7294767e5f2d7550 url: "https://pub.dev" source: hosted - version: "0.0.4" + version: "0.0.5" open_file_mac: dependency: transitive description: name: open_file_mac - sha256: "9d809f528cccc6dc9390caf50893eae9a6944e0f3b8a2558c7ad19e91c9244a1" + sha256: cd293f6750de6438ab2390513c99128ade8c974825d4d8128886d1cda8c64d01 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.4" open_file_platform_interface: dependency: transitive description: name: open_file_platform_interface - sha256: "14c50efb1a9667cb96e4fa68d601e6ad348fe337b02789834029b37ae3631498" + sha256: "101b424ca359632699a7e1213e83d025722ab668b9fd1412338221bf9b0e5757" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" open_file_web: dependency: transitive description: name: open_file_web - sha256: cfc9d6091a844e305a3698c45f47f5cd88aabb143665dcfb0f5fd6f7524d357e + sha256: e3dbc9584856283dcb30aef5720558b90f88036360bd078e494ab80a80130c4f url: "https://pub.dev" source: hosted - version: "0.0.3" + version: "0.0.4" open_file_windows: dependency: transitive description: name: open_file_windows - sha256: "2f4318d2d3958ec8d63b6dd4430c15b1fcb2fe7a2113e83c734584501a5c6d81" + sha256: d26c31ddf935a94a1a3aa43a23f4fff8a5ff4eea395fe7a8cb819cf55431c875 url: "https://pub.dev" source: hosted - version: "0.0.2" + version: "0.0.3" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" + sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" url: "https://pub.dev" source: hosted - version: "8.3.0" + version: "8.3.1" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" path: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_drawing: dependency: transitive description: @@ -1137,34 +1178,34 @@ packages: dependency: transitive description: name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" path_provider: dependency: "direct main" description: name: path_provider - sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e url: "https://pub.dev" source: hosted - version: "2.2.10" + version: "2.2.22" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.6.0" path_provider_linux: dependency: transitive description: @@ -1201,42 +1242,42 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb" + sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" url: "https://pub.dev" source: hosted - version: "11.3.1" + version: "11.4.0" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa" + sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc url: "https://pub.dev" source: hosted - version: "12.0.12" + version: "12.1.0" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0 + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 url: "https://pub.dev" source: hosted - version: "9.4.5" + version: "9.4.7" permission_handler_html: dependency: transitive description: name: permission_handler_html - sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851 + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" url: "https://pub.dev" source: hosted - version: "0.1.3+2" + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9 + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 url: "https://pub.dev" source: hosted - version: "4.2.3" + version: "4.3.0" permission_handler_windows: dependency: transitive description: @@ -1249,10 +1290,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "7.0.2" pie_chart: dependency: "direct main" description: @@ -1265,18 +1306,18 @@ packages: dependency: "direct main" description: name: pinput - sha256: "7bf9aa7d0eeb3da9f7d49d2087c7bc7d36cd277d2e94cc31c6da52e1ebb048d0" + sha256: "4c3f1b84768b47a56a1abdaca551bd7cef4ac673b882209039ecdf803a5d6e68" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.2" platform: dependency: transitive description: name: platform - sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: @@ -1297,10 +1338,10 @@ packages: dependency: transitive description: name: pointer_interceptor_ios - sha256: a6906772b3205b42c44614fcea28f818b1e5fdad73a4ca742a7bd49818d9c917 + sha256: "03c5fa5896080963ab4917eeffda8d28c90f22863a496fb5ba13bc10943e40e4" url: "https://pub.dev" source: hosted - version: "0.10.1" + version: "0.10.1+1" pointer_interceptor_platform_interface: dependency: transitive description: @@ -1313,10 +1354,10 @@ packages: dependency: transitive description: name: pointer_interceptor_web - sha256: "7a7087782110f8c1827170660b09f8aa893e0e9a61431dbbe2ac3fc482e8c044" + sha256: "460b600e71de6fcea2b3d5f662c92293c049c4319e27f0829310e5a953b3ee2a" url: "https://pub.dev" source: hosted - version: "0.10.2+1" + version: "0.10.3" pool: dependency: transitive description: @@ -1325,54 +1366,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.2" + posix: + dependency: transitive + description: + name: posix + sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" + url: "https://pub.dev" + source: hosted + version: "6.5.0" provider: dependency: "direct main" description: name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" url: "https://pub.dev" source: hosted - version: "6.1.2" - qr_code_scanner_plus: - dependency: "direct main" + version: "6.1.5+1" + pub_semver: + dependency: transitive description: - name: qr_code_scanner_plus - sha256: a0f1ac8e13299b3db2646635f252fe2ec67222b848b24ed34d11052faf080bfa + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.0.12" - recase: - dependency: transitive + version: "2.2.0" + qr_code_scanner_plus: + dependency: "direct main" description: - name: recase - sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + name: qr_code_scanner_plus + sha256: dae0596b2763c2fd0294f5cfddb1d3a21577ae4dc7fc1449eb5aafc957872f61 url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "2.1.1" record_mp3_plus: dependency: "direct main" description: name: record_mp3_plus - sha256: "654e2eb4ef028c1eaf73b981e9e2abd3756c61b0ee88dc6bc60416c474fbce5d" + sha256: e098bec0c4ef89b9a12d43d09ebb91d1328dc60e710c2040b6ab40a3fa5f8cd3 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" rive: dependency: "direct main" description: name: rive - sha256: cd45b071b288e4bef05f25423e1001a9b3218b81745deae18c9b4d2a2952cc56 + sha256: "2d7f0b0dd6c8368c3e5a47d0a38ee68306896920aa665b5bf59e7c589a6d35a2" url: "https://pub.dev" source: hosted - version: "0.13.14" - rive_common: + version: "0.14.4" + rive_native: dependency: transitive description: - name: rive_common - sha256: c7bf0781b1621629361579c300ac2f8aa1a238227a242202a596e82becc244d7 + name: rive_native + sha256: fad6aac822340fa14a2cbcdc8cd064da4b4c74d22a5f6c827a59538d67f200e4 url: "https://pub.dev" source: hosted - version: "0.4.11" + version: "0.1.4" rxdart: dependency: transitive description: @@ -1385,10 +1434,10 @@ packages: dependency: "direct main" description: name: safe_device - sha256: f4930fe80ef28d047d3e600a318d1549732a8910d2b4342e7fd785aea2b1453e + sha256: cf49ba0ad6f705d5d043bfd5dfbe87b386b63a6abca5ddf7d01938f87f683f78 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.8" share_plus: dependency: "direct main" description: @@ -1409,26 +1458,26 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.5.4" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" + sha256: "8374d6200ab33ac99031a852eba4c8eb2170c4bf20778b3e2c9eccb45384fb41" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.21" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1449,10 +1498,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" shared_preferences_windows: dependency: transitive description: @@ -1465,10 +1514,10 @@ packages: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shimmer: dependency: "direct main" description: @@ -1505,23 +1554,23 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.2" speech_to_text: dependency: "direct main" description: name: speech_to_text - sha256: "6cf8f284997490ebef1d68f8707bef57dcf083f43c0f915cc285428520bfe6be" + sha256: c07557664974afa061f221d0d4186935bea4220728ea9446702825e8b988db04 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.3.0" speech_to_text_platform_interface: dependency: transitive description: @@ -1530,6 +1579,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + speech_to_text_windows: + dependency: transitive + description: + name: speech_to_text_windows + sha256: "2c9846d18253c7bbe059a276297ef9f27e8a2745dead32192525beb208195072" + url: "https://pub.dev" + source: hosted + version: "1.0.0+beta.8" sprintf: dependency: transitive description: @@ -1542,18 +1599,42 @@ packages: dependency: transitive description: name: sqflite - sha256: ff5a2436ef8ebdfda748fbfe957f9981524cb5ff11e7bafa8c42771840e8a788 + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 url: "https://pub.dev" source: hosted - version: "2.3.3+2" + version: "2.4.2" + sqflite_android: + dependency: "direct overridden" + description: + name: sqflite_android + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + url: "https://pub.dev" + source: hosted + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4" + sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" url: "https://pub.dev" source: hosted - version: "2.5.4+4" + version: "2.5.6" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" sse: dependency: transitive description: @@ -1574,58 +1655,58 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.1" synchronized: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.4.0" table_calendar: dependency: "direct main" description: name: table_calendar - sha256: "4ca32b2fc919452c9974abd4c6ea611a63e33b9e4f0b8c38dba3ac1f4a6549d1" + sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.2.0" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.9" timezone: dependency: transitive description: @@ -1662,58 +1743,50 @@ packages: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - universal_platform: - dependency: transitive - description: - name: universal_platform - sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.4.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.2" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" url: "https://pub.dev" source: hosted - version: "6.3.10" + version: "6.3.28" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.4.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.5" url_launcher_platform_interface: dependency: transitive description: @@ -1726,74 +1799,74 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.2" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.5" uuid: dependency: transitive description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489" url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.3" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" + sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.1.19" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.1.13" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" + sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74" url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.2.0" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "15.0.2" web: dependency: transitive description: name: web - sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web_socket: dependency: transitive description: @@ -1814,42 +1887,42 @@ packages: dependency: "direct main" description: name: wifi_iot - sha256: "4a3301f71663a908bb50ffe6d9dc9e8b8383fab48368accf978409bde96e9aca" + sha256: "0861aed0c0afd6031b4337811d31cdd181c594a8a2c73e94826ea21d2cb4707b" url: "https://pub.dev" source: hosted - version: "0.3.19+1" + version: "0.3.19+2" win32: dependency: "direct overridden" description: name: win32 - sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.5.4" + version: "5.15.0" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" xml: dependency: transitive description: name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.6.1" yaml: dependency: transitive description: name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + dart: ">=3.11.0 <4.0.0" + flutter: ">=3.38.4" diff --git a/pubspec.yaml b/pubspec.yaml index a3814153..6b5a77a0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,46 +37,52 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.5 - font_awesome_flutter: ^10.2.1 - http: ^1.2.2 - provider: ^6.0.3 - shared_preferences: ^2.0.15 - fluttertoast: ^8.0.9 - image_picker: ^1.1.2 - url_launcher: ^6.1.6 - flutter_launcher_icons: ^0.13.1 - package_info_plus: ^8.3.0 + font_awesome_flutter: ^10.12.0 + http: ^1.6.0 + provider: ^6.1.5+1 + shared_preferences: ^2.5.4 + fluttertoast: ^9.0.0 + image_picker: ^1.2.1 + url_launcher: ^6.3.2 + flutter_launcher_icons: ^0.14.4 + package_info_plus: ^8.3.1 share_plus: ^10.1.4 - flutter_local_notifications: ^17.2.2 - cached_network_image: ^3.2.2 - carousel_slider: ^5.0.0 - intl: ^0.19.0 + flutter_local_notifications: ^17.2.4 + cached_network_image: ^3.4.1 + carousel_slider: ^5.1.2 + intl: ^0.20.2 flutter_typeahead: ^5.2.0 - speech_to_text: ^7.0.0 - firebase_core: ^3.4.1 - firebase_messaging: ^15.1.1 - qr_code_scanner_plus: ^2.0.12 - flutter_sound: ^9.3.1 - permission_handler: ^11.3.1 - rive: ^0.13.13 - another_flushbar: - pinput: - audioplayers: ^6.1.0 - flare_flutter: ^3.0.2 - signature: ^5.3.0 - flutter_svg: ^2.0.10+1 - file_picker: ^8.1.2 - record_mp3_plus: any - path_provider: ^2.1.0 - open_file: ^3.3.2 + speech_to_text: ^7.3.0 + firebase_core: ^3.15.2 + firebase_messaging: ^15.2.10 + qr_code_scanner_plus: ^2.1.1 + flutter_sound: ^9.30.0 + permission_handler: ^11.4.0 + rive: ^0.14.4 + another_flushbar: ^1.12.32 + pinput: ^6.0.2 + audioplayers: ^6.6.0 + + flare_flutter: + git: + url: https://github.com/mbfakourii/Flare-Flutter.git + path: flare_flutter + ref: remove_hashValues + + signature: ^5.5.0 + flutter_svg: ^2.2.3 + file_picker: ^8.3.7 + record_mp3_plus: ^1.4.1 + path_provider: ^2.1.5 + open_file: ^3.5.11 localization: ^2.1.0 dotted_border: ^2.1.0 - lottie: ^3.1.2 + lottie: ^3.3.2 shimmer: ^3.0.0 date_picker_timeline: ^1.2.6 flutter_advanced_switch: ^3.0.1 table_calendar: ^3.0.8 - image_cropper: ^8.0.2 + image_cropper: ^8.1.0 flutter_timezone: ^3.0.1 device_calendar: ^4.3.3 pie_chart: ^5.4.0 @@ -85,32 +91,28 @@ dependencies: # buttons_tabbar: ^1.1.2 flutter_custom_month_picker: ^0.1.3 local_auth: ^2.3.0 - google_api_availability: ^5.0.0 - huawei_push: ^6.13.0+300 - huawei_location: ^6.14.2+301 + google_api_availability: ^5.0.1 + huawei_push: ^6.14.0+300 + huawei_location: ^6.16.0+300 geolocator: ^9.0.2 - nfc_manager: ^3.2.0 - wifi_iot: ^0.3.19+1 - just_audio: ^0.9.30 - safe_device: ^1.2.1 + nfc_manager: ^4.1.1 + wifi_iot: ^0.3.19+2 + just_audio: ^0.9.46 + safe_device: ^1.3.8 toggle_switch: ^2.3.0 - clipboard: ^2.0.2 + clipboard: ^3.0.14 tree_view_flutter: ^1.0.2 audio_waveforms: ^1.3.0 signalr_netcore: ^1.4.4 - ellipsized_text: ^1.2.0 + ellipsized_text: ^2.0.0 - local_auth_darwin: any + local_auth_darwin: ^1.4.0 dev_dependencies: flutter_test: sdk: flutter dependency_overrides: + sqflite_android: 2.4.1 win32: ^5.5.4 - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. flutter_lints: ^2.0.0 flutter_icons: