From df36b3405ee19417863a441bdde51638dc24b1c9 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 8 Jan 2023 16:31:37 +0300 Subject: [PATCH 1/6] IOS and Android release configurations --- android/AtomsSA-playStore.jks | Bin 0 -> 2575 bytes android/app/build.gradle | 28 +- android/key.properties | 4 + ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.plist/Info.plist | 53 + ios/Runner.xcodeproj/project.pbxproj | 350 +++++- .../contents.xcworkspacedata | 3 + ios/Runner/Info.plist | 12 +- lib/controllers/api_routes/urls.dart | 2 +- lib/main.dart | 13 +- pubspec.lock | 1039 ----------------- 13 files changed, 450 insertions(+), 1058 deletions(-) create mode 100644 android/AtomsSA-playStore.jks create mode 100644 android/key.properties create mode 100644 ios/Runner.plist/Info.plist delete mode 100644 pubspec.lock diff --git a/android/AtomsSA-playStore.jks b/android/AtomsSA-playStore.jks new file mode 100644 index 0000000000000000000000000000000000000000..0d4a261e913fb6a5bc64b367190a310afd79d433 GIT binary patch literal 2575 zcma)+c{mh`8pda3rZZzC>rAo}!YEnFSi+zNhh(orGswP7)?&s|7;D+rhCz16awZ&0 z$&x)=veXeX*@=isr{}r%Ip^NL?)~F?zUTYB-~0agVyVY|0Rh2SD!hvWE*E1IvyTLF z0t>0|MhF#N_Y+rPsnCZ1lAsI-75d~S&igr89KZbAg*XNT6;h!(KcOa;^tS_w#M)xj z|2Yv@c?j=u!qF4k6>|co>I23>t=72lK7y*f3 z2v82fouguXx>vj^jTHyI&#c)~MwKNlA3!3$dbZQUC!07hUhdNTE?Bqys=|O5LYXI>udZhm1jd9Zv zxy1|Z5lbs)@)cetm8TN67+5pDODc)Gjo+WKdsLpjrmLJlXf;mDC}#M5Y}K&pU-5Cl z9KO{qOb5KuPkgpuDFgvc*2HSLeE(K5w?x4xQjTuqXrCN%^RzNYzGHj*;6Upfeqi}S zgyyG5jgr{qy6xz2>D#W0b;Fgj(wMG|kgDe7>m~O89SI^`l+qhln~+9@Fys z1^2Rly1iN?_30aO z;0E>?D$6e8j(q9b5eQ61VC+*?lbxm!L(agZ7P!^8{`vO3{f@5>$ZaxSu(l}AK|E=e zhHLh4vos^ZGS!^gFfLsKc_#)FdXRlizQrIOXHswS#R~JUZ+;AxxnnWk+SO=bm5T@I zr}e4?$FBq!gBmMbqY&zA{U=e!Yfgu(q24BHJZGP$=oE=mtVnasko#h)>k8yX1Zx_M zv>3CUjKF9;tKW2j=DN|9iT=)#2baGb&vU49R4UQLG}%H5i!hLP5OW zlGU-?#NTmSA+p^3{D_9uD+3J~wJEoo-z{G$-Rgo8Yv6c`&Mc!vX`#FRwmh*7BwlH^ zwFzEC;3wIuN~&baB#WtI^v?Mx#^2kE6ErmMTVV>)e>Uzsw;WbkCV@lVQW~tu#XnK4 z5o;*Qk$;^fxoj#`=6t5&nn0C8@(UkB)*Z-#Ns}eQ1gtw8w}^ z2<=`i00&p}_^GAdAEz_&k7Wvy*B-q*xWc$J*wwliBvW7cAmdy-X-A_Ftp>0N*02f2<{&+ea6>iq*J;8Y?EBPi=a%}F^dPn3__9OC9n62n0 zYEa)S8o4s+x+r8kP#){yT@0qmT+-_=)C0K)}y6^^XGlUuA7xF`2~LP7)m$@_jQK$$Vmi zn{E7m$~q;_*o5Suwmh&QDBYhYbvJ?vcJxZx7i>ysFhvRTDmKHm)FW3YtX>G9L_(5i*Qkau|6xwU^?hLIspxi{*I6YH!WNDEL&1sUw3fjuOlWpjY7aK z?g_Q@ZI4cZ&$=EAdnnBw_06B#HC@YY-w-%(p>Qwm=Ow!}8+Kp*L-hn#19v=4CTFZB zR#p>2S**T(CXr?$-ePGJCzpcS{vC1rDP z5`w5l%-jd%X?DLG-H02Be>lce4*-aDc_q5Cv+&%rS!MkPZkOT7KJLVYAbZ-)^$D^V zc%uWrhH!z3?Tly5Tg$p~tt}f?lPR++IAj0KQLasLFbrcG;i^??Q2w>#Q1%br~35UL&HCH3%cp-d7to_xK_h;CrIpE zTWY}FA>2#1ifMro;oTQuOQB`&tCAeaa*3Fq8un- z`V_JaD)p%o9W2CWtn15HvhZc-UT5X=$hOeLE2RgTCZx;L;O~CL=673BUb{=Q`MRgx z=GruLpk3P#e$Mfvxc#T-dSaof$b#Yr5xa8(5AAB@i}0=rdNSLq726!~%2ZaH%99qA z&0dop=$gtA3$yxYXVI_puH;40cQ9*b5g`lVI R7)iuO>+Gsc5EvL!_!pQMnLPji literal 0 HcmV?d00001 diff --git a/android/app/build.gradle b/android/app/build.gradle index e17c83eb..6edcaa35 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,6 +26,13 @@ apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + + android { compileSdkVersion 33 ndkVersion flutter.ndkVersion @@ -37,7 +44,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.test_sa" + 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 @@ -46,14 +53,23 @@ android { versionName flutterVersionName } - buildTypes { + signingConfigs { release { - proguardFiles getDefaultProguardFile('proguard-android.txt'), - 'proguard-rules.pro' - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { + debug { signingConfig signingConfigs.debug } + release { + minifyEnabled true + shrinkResources true + signingConfig signingConfigs.release + } } } diff --git a/android/key.properties b/android/key.properties new file mode 100644 index 00000000..6a8cd33e --- /dev/null +++ b/android/key.properties @@ -0,0 +1,4 @@ +storePassword=Cloud@AtomsSA +keyPassword=Cloud@AtomsSA +keyAlias=playstore +storeFile=/Users/sikandersaleem/StudioProjects/cloudsolutions-atoms/android/AtomsSA-playStore.jks diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 8d4492f9..9625e105 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee8..ec97fc6f 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee8..c4855bfe 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Runner.plist/Info.plist b/ios/Runner.plist/Info.plist new file mode 100644 index 00000000..f4d2d02d --- /dev/null +++ b/ios/Runner.plist/Info.plist @@ -0,0 +1,53 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Test Sa + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ATOMS + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSSpeechRecognitionUsageDescription + Recognize Speech + NSMicrophoneUsageDescription + To Record Audio + + diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 59490632..5454e4be 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -13,6 +13,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + F2A2A0FF9835A41EAE85C46C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EFA2032ACFCE75A326C4021 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -31,7 +32,9 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 21218448C05A6EE259A8A273 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4EFA2032ACFCE75A326C4021 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9CABA487766DBA12CD9795AB /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + C495935E3B272204B901FA13 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,23 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F2A2A0FF9835A41EAE85C46C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 577ED37A491ADCF557B4F6D9 /* Pods */ = { + isa = PBXGroup; + children = ( + 21218448C05A6EE259A8A273 /* Pods-Runner.debug.xcconfig */, + C495935E3B272204B901FA13 /* Pods-Runner.release.xcconfig */, + 9CABA487766DBA12CD9795AB /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +88,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 577ED37A491ADCF557B4F6D9 /* Pods */, + CF00C18CA99370AC196B5B50 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +116,14 @@ path = Runner; sourceTree = ""; }; + CF00C18CA99370AC196B5B50 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4EFA2032ACFCE75A326C4021 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +131,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 1EBE8111D78021B782F0E9D3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 82ACB2D948A573383205B7AC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -169,6 +197,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1EBE8111D78021B782F0E9D3 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -183,6 +233,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 82ACB2D948A573383205B7AC /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -254,6 +321,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -272,7 +340,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -288,13 +356,101 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Atoms; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.testSa; + MARKETING_VERSION = 1.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-l\"sqlite3\"", + "-l\"z\"", + "-framework", + "\"AVFoundation\"", + "-framework", + "\"CoreTelephony\"", + "-framework", + "\"FBLPromises\"", + "-framework", + "\"FMDB\"", + "-framework", + "\"FirebaseCore\"", + "-framework", + "\"FirebaseCoreInternal\"", + "-framework", + "\"FirebaseInstallations\"", + "-framework", + "\"FirebaseMessaging\"", + "-framework", + "\"Foundation\"", + "-framework", + "\"GoogleDataTransport\"", + "-framework", + "\"GoogleUtilities\"", + "-framework", + "\"MTBBarcodeScanner\"", + "-framework", + "\"MediaPlayer\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"Security\"", + "-framework", + "\"SystemConfiguration\"", + "-framework", + "\"Toast\"", + "-framework", + "\"Try\"", + "-framework", + "\"UIKit\"", + "-framework", + "\"audioplayers_darwin\"", + "-framework", + "\"firebase_core\"", + "-framework", + "\"firebase_messaging\"", + "-framework", + "\"flutter_keyboard_visibility\"", + "-framework", + "\"flutter_local_notifications\"", + "-framework", + "\"flutter_sound\"", + "-framework", + "\"flutter_sound_core\"", + "-framework", + "\"fluttertoast\"", + "-framework", + "\"image_picker_ios\"", + "-framework", + "\"nanopb\"", + "-framework", + "\"package_info\"", + "-framework", + "\"path_provider_ios\"", + "-framework", + "\"permission_handler_apple\"", + "-framework", + "\"qr_code_scanner\"", + "-framework", + "\"share\"", + "-framework", + "\"shared_preferences_ios\"", + "-framework", + "\"speech_to_text\"", + "-framework", + "\"sqflite\"", + "-framework", + "\"url_launcher_ios\"", + "-weak_framework", + "\"UserNotifications\"", + "\"-lc++\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.hmg.atoms; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -325,6 +481,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -349,7 +506,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -380,6 +537,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -398,7 +556,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -416,13 +574,101 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Atoms; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.testSa; + MARKETING_VERSION = 1.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-l\"sqlite3\"", + "-l\"z\"", + "-framework", + "\"AVFoundation\"", + "-framework", + "\"CoreTelephony\"", + "-framework", + "\"FBLPromises\"", + "-framework", + "\"FMDB\"", + "-framework", + "\"FirebaseCore\"", + "-framework", + "\"FirebaseCoreInternal\"", + "-framework", + "\"FirebaseInstallations\"", + "-framework", + "\"FirebaseMessaging\"", + "-framework", + "\"Foundation\"", + "-framework", + "\"GoogleDataTransport\"", + "-framework", + "\"GoogleUtilities\"", + "-framework", + "\"MTBBarcodeScanner\"", + "-framework", + "\"MediaPlayer\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"Security\"", + "-framework", + "\"SystemConfiguration\"", + "-framework", + "\"Toast\"", + "-framework", + "\"Try\"", + "-framework", + "\"UIKit\"", + "-framework", + "\"audioplayers_darwin\"", + "-framework", + "\"firebase_core\"", + "-framework", + "\"firebase_messaging\"", + "-framework", + "\"flutter_keyboard_visibility\"", + "-framework", + "\"flutter_local_notifications\"", + "-framework", + "\"flutter_sound\"", + "-framework", + "\"flutter_sound_core\"", + "-framework", + "\"fluttertoast\"", + "-framework", + "\"image_picker_ios\"", + "-framework", + "\"nanopb\"", + "-framework", + "\"package_info\"", + "-framework", + "\"path_provider_ios\"", + "-framework", + "\"permission_handler_apple\"", + "-framework", + "\"qr_code_scanner\"", + "-framework", + "\"share\"", + "-framework", + "\"shared_preferences_ios\"", + "-framework", + "\"speech_to_text\"", + "-framework", + "\"sqflite\"", + "-framework", + "\"url_launcher_ios\"", + "-weak_framework", + "\"UserNotifications\"", + "\"-lc++\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.hmg.atoms; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -438,13 +684,101 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Atoms; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.testSa; + MARKETING_VERSION = 1.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-l\"sqlite3\"", + "-l\"z\"", + "-framework", + "\"AVFoundation\"", + "-framework", + "\"CoreTelephony\"", + "-framework", + "\"FBLPromises\"", + "-framework", + "\"FMDB\"", + "-framework", + "\"FirebaseCore\"", + "-framework", + "\"FirebaseCoreInternal\"", + "-framework", + "\"FirebaseInstallations\"", + "-framework", + "\"FirebaseMessaging\"", + "-framework", + "\"Foundation\"", + "-framework", + "\"GoogleDataTransport\"", + "-framework", + "\"GoogleUtilities\"", + "-framework", + "\"MTBBarcodeScanner\"", + "-framework", + "\"MediaPlayer\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"Security\"", + "-framework", + "\"SystemConfiguration\"", + "-framework", + "\"Toast\"", + "-framework", + "\"Try\"", + "-framework", + "\"UIKit\"", + "-framework", + "\"audioplayers_darwin\"", + "-framework", + "\"firebase_core\"", + "-framework", + "\"firebase_messaging\"", + "-framework", + "\"flutter_keyboard_visibility\"", + "-framework", + "\"flutter_local_notifications\"", + "-framework", + "\"flutter_sound\"", + "-framework", + "\"flutter_sound_core\"", + "-framework", + "\"fluttertoast\"", + "-framework", + "\"image_picker_ios\"", + "-framework", + "\"nanopb\"", + "-framework", + "\"package_info\"", + "-framework", + "\"path_provider_ios\"", + "-framework", + "\"permission_handler_apple\"", + "-framework", + "\"qr_code_scanner\"", + "-framework", + "\"share\"", + "-framework", + "\"shared_preferences_ios\"", + "-framework", + "\"speech_to_text\"", + "-framework", + "\"sqflite\"", + "-framework", + "\"url_launcher_ios\"", + "-weak_framework", + "\"UserNotifications\"", + "\"-lc++\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.hmg.atoms; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -478,4 +812,4 @@ /* End XCConfigurationList section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; -} \ No newline at end of file +} diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 4cb4d755..df02890c 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Test Sa + Atoms SA CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - ATOMS + Atoms SA CFBundlePackageType APPL CFBundleShortVersionString @@ -45,5 +45,13 @@ CADisableMinimumFrameDurationOnPhone + NSSpeechRecognitionUsageDescription + This app requires permission for Speech Recognition for speech to text functionality. + NSMicrophoneUsageDescription + This app requires permission for Record Audio for to allow user to send voice notes + NSPhotoLibraryUsageDescription + This app requires permission to access photo gallery to allow user to attach images + NSCameraUsageDescription + This app requires permission to access Camera to allow user to attach images diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index f09068a2..eeba5f3e 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -1,7 +1,7 @@ class URLs{ URLs._(); static const host2 = "http://194.163.164.213/atoms/api"; - static const host1 = "http://194.163.164.213/atoms/api"; + static const host1 = "https://atoms.hmg.com/api"; // API Routes static const login = "/handle/user/login"; // post diff --git a/lib/main.dart b/lib/main.dart index e2deac02..5ba0e835 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,6 @@ +import 'dart:io'; + +import 'package:firebase_core/firebase_core.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; @@ -44,7 +47,15 @@ import 'views/pages/device_transfer/request_device_transfer.dart'; import 'views/pages/device_transfer/track_device_transfer.dart'; import 'views/widgets/hospitals/single_hospital_picker.dart'; -void main() { +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + if (Platform.isIOS) { + await Firebase.initializeApp( + options: const FirebaseOptions(apiKey: "AIzaSyACQkSleNwU1jzEKR5ho1uSfZERokwwAbc", appId: "1:973582662416:ios:bc4a8061444c6a08fbc395", messagingSenderId: "973582662416", projectId: "atoms-fb912"), + ); + } else { + await Firebase.initializeApp(); + } runApp( ChangeNotifierProvider( create: (_) => SettingProvider(), diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 6dc640b6..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,1039 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.11" - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "3.3.5" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - audioplayers: - dependency: "direct main" - description: - name: audioplayers - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - audioplayers_android: - dependency: transitive - description: - name: audioplayers_android - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - audioplayers_darwin: - dependency: transitive - description: - name: audioplayers_darwin - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - audioplayers_linux: - dependency: transitive - description: - name: audioplayers_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - audioplayers_platform_interface: - dependency: transitive - description: - name: audioplayers_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - audioplayers_web: - dependency: transitive - description: - name: audioplayers_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - audioplayers_windows: - dependency: transitive - description: - name: audioplayers_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.3" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - carousel_slider: - dependency: "direct main" - description: - name: carousel_slider - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.1" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.5" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - cloud_firestore_platform_interface: - dependency: transitive - description: - name: cloud_firestore_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "5.10.0" - cloud_firestore_web: - dependency: transitive - description: - name: cloud_firestore_web - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.0" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" - cross_file: - dependency: transitive - description: - name: cross_file - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.3+2" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.8" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "4.5.2" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - url: "https://pub.dartlang.org" - source: hosted - version: "14.2.0" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.9" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.10" - flare_flutter: - dependency: "direct main" - description: - name: flare_flutter - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - url: "https://pub.dartlang.org" - source: hosted - version: "3.3.0" - flutter_keyboard_visibility: - dependency: transitive - description: - name: flutter_keyboard_visibility - url: "https://pub.dartlang.org" - source: hosted - version: "5.4.0" - flutter_keyboard_visibility_linux: - dependency: transitive - description: - name: flutter_keyboard_visibility_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_macos: - dependency: transitive - description: - name: flutter_keyboard_visibility_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_platform_interface: - dependency: transitive - description: - name: flutter_keyboard_visibility_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - flutter_keyboard_visibility_web: - dependency: transitive - description: - name: flutter_keyboard_visibility_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - flutter_keyboard_visibility_windows: - dependency: transitive - description: - name: flutter_keyboard_visibility_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - flutter_launcher_icons: - dependency: "direct main" - description: - name: flutter_launcher_icons - url: "https://pub.dartlang.org" - source: hosted - version: "0.10.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - url: "https://pub.dartlang.org" - source: hosted - version: "12.0.4" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.0" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.7" - flutter_sound: - dependency: "direct main" - description: - name: flutter_sound - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.13" - flutter_sound_platform_interface: - dependency: transitive - description: - name: flutter_sound_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.13" - flutter_sound_web: - dependency: transitive - description: - name: flutter_sound_web - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.13" - flutter_svg: - dependency: transitive - description: - name: flutter_svg - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.6" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_typeahead: - dependency: "direct main" - description: - name: flutter_typeahead - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.1" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - url: "https://pub.dartlang.org" - source: hosted - version: "8.1.2" - font_awesome_flutter: - dependency: "direct main" - description: - name: font_awesome_flutter - url: "https://pub.dartlang.org" - source: hosted - version: "10.3.0" - graphs: - dependency: transitive - description: - name: graphs - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.0" - http: - dependency: "direct main" - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - image: - dependency: transitive - description: - name: image - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.2" - image_picker: - dependency: "direct main" - description: - name: image_picker - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.6" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.5+4" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.10" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - url: "https://pub.dartlang.org" - source: hosted - version: "0.8.6+4" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.6.2" - intl: - dependency: "direct main" - description: - name: intl - url: "https://pub.dartlang.org" - source: hosted - version: "0.17.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - json_annotation: - dependency: transitive - description: - name: json_annotation - url: "https://pub.dartlang.org" - source: hosted - version: "4.7.0" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - logger: - dependency: transitive - description: - name: logger - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - mime: - dependency: transitive - description: - name: mime - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - nested: - dependency: transitive - description: - name: nested - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - octo_image: - dependency: transitive - description: - name: octo_image - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - package_info: - dependency: "direct main" - description: - name: package_info - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_drawing: - dependency: transitive - description: - name: path_drawing - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.11" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.22" - path_provider_ios: - dependency: transitive - description: - name: path_provider_ios - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.11" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.5" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - url: "https://pub.dartlang.org" - source: hosted - version: "10.2.0" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - url: "https://pub.dartlang.org" - source: hosted - version: "10.2.0" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - url: "https://pub.dartlang.org" - source: hosted - version: "9.0.7" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "3.9.0" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - pointycastle: - dependency: transitive - description: - name: pointycastle - url: "https://pub.dartlang.org" - source: hosted - version: "3.6.2" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - provider: - dependency: "direct main" - description: - name: provider - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.5" - qr_code_scanner: - dependency: "direct main" - description: - name: qr_code_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - recase: - dependency: transitive - description: - name: recase - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.0" - rive: - dependency: "direct main" - description: - name: rive - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.1" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.27.7" - share: - dependency: "direct main" - description: - name: share - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.15" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.14" - shared_preferences_ios: - dependency: transitive - description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - signature: - dependency: "direct main" - description: - name: signature - url: "https://pub.dartlang.org" - source: hosted - version: "5.3.0" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - speech_to_text: - dependency: "direct main" - description: - name: speech_to_text - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.1" - speech_to_text_macos: - dependency: transitive - description: - name: speech_to_text_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - speech_to_text_platform_interface: - dependency: transitive - description: - name: speech_to_text_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - sqflite: - dependency: transitive - description: - name: sqflite - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0+2" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - synchronized: - dependency: transitive - description: - name: synchronized - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0+3" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - timezone: - dependency: transitive - description: - name: timezone - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.1" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.7" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.22" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.17" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - uuid: - dependency: transitive - description: - name: uuid - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.7" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.3" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.0+2" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" - yaml: - dependency: transitive - description: - name: yaml - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.18.0 <3.0.0" - flutter: ">=3.3.0" From f2aba4b924252263864111ed55767ba416770666 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 15 Jan 2023 11:06:53 +0300 Subject: [PATCH 2/6] config files --- ios/Podfile | 41 + ios/Podfile.lock | 216 ++++ ios/Runner.plist/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 284395 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1891 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 3669 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1167 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 3472 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 6834 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1891 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 5959 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 11888 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 2706 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 8746 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 3413 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 10986 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 11888 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 23268 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 5001 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 16092 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 5475 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 17518 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 20538 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner.plist/Base.lproj/Main.storyboard | 26 + ios/Runner.plist/GeneratedPluginRegistrant.h | 19 + ios/Runner.plist/GeneratedPluginRegistrant.m | 133 +++ ios/Runner.plist/Runner-Bridging-Header.h | 1 + pubspec.lock | 1025 +++++++++++++++++ 36 files changed, 1661 insertions(+) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 ios/Runner.plist/AppDelegate.swift create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner.plist/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner.plist/Base.lproj/Main.storyboard create mode 100644 ios/Runner.plist/GeneratedPluginRegistrant.h create mode 100644 ios/Runner.plist/GeneratedPluginRegistrant.m create mode 100644 ios/Runner.plist/Runner-Bridging-Header.h create mode 100644 pubspec.lock diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..2c068c40 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..cbf76fea --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,216 @@ +PODS: + - audioplayers_darwin (0.0.1): + - Flutter + - Firebase/CoreOnly (10.3.0): + - FirebaseCore (= 10.3.0) + - Firebase/Messaging (10.3.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 10.3.0) + - firebase_core (2.4.1): + - Firebase/CoreOnly (= 10.3.0) + - Flutter + - firebase_messaging (14.2.1): + - Firebase/Messaging (= 10.3.0) + - firebase_core + - Flutter + - FirebaseCore (10.3.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreInternal (10.3.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseInstallations (10.3.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - PromisesObjC (~> 2.1) + - FirebaseMessaging (10.3.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - nanopb (< 2.30910.0, >= 2.30908.0) + - Flutter (1.0.0) + - flutter_keyboard_visibility (0.0.1): + - Flutter + - flutter_local_notifications (0.0.1): + - Flutter + - flutter_sound (9.2.13): + - Flutter + - flutter_sound_core (= 9.2.13) + - flutter_sound_core (9.2.13) + - fluttertoast (0.0.2): + - Flutter + - Toast + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - GoogleDataTransport (9.2.0): + - GoogleUtilities/Environment (~> 7.7) + - nanopb (< 2.30910.0, >= 2.30908.0) + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/AppDelegateSwizzler (7.10.0): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (7.10.0): + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.10.0): + - GoogleUtilities/Environment + - GoogleUtilities/Network (7.10.0): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.10.0)" + - GoogleUtilities/Reachability (7.10.0): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (7.10.0): + - GoogleUtilities/Logger + - image_picker_ios (0.0.1): + - Flutter + - MTBBarcodeScanner (5.0.11) + - nanopb (2.30909.0): + - nanopb/decode (= 2.30909.0) + - nanopb/encode (= 2.30909.0) + - nanopb/decode (2.30909.0) + - nanopb/encode (2.30909.0) + - package_info (0.0.1): + - Flutter + - path_provider_ios (0.0.1): + - Flutter + - permission_handler_apple (9.0.4): + - Flutter + - PromisesObjC (2.1.1) + - qr_code_scanner (0.2.0): + - Flutter + - MTBBarcodeScanner + - share (0.0.1): + - Flutter + - shared_preferences_ios (0.0.1): + - Flutter + - speech_to_text (0.0.1): + - Flutter + - Try + - sqflite (0.0.2): + - Flutter + - FMDB (>= 2.7.5) + - Toast (4.0.0) + - Try (2.1.1) + - url_launcher_ios (0.0.1): + - Flutter + +DEPENDENCIES: + - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) + - Flutter (from `Flutter`) + - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) + - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - package_info (from `.symlinks/plugins/package_info/ios`) + - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) + - share (from `.symlinks/plugins/share/ios`) + - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) + - speech_to_text (from `.symlinks/plugins/speech_to_text/ios`) + - sqflite (from `.symlinks/plugins/sqflite/ios`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + +SPEC REPOS: + trunk: + - Firebase + - FirebaseCore + - FirebaseCoreInternal + - FirebaseInstallations + - FirebaseMessaging + - flutter_sound_core + - FMDB + - GoogleDataTransport + - GoogleUtilities + - MTBBarcodeScanner + - nanopb + - PromisesObjC + - Toast + - Try + +EXTERNAL SOURCES: + audioplayers_darwin: + :path: ".symlinks/plugins/audioplayers_darwin/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" + Flutter: + :path: Flutter + flutter_keyboard_visibility: + :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + flutter_sound: + :path: ".symlinks/plugins/flutter_sound/ios" + fluttertoast: + :path: ".symlinks/plugins/fluttertoast/ios" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" + package_info: + :path: ".symlinks/plugins/package_info/ios" + path_provider_ios: + :path: ".symlinks/plugins/path_provider_ios/ios" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + qr_code_scanner: + :path: ".symlinks/plugins/qr_code_scanner/ios" + share: + :path: ".symlinks/plugins/share/ios" + shared_preferences_ios: + :path: ".symlinks/plugins/shared_preferences_ios/ios" + speech_to_text: + :path: ".symlinks/plugins/speech_to_text/ios" + sqflite: + :path: ".symlinks/plugins/sqflite/ios" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + +SPEC CHECKSUMS: + audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 + Firebase: f92fc551ead69c94168d36c2b26188263860acd9 + firebase_core: bf59c32d2e53814f558efa20840c1902fa2fe461 + firebase_messaging: ee597229fc260f8fa491fa8f2d4a32dfbfa406fa + FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a + FirebaseCoreInternal: 29b76f784d607df8b2a1259d73c3f04f1210137b + FirebaseInstallations: e2f26126089dcf41e215f7b8925af8d953c7d602 + FirebaseMessaging: e345b219fd15d325f0cf2fef28cb8ce00d851b3f + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 + flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + flutter_sound: c60effa2a350fb977885f0db2fbc4c1ad5160900 + flutter_sound_core: 26c10e5832e76aaacfae252d8925232281c486ae + fluttertoast: eb263d302cc92e04176c053d2385237e9f43fad0 + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f + GoogleUtilities: bad72cb363809015b1f7f19beb1f1cd23c589f95 + image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb + MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb + nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 + path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce + PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb + qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e + share: 0b2c3e82132f5888bccca3351c504d0003b3b410 + shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad + speech_to_text: b43a7d99aef037bd758ed8e45d79bbac035d2dfe + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 + Try: 5ef669ae832617b3cee58cb2c6f99fb767a4ff96 + url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de + +PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 + +COCOAPODS: 1.11.3 diff --git a/ios/Runner.plist/AppDelegate.swift b/ios/Runner.plist/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/ios/Runner.plist/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4152ccf7183bd82966b91193d97eecb6bdde0e32 GIT binary patch literal 284395 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%0DlTlR!NWW)3C(^=4z`fs>#*bs%XZST!3n|ECB*9 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⁣kPMCg-oPhZG+#)6S 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..562fa04274e97471f564f9e69dc215725d7545f0 GIT binary patch literal 704 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 z z?hV(hX-SoG?6R+Nq5#x~We*x`y|!cHlD0>8?0s(UVK*Or=&8N`^uUqu73{fJ5npqc2Hp&eFxvWo>LRd&!;=zw?c7Ck3z1qF6 z^9S>q(@R_G-nV*DT{1>^aZxhT?*>eAh!r6ZMJNKQuSz5;OpBJ5+BW!nqG?P_P5zeB zs`t{90l#}GjM_0GOEEPa;X z%7gvZIqFxh>}<_!T-REM)k$uZ8ZS&KY0M1B5hDx#{dvNeA0;Li?I5w9Lef;Y7N~`P-n_o^8 ztf}cI%&XvQKDYG-#}<$OdcV(O633WXU;n7&SYp-KLNHYp9LL~Mhb)J1f>UsSt%X7XeBLnXIome)#NpG z35jzO$IiXP*${oP;mm%$dnlkT(q`y}nz|5XPg7|iy`(OH&(=_UIHXdulo@vknc$k+ zp*9a+{Ql^Lix!5rsnnO1iU4nK<&sUA&pMH3D*@Aa9u$G*A*0S gT|oiY6%=s&H)A0#pQF%GHCOAOJoz$SFMF9b6n-*0Rgm}sWeJQ+9Awi<@^8dU!F0B?#1Ho3F`lW*ImE`44=p(1-8DKzcI!ZN&bf@*u1|*z$U7N zpc(A)&D%b=v$ZZ@L7O-8lxFgV#1W4OS4b%bZVYUCw)|#kSv~ptGuLO+N5a9M9Y25( z0b?|V{xzFdbiu&J=Y6QzEp8346YE?-DRi2t|lP zSRfk*xny936ixr@xuNqTGhNMf-+m}`e`8Ia;j^>4LV1Ge{z`PHMwB%}PC#d8&Rol(%V4f zqp1A2-+7-G-|xZ0Y3-9mQZSfikc&yX!$y<$`;qzqJSBka=y&^ok_-l$-q1_C}vB^565WJwm?)tUWo;rJO@=)s>c{ZjAs`X zhi=7w`kj4~3)Ly_#+X=P%eFutI3ci)GLs0(NeHv+qJIr@&Q4 zA@YM!rLEin-NVcRL88lp6h`1CW|ImI`%4aWaY;O>5BM`0rPM4=XweX2j=<^MbUF*D zcXv93yBszzI(h3BrjT4Gx8{_w3UE;ksHH?6fqZG3b0DhpYIYrgF?9;ZFaWj;+dS)AG}OSNlh&Pd)SX-WLB? zn|%pc`^`W!uR{n;Npwr%*P0v+Ub|a@9)eGux%~e40zCTX_eXy6NawC95Dd%}Wwdl) zX6~nN^xv3HX2v6l9raak_LZ2d8pMnSVg#|LAMn*UBx^5TP>m19QrMEJ93|0A4leSR zSg+`2$sPl}cw&89X@6Ob77u|WmrGo=(`IG__`{5Iqcc_*kYQnaY@%rn+MsK%nq#vp zp4iuM{zl~DSRzpFyBb%9<2h>tVJ;rKST3GXKp(Ep%wM^ax^Q#Oq#t8E(nG<(LN;re zv^+Sh)j?LTW2pMx?wt?sYMDx_zv`P}f&|I~ls?wx4pq9Kx%~F*wGT$)c|~0Zvmvb&*b$+cc5~jRU(FWc?aqRH$oz*TgoP@?QxdOt3 zQHn{mOZxHQcAg^^m#E{^qFzJtd;~$R2ztUC%LtxMe1x#ZK^@!XK_v(#$1K=i) z{jpY85~ez6VIryV2$N}u9s4+yPv==Z*wKxJt7io$EH zG+~Np1|Q%%H2g{7Duyr4++*I?%3J}j+1UpwN_n{^SAK)fSR4K(3Flf^%2&+N)M8rT z$JEx8(pTO`iGrU@n@1={nKp~WsN$q-_Fg!bHjEWFN~xJZKY3u_(7+Jbc=IJ2TB{Po zY^J&HtkvKNQ<6>>RY@v`%S^<|*kHAQm12bc_P?_5ae)km{X+x5Ymbgkec>DT9GN1D z5nK70c=SV8Uqo>~UtzE!^!TjYKj8@-3mDThuvO5VB+IKfC9;h3EYE{5{LK6{{tqn0 z2vv$48W{fDZ#-1+15O!N!qRd{a|6?XrtI`B8vGcno)hHYgg49Gh|snc@Q@OZ9G)rG zB&-_y&FIpIO7pv>O*~R5DE-Ray9%B!mhMCQION z@DNxli^8IWenM&a+!;rC45nZqQ{fAkG^J`bkYByy7e|Ln0SBz2Nv=L{`P%ngvC+~( zFl%To7%c|Ak_p>hl5kR%j$2}5+IlV@6qv;oJ}#yF6=_~+QySuTnMS!>nuZxjX(kBm zAD{i|j~;#D#CUBbU$dxb#iHt~wydg-N8kdVv7YhZcpf}9%Hj8t9LSe;G(;K@E{%RjPfiuS^Rqoq9Xyr`NL9rBr}yr>Z1pn7LjMl8 z39gwasDW7p+wLd{Dc4ps&)gTXg^L?v5a%&UqH)XQV7NsYSO5eAL}UNo3|{XjkHJa? zkWT*b_Pcwh1SDHZinqPzn#)%%21sJaC5)e&41KC7@|MGu-<2(lhOG7BJ;BC(_%yS|#iZum**Hf>Yck{GIp_f%q&L zM5?7Q@|C3aSTV??9Hbo-5S+6R^BIsVpf2U(S>-Z#-+{iK6SKAkIOZOgpS*FCMVSQ= z4ZM=WoK5c0+)^}UgDsGzTq^`~^atfrc6?eiCujmeI*{-lGkXeL3z-%zBV8zy!TlqW zN=5@Ab!%PI+7%tJg(nK)nc?Y?f{tljm$cV4B^zwJF5%S7<+DCGs*R}{EyDoK5o=er zxIW|7*)}*e@^567xF!K7PFZGYMtKabOjX!Y+P3xK>o?B@^mBJU@h2Cre&l#j0Arw@ zR?)-xplA5l2R5`d#;qOo$({+Xwbsa|%c6v+)Bi~2fjPv<=1YPiD#7gKxhhc8 z+-!kW#t^+Jgeq*j0;b$u72&+pn+t%1aRP~rLux{-1N8Pv(j>Zajq@}ZCLjrW;pD{s z-v8Lmmu%eB)qeI9tt|_z^?%!aY*s*eLivN)7V`}USc06~nRc`J*{pV8A;4I!xX&fW zEKbXrg%@COsBaB}gcnq(UmWiL;`bh&)2w50_M*;qO{Eb_KnnfN#&pl{aEV(W^uRRa z5l9}8RU92FuO(;DDbcYhx*oJme)9N1yB_w zDDki!z@kJ#yeLGEg<1T14K{nL3?Y`ll>Y7BC-OybIM&r%ySlB0V=+dVf))JZE>Z95 zYD^s+-=Cc=QdgQ}OR-#q^_{*v{jc4Fl`$Y6vMw3lx~QTy%CYK0)VhXPYRVrkV3{Kl z6CEkKZ^HfjcOUtSt2T7hSN6{6u@dEeDH7353AQBVx^%&{f!A#?{=j?)Qy-a{-E(jN zc2C&Fk6eGfqj*5*vB?=QsJ$u`0hncWg(GiVnc3c1H$LO#N?zZ{bnm3d+n|sXCm;;< zi6XINoqlw#CjLdPLEKldF|q*Ew$f$?C|D`k^(Ri(4AX( z$xh|;_?+C_!HPap}V z)UIQ)CT+naw=^W58q7U-bV5@H033V)ESEfRR4FGC_dY-R(XGuXiXsDm8+C>DA%Sb8 z+j><^;+h@ZBfgDbrlrr^i1YvfP6|4h*BuoX#$bwq4Oo$u%<5{c`@qhnmu~D@(pU#m z`$5miF)vI=Y&dWqI5PRE^|dg0NJtg|CJkUK6m_;Wr5-;qI}?CCDvUb@Pb02HMAqm1 z6NS}vNitu`1jB8J7Yd45v%FBJJj((?Lon63QUuJUAXum~H0NI^gHI2vz@(y)kKAyn zsj8~6f*dNsZk}aAqto7ur&2CBKTrtFs6@MvR5?>sQF|r`&UqR$r9Mzg&P?gt_vcH~ zW)XD|fSdquf=v|!@sG>{wI-#7ck>sF(y#>%L+2J|n@XO<80KgHFnBC*!-Qkeu;gy$ zW-G5C)#z;S%7!oXJ^1uU-48Wjl7TR(&9|@Z~jS*hLO0< ztF5^)5mQ*|mDGr4jnxv-99^(de*HVF%|Elas8c1=s2?(%T~wQS>Qu=Pd@NIRHN+wu zFIT1>S)}UZr2oi~i4!HuRoW0KbVpO}12+Y&A8cx`u8f2a*QVQI+A^kE0*K9t%$*vi znMOcq3&JEU8EH`!VT+Or7LKpqU^7FU6c8W=ywTORnG?OTvx?i}J!2lHbV*J0sB>V`Tt(^3k4?`}(t! zg`m13xxFp5rK|O!Umtt+_~^&3s~;@}*&;4v)MAY(-kx@ybCgNB4W4hE0DTa@I&kd4 zXOF!9@{McS>S3{Clw7&A_R6Ke4h3U&p!D}&80ekhk${&h$Sw)WB+_TNRog%lW7J>0 zD78GDPR882gcVVNA?B7R)E9sJ%RQ&C90WT#a4P@Y(c!zFKI-x4zuvOBI%2gaT@S#Y zz^4=|-3B$u0*mwu04+pR%8pDF|M^ExE8<+UvdYFbC`GJB+7uRGv1l+h?M<_oqY(BK0&xI7 zp;(luV0vb*R=^%L;Ea=~t8U zwRQmpQ*%TS4C`pF-QAyq{fsKv+EOhvHh)m3L(DSXm-AnRA|)QNbV(AuDjA*(z=c9I z0GQ?w2#{C(p=o{J)5i<~%-am9NH7q_qR5k%cBHr=8_2S0*yK3>lEA{m1DJf>wsrSB z-s2(bNbWf_xU*|<%mruTg4>gxe&9eBfP|jIlU!X8G$sMMGy~dfXTeGQSzUdgAcOzOl*S z8NY8NSMa4YWf4>+$eH051w<~UifxPPuU@<8fv0 z2cNm=qOaVwXK;MFZ*ZtTNO2-gw~rWB`%L{K!NnEb4Qtz)fVkFG#G4WjFM4x(-RJIj zDlgUc?q!1oK}0d>u+~(h$~Aqf1tzBREaIU~qsS0;uBiX@4D;t*7@I+`KOSdE8vN7>+kRL_U1x#206@+W&PC^ti8f=7drFvGZ<+wu^r;~O%*Y+8PZ>B&^aI$xZJvi zNE;Ac6m?Nu%8}XSTZovJ+!j0A@ zE#Y|#n2e4p6>$6c=^$mRruZAO!vu+i5X4eg=VGC>F$XqKSJ;xpIc6Q~ljtyI0yOjE zL*o)-6_XAujxyg@9bW7 zAeVz&0^BfQ5vF90T6Z7F-nzCSX_9JK4_Mn;xuzk$H|tYO$kv(DTClMosPB62*oW4) zY3pi~Shou#h#81v8NIG&oLe$6``@AbDC_+TXDvalKtN zS<<~@x!nVKn4F;Q@tpYHGXvdq$*QE=RvC2}M4o>B8pW8P$1OAVGX^LTZo`djv zpX_T(M=xH|M9oTs+%C+sohkZ!u4Hr-#0l1-nNpRkuqYLIgACS|TApDCvv!HvLeKS# zMRqnuotSEBtB5)F1HI$KoJM)MWcLlsQBr8)Q@5^fsEMe$ROIh(-hOl}_x;^R_YX{+ zc_78wJN?&(diE|p@s3q3T`lzyJDeM0A;>Ini9icW#GQw;pV(Lr`OBfCt3LgO zcW->SXW;f-M-&D^os>6i1STL+UkhYcXnoea%9TG4j`Ci8~@Xe(#z|du|dHM!Ngtx$SR@-^J*|x zXw4+U2f(FQuWXH4;wumJO5#fDSo&Y3*=5|jR%<-T-s91TWCvBKl1p&F*IK74$E4K{oNHWN|>&;_9xyLazPkMxWSu70*} z;Gn<+Ah&0ZjqlFH>3tUeJ(jbnBNT>y5TiRc=Bag zC~?OkL7O9PTGhg+Pq5vG^&i0i#hD_mB68ER%HF+0rh%fv@=Zh+fXX;Z)>kF@84K|T zqpzCA0!Nt+mr}B`yS=k9(=$?poiEYoy}O?KkI#N^wpf}eiHeBRS`h;$7kHW<%lFxU zjO6A5rIL=@Qo%Q_YX8AA{X%miG_dHSuqk0Jjf?KK+TW|d@f)K|XDykINd4(suKAmP zziU!BQQ>C`YWMzwH?Lo%G61kjAW$<~VSlY>BzNcWtVbd!^A)X+>Cu6{6%AD&EsBIo zhE074*_sIZyPLNqY&^hNwnIzhG8pD9nbldJ_|Lz->Ff7Bx%c=8Q`Q5IAH8nF3RiPb zMd+&(J4pj`-kmRx`6`X&3ko;N6D6yvs`|FeR*Xzc?>acte`-3y>GJyIj@3&+`gz2% zbU{OZL&yKECPC2MVp8ri&8A`!qR zAGn6LZ9Jr81tya(t<5Z{tHl1q=>yoNV~Fj_@=Vf<@_)$#uyjRz{l9$d#yfub%(owY z;mC>c#r2uCx{6IJI#MogN=M^*GS8VSb-)8)XRy`Hsf5c+ss(9fpve^2S@^{Wb>1b} z-!?A5_m&tQ8Fh&I;5#<>lcwpCIP<*`E{nc%^T)Ay|+pXQTcfB+`trDi+O4GL9 z^X%@;Emy3p%ixg!{DK68vIeOEA9JO#_q^ba%I_Q(V26oGyA0HyymHf`2Vd-mL``)t zRA8U|=B|(5u=RaAR(@(*$H;WSm$b^VG8N9gMVHg_s?2!V1!iZZ$0?frR$a~ibs~F6Pg5q z*|yT#TGET&z4>cDKNueo9*s(B0}6UMv3KCut!rA_(vdge*LYs}#PCan=Icg(_3rI$ z^_AcM`Ln}$5P(eia%_BZQL^4#;b55$a}IB;blRFygMQ4FvS?DR?8a3xae^c%t2_bZ2ZERz0QW#G0!N;OEOl1eHKmL*%(;0Zg%HkcV>NPrF`G=Y%m4=VwZwX#S^cPG6% zq`MbQH{HD!i;f*Pqq}j8!8YJg9x$>cS=KzbN~N0Tdhgxg4B7kK_heZrvsO@5SjWg1ruy-eeZp_ge~ zG4wKxD~4XCamCQfG_DwWnZ^}EFVnbU=w%vL482U_tu?eIgr1)~q{I-bEn%84ODrXX z!HX=>jCh7;Gy_q zO06?7UEuho86E>xqrbv;K1OE zaQmF?J#zAY-1pdEg-28nW|)bOoIQ5^`c-e+)(0(>wGBRi63!4j_8$yJ*E|YQRpX3@&_(Wj{^0#TczDhPiUyn-sWsD9 z3oZnwR-+#}Q#)|DaD2EW1=AnH8u&9nLSpS>&+hx{AG}~}fiWU%Ofev8B3WnF+qiZWydIeYoXld# z|nWM85vuGiU(D6ndNhAQpsX1^cg`zPm2)iA~_O=#CV58}Jf==K?yS z-O1s66uF;!q70u1eE1ZI401f;NQ-qywcvbM+ObTAb{?EYJVzTGp#{Q)<^*;D?o8RY zzW?xClu*tsm5Snpc~<3E^rg>!Y<)))Ga76K-~kLeMw5vOCB7w+P=SvNn77Ubv<_Lc zou?$^LIP(o44(z(@R~q{?S-sJZGB!OUY@a>812M@Lu7O>^geJjz-BU9N&eTpkGybr zP_sHk71*6y?VE6GPs^v?_x{aYb(F*g+#HOn?Z9L>9;&heyw+LaHF=_^=;s+kHVt;) z*-dMuZY;$N0}R6<1J#xfOwaz8Z~l1y z@T~EG5>)cB%6a^T%{_PDzN=?NlLxqLG~qxe#Asv>56#aJ5%R3!G^6ySF+-6WDwlV* z=ZaPe8WyG5+8Xp|Iyze}X{{JMGgI%$=6tq@GXgKd;6z$xh+ei}=T0r_Me`MZH~lOcemaBk8ZxUZ+##@a664>0V=rS+*d#z=&9jKMN1Hh+;E1! z1VwHX6C*k~FkZf{E$3;bga+_vpsb-TXPx{ph*cJ*2%Zpl3t`LVhnbHQDQ^0{C9W1d;7YT;Nbw*n5RG+rLoHZh#MvcXQBy9LQjJF6DH!8 zCCmm2UdtjTha!DuzOp9kGb6aeC{ zd_g7GZ|v!7Z?tGT4lb@!LO|1;6PQZ4oF06~1wkWAU}!B6hX3@9Zx4i=bD#(jl4z65((GL~Z4%Tvju(OE z_K-R|e@6cUPDf2joQaZJKx|_O&7efU`$ZLmtp?kcEgvr>`J8ll5M8yk6gbEx}w865#-hBorRtR3E5qW;sMM zpbL4A(L@8pTPole5=97eu5Tn@3&1zeoSuqSWqt5ufpY-PV-%ItgDhp4C9JqxS|!HB~g+KeCL4RwuYO8E7_O} z)a;xMWTb3{NUn8Us}0~MWZ85=@q<(0n&u!2WCi8D<}B4m5Lr`1at2;@fF{dkXkY-x zCT2pSJs!q{!IbuBd3ERNc_#CmNuviN^WvH56I1hpAqQ@kHMXT7RyD}&T}>@W9BfO5 zt*iI?XJ!(XwN@xZab;-g)F>Ij!OKGIuOuTQl?`=%tMHuWCN2P?+-EKbs#=0|nbT>@ z^mdYv`b6R3AFQx~!fFaA6j3q)+;^Z{ zJ~=XV_x9dS59BzxsxfE_eL&L$wiXJ_LX zrXwzpuDHSsfCxvC1LDM=CUzzwAZP&0Ib&yM=DHgE^$kH0nWJ_X@*8gG^Kalh5^HyF z=-U3JPp3J4jwvO(sjcvzKY7<*|MKjl5{81KgOx!M`i{S$bHX1bGNS+~Lv z4NtGY?3Q|fZdqy$CL=XgNrp=Cyn)|HFQ!uf_6#cYHpYDb3v2o`-M= zr{>EW4VS{BaduWkfpZ?>a>pQ=J?3(2wpyqrCThxN3LeBNWx+A2^GISYKIh9r;oEyf z5n>=o&yG~tBT1LXSIMB1C;KPLgOxA>MFV$)+3gfeTx}L(D#%L_S|7CK@tMko#*AFv z5;$2xjK;(Q(x{Y2Q71pFD@@b0Kn)a`iNWDftaYa`&DsU63?pW8V!m7`WC2nf$*`J& z0|VK>TyxIy?ajGhHaa{PX_7UV{Br_`IN42V%?Ds>&PJm7b(G0pUF2PYu>^)jc?`23 ziE->wIMO)(b#knFcla$3FgmAcOaqB^7W6@Ie7#T#0?tqh%c796RrSnaqHyY4H+QVS z?DghGpBQs|CQKkqasVgg7#&M%;0p87s0pVNl<>=*j$Q&or{WouMVZQ%PL4kD#GZFw zzin&ZYJTCX(8C2%FmS$$T0AZsG6W}OR6FKOQ;AMfN{kZ+{z_}tH3VbxvonT=DBK0N zG5!*3j7)LBF6{w!*VN%}yacySL}bsBr{qu*wiW4)XKiIH3^G0L3gpq1*su%rd zK*~8V<>pN?YLW4V=Yh;o?J!yZ<{~C&*A#;}B!m!-xstYGW^O8REg;Nwa+tJTMse+1 z#S`vxzA!v3@whZYyI!DbhSwDUDOQh6MChM9_{2lc9*UTRcksO|CM@7JR6FtqUkm4G zsl>BO03JqTo;iVzjSJ~TG3r8wD_!Cgfxro(#<@IOyyD`e zdo(@oD;KAj`1$_h4?ew@(VRzUY{D&@Rtjnq1yAIue;F_&z^38_LGIkr{x{E_N_Zab z90&-A8j8tH&@E^PERVxUD4Q_3@9yotW9!OQ8PA8OWn-o!`Y`x4;DN&vVQGPp^=(kcp%fMM8<0qTKWVn>6*JQpIQ7j2;%!NQ~tpoJXsOLyv z^&M+k+B4Jp2d4+-!wSixhZE*JF_M6Rc!g>C=aCtrTGf9#WY?d)r9=%1QD z9+8sqJR_yjW~wAv(p~V^HDohLgc3r$%fiqWlbB#SjugP^k-7MpmktwI^mHW@NtUYL zxnq|Edjesgq++>p2$Lb0sXzumVS*EYf@?eTo4bm`5gVPXl;dcsk_-$@RuVQ#Wh4V& z+^%<5yG#X*xu+-#RDP&phWclYj7@!b$J!M@@)U@60TUrhZD(F|uZcX*aemg21)UL!M?4@MIg6I~mO zu_w+9QSMu;J?WfQpZV}Rx*D>Eab@W%{nO9BHZmH=joD!5%I2+|^?`dn&JR&Kg7of^ zY-OuwxC8@*>zfb0HvQzW(K6=h0@wXwovndxC&MwYVvpbnn2tDUZ+zOsIX$dJxUl`NiML-u8zXvrzYpMaKAM!98}*L zaKKO>0->OBEX0cgr5k%qo#fU2RCk56+H!_pGJzFHh_Nvx{nIL9o`h?$KyN&Qz7JDM zE9QqBra=hER8eAhUUlUbM`|pZV8NNKO>0x*AAaFq!nXmIsxi9*Ve7!?RKgqOMTZQI zm2_V#v#C}lDSvTB0rn>p!Gxg5W(Tl951l~KksJG zjp>+<&xcKUDe+ddTX6z9#NZ4e!dV|47t63W+arfjm+vR3ahMk-dcmu!+WNe(ri{^8 z=LO3fZrs8bm?0=UwPX3zEqEdE;tBP|^Jx4BR2`-z6=v;$y8-0UI8*`k5)}j5UT_FV zo4GKqFZlAj?S>$90UrYzAgm%LiI{(SCV7+hwCCR1<*O{`3+jv4r%SrDz#5YAISsYN z;AvfL%SqSs+KQcexBi-u1jN)%g^S}ubEC?gsZS2pZOJ6=_)-qPv9};J?@1nGy*Q06J2{4 z=UQ#>MgYO{;_~q5*K?lsybD78XI+FOAoE&^+@qBe^)5~q<)v+{%LyA>Oe*m-Q(ZeL zFH_b(m;CI=q-Ng2hNhTiGPqE{025!oB3Be|>VURtJ^akAUD@Cd&dw$*NU+?4`9nAx zbBP#CdSDVD39RZWW`BL_ym4HjM_Y1k*%PVuF>3sra7^)luJRkHy|%sm*`dU+3lU&# zd%?%`ZN|Lb&SH=SSQ;htkz->ojKk+bph|9e&xHf50~7+nAkdGzFR$O!!A%+anJ#=? zTDVO4din#B1ql_+S}#L|G{Ez5Rf}t-MnQ_GFPUA{kSj2~Sp6TDXz1$tNQ&!k9A~fw zE*hJjtrv2X#lVhl>uWkYb>vu5RD@-12}A;AUeT6s>MA4v>%^lJ1R6^$pRefCm3Vlj zwEs*vtH6jp$IOqAiBuf>oRN+g<4QMF+bsMLKIgc4|JJru(i+EK(o`zLx*E9w_1@QgLB&k$w zki**(2D8A5hy=WWVuAo$n;jeQsr}fl-d~;^JuntWS_GW0Y2rIpb+mdA{l!2j-ZL*z(LzOodM!Ium<&cuEKn5ZtU* zsN^kkxC$ImV_B8Q%&%8-Yl_~EzOJr1FM}&z0NR1GW6Ij~AVDBypr>aU``WjkI5`V$ z%`!BBXM@TWJO5cs<&126`OM7jzK+kn>*_ju1F$YGy31N?YSd5EguCk==9h_~9crNd zrn83q(R~jMB>|||Nb~PL@zUFOUDMT&cmCuOo&=1>5{j!x;Jet`r;m?SWD)Gesdk-O zBB2@IBxxcQ;}Z6z0}S(=nZ9*H>&}i`mVxs^P{k@XW1uG_$`(^?3F>#+3ZYp8fyg-8VRdkcuFQ;;wB4ULOvs!9uQN|@1+VzKH zwGQs}*y;Y%Ye3P(+Osk^*+1c0?;%KXR0$~>(6l0GhDJ*;{aciv5u2BK-j9VXXJZob zz_>aSdZ|u`iTb*l)^*m21bo?*R#}yU1#XsOTB5qrioG_iM??#->l|_*u&*#2_>Axj z;CQ*j^NMD&qy)Zt_O;h|M^DTH2&_V3Nk=mfqTH1qYr9*dZ6=GPoi8zam*!l2c zSq?(oJGvpD!IMjOJwW(I_Kxtc({-EJmFvRRe5tI7wr*iYDqR@Jd=QORM>GS+aHK}K zR(EtJRwR(FkYlk_;A*`!n5e3PMO|Hc={&lsTe$^Hgt^N#)?uZ=_=nm>I7qD~(O{yx z269v>jw)PyD;XV!f?sD{>vC^&K8&H-vC)mwZ_|(k~UG)5r``)zkWOAG!5E{K@?l4fI!S>Ft~z z8~W;Zp8E2~Zf(i)G=DlrdC8DHhlgGnk3;FX#?Xr{$byJZK+t!v_{52$-fO}BaMW(1Hli9X_{`A?w`dsji z?Q2=uXo|05OAXYQZs=-gVpebLX#L9P?%8*Iu)dhPV{7lJ@yV}0a_lSLdHJ&++_thQ zb9`v_z({#;+Ro|N1O-b_wxv5u8ONKkEfm1jNMFQPw`FeXZXev(^!11Kefi!eK7Qxb zn^!adiQd;g`O6~%XU1lxDsyK_(kRF7K#*W3NX6jFZ?vqzN+zgH`Q?CveaY;ab^ zxTH}RJkb!yMvr*Rrrh=NF!Vx$r->%Q5<)Z7e)jI`|Ll?dV`XJ(9+LK?WBnW(0f<79 zteaVU`}UqSbt03d7@X~dA#3XkU-fP7(`bKj^Xo}h&xxA*;l|t;!YgYG<%sl+Up+aLj^D<=s9%^vKTsh%1 z>dAYXngYLC$-FG`(F=@f{@-06Q)L?yuUH>5pW~{_>gwY(7Y|O8W|{Fgb5qJc?1a`XD8?%q<7F7Rb(LnQN zL*uQHj9c4!a-ys-9BD(VH1%8oOc4q5+%w^|EAt&b7r5FY#WoIMSuo?gIp%m`SM9f4HR`J#UE$ z_7Y%MGZQLq&DEu9UQw)BVf7GmYRYvuvcZw@vlS5XS`i%qf1n&9m`-zmwE;0yFt%xB zQ+Eb{Si3z0iSO#aPOpe6nAfguIN@hwf%^nm#jrCQsd|G3>|&A4eT5Kf4hjWd&FpelJC zGZrWKwlGC1#I>f!+_i}j5i@zZ61L?RrzdPFmcJ?7N=kDOh&gLpG9D0L)a3?SGjV@E zY~~W!0gf%;JmTI&IbD&3k;kn;q_)}?L(=7R9!Ww#Y>^=fQ60b+@LJd;-L-(Yk{9Mc z5n+Yf!NXw28=cs%EqSSi4Ty{21*M7te2am5E6fmJqbk9~U|Ps?rorMIm_u7!g9XetW_)C}q)D#Urk+N5o3@64 zYjrj?8hcUzHvtRdi~xBFVY70sa!#=}0|w-i(=+Loq-mo`ZPnemEL2sLVEPZ2iJPXM1ZPZZak2jSb;nXbhd3};{@#gM-^@RG{LF3ZJ2$o#_l?cPEX`PO zY$+s(<_R;*Ws>88@!7Mbrmh^oh{j4CWg6nAt*#>JZfk98T`@5-Vz4BIVuWKhB+;~b z@c_^amx|isr(T``Z70@4$>#1Q{oRFj^6@oUl>)j;W>q zLr*C7w|fqL;+AcJPKf7)Xl&z_1+iMy4gZA@*p$xA``Q0Y+l7Ii(Y7A%OUKDp-S|B ze{uSK+q&8_5(Nu9FC+}$i!!F-nicgoZSH#H=!9nIYaVf%X})oQxnmkUviHmlecfAI zfa!%k=CJH}{h*B22xeQ3Wya!ZAt2ZSZZPaQ#uT`FmD>VG8A0N@+=acVmtvMh9uRBV z0aeFGBV!Y9GM50S@CK)*cXhYi*41LD45=BKEAJne+6UHU0VbdU3b{X2iSK*pN={IBk*&W-8nOB}X_}YZRof`vFj`)S0c7R37X21G(dp`ZH>vped zlge$mNz-lBs|A5H-Cv-juR-pgu7uQQ4u~zj7p_)>2PtmS+=n@SY;5Lisdb&l0R|;AtBYRehAvIV_KnO#7{i8ehP!5tkzjUGB@>B9 zNyDq7w{Bj&rB(XCo*B<`{!eb%`hmA?efHpM4?KNvq_V)3<3d4B#}oNK|Na-Z_I2KQ z&Dzzibslo+H}nP)m!$5ghv00EPQ+z_1#jRn!hmM?B15t^+}crW^(kLq@8n-|EQMfE zIY!qt=Jt+Y2chA(T2Jv{c&fCnJ%=}h?1FiW>{wN|@9d0V8BJqF+}2)(CfLDZD?~z2 z`teK0gI#O36w_i8^{EXQdHa@C*KX>5^o8ROJa?$Xa?CZP5iI_OxbFmJP*_BQ$6r13 z!od@5`OHG76M|ZDjZOQ-T!+Xmx8LV*obl`IDYA-9w z&R`DymdUA?2OoXu*lk2zLxs)-+{Sa?AzD2H{5;gAAaYln4(|Laij8#zzU!(^a(>-A-Nw+kEtXAM7dL6a)~%de zv~ulIU^Mo40Ts?zvaKPra(DOX$&z4vQ(Hlk60ka1%|>8GzA3|lq+&?XvDnvVYIUPE zhI=BN@1vByUh+^}3Qga8&6*cZ4!<-!QPhdng^L#l7#exFb})#k_uZ!s+_bSPkM-ZQ zqT=QNttDL3W7Bq@v~+Y?2Sai$dxycjIgkw<%^GBaju_7#9h!Y&&%UOn+>WiA+v{@~ zL0Y*Oc9}ce6bLgG)m$d_$ACB{q$#&>PS_d90P5edb=BeF31!^wGz+}UZ46?Q3YU{H zIWs!h*WOayg_BfsCDnx$HG%&6f5LOwG|((K+!9w56kIVZ{tGPMVMS$VKK|k#-&k#Msww;g>I9toB`Je_nkH!k=#$Tx7G4zja*MIpA6 zvX0vdyC^$>yF?OP5(APXj#;IW7_92hbW0pkt$S9>`RNX_)q(;!xA)2-jHRfsI4+iY zM|GY%zXITCEGcd4 zDAqIK_D-n!U9H*W^+g>GzPPcs!N~&98rWsjjFyUMlR(ZG-+EjOWI&TTi zc^Ci2J6SxlEKMn^*0@#MH3GNIfatesMKe`1+Lz!co=Ot#KX!a<-=F=>=Rfn&Uml&F zFdm?32^YiSs;q1@x1q_qwXc=akR*ZoPioxCL(D}`Y_HKk6nWx&c-!WVM^BuMZ5^=b zbQ7i8<+wuth8XtYNs=@-)wykW&ug8jwc1@^_{D8MShn4Eu`9MQ?_a;Y@6m(91lNq< z?azv=j>AKH_kZZNTb@5Pa(H~C%90xB+~lhpt; zK+dR1uIX-R@uQ(60Zq@`&#P;XP{06YsMxKOZ3x(khMcQy{nl*9_W##{ zE}aXsOo6si+ENB-L#d$1O+`e!HbpdIcrk*CA@PaCSB;4#8l&+K7%vGX5+hMTFh(C# zDk2w!f>H{UTJ43lbex$p=j^k$d+jsD+ZcJkL&dI#W}4=7=Bzn;?X~v$zHj}}VBt$I zs>GJI)!%i$^HUb*3Aa=}f_MQ%-s|{b)h)~KTu^N?Lyzcu&_Ocp#%%fNJeKyEo!m)bi%EsSA(ayNnyr z3)5u`=GKcAoTEYb-9t6W0R*dXB|39Akcb-K?#SCpDwIjX%VAQ zV-yDs%1HS=afMlq(VbtNJT)c?RzeAYGc&9cKv|&d==rP|&djf_*wlX8>$~=McK1pe zap3er=Q1LSZ7%W;tX+0PLlsj60oaf6&l8{psifUmWZi zuoba9(%qB$Wn5T9C*3+ENCxNt#$80i z$<$rV6|*e&sdX*Aqs`xRojW@?DusxL6ZO-R&2wrh%Od6!kU0P=bSFA%w1Pn7QbQ^(O}VKm7db-Cy)(Smf0myPIckoI5RC9Qo)A2TEk=-&{VJ zE7*#HY7iEAy$Y}ub(rPZj^61ArzAW$oT1Yb5oFCN$8(mXP4~}`eSB#MBt6b`T_1w3 zLZB}8?MhC6(_tc=ntsi?ds-TMUVL+BR>~K)?|yFcx_BgP1lM%11yH(9=Ctn#4Ji_~ z5x4ZFD)JbK9E&-Yqn)RVqF=a2q9IUJLKj1VX$2x;*tF1j)pZLsbUbkdl;^MPgicd+ zl_9jcse1OdjjwFqd#ES>@bhofRLw}mXl*Jvch<~B>ADCUp5&XS#lGzt7{JH{EpMHY z=xo?yf>B9aif1_9(o_ZUr^%Y!P8Q1+Gav-x-`E9eymtJr3w2+*DdJ1MV&;j4Y4K;b zZrJ?H8$16%SDUP@)S`1maMi0|M9_g#w>Ddu1nd5?`}aV55VE(2CZEokxbKPM|?1 zRM*-tk1VU`3vYdF=L+r1=9eS2rm^a#xitdt;|OTu81x9A-f;H^M^1hC`SG7ehwfOp za5R(a9?A`794QJMNsH0clvq<`qP{#Hf~YP3UopCXeIZbQJ!1iryH{L$?fS)ipY1!8 z*NHF&tu(#Vxq;NYzH9f*i_?{ig)oMzJWnv&C1IHAguFP-ZET%YSDt+N{llZ~$xztJ zvV_g1Vh?m(^|$i<`NEO@bItK^dutu{>%yzDGAwC2$@8BpBY^-f^p7p~ua0rN;}kWnN*MM!H6_r-#QHQ;AYqTK}$1pt<0_O(FTm+i#j*SM}bf2RqO97g$7CJSj(G z-dGudAwsB#Y%FnBq5qQ2x*=&{M_;D%LKlFPhLRL=byY-vVX8Op)F~sQ7wo-HI7chf zC|I>1y`p7a-$-Fk$ARNLeZ&(>n-?u#m^KtPW%wHRJi=ja>i;Y2C}k?_Ba1AgYRmZ}cP;fy(ZP+5=J?@e>G-NMx$Emv13CLx z|CmD}aNH+>neQl%V<+L+%WJFZr^G0*LjO_h{xaKybF?pn<ux1ilweKt~f%d|~2)AtRd+ z;NY0wa^KP`AK)TL`+8oCr5mgC^KTmrfu(%fzo)Zy0mpvy@=5qys!cdY+n}clfuh(m z#YPqaar8TVqvE6e7hf42btu23E*_C!ibMgU0okDdi5Y51VtIyfVDP{}-q(b4bP-yB zFShd7MJCsuI;Vd%Qk2|a#rqm3RN#wJUj&uPR)Vkz=jf}|CLJA+O*%Rtn{;$QHtFbq qY|_yI*`%WbvPnk=WRs2#$bJQGs1>;_4>WxM0000I! literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ea3dce9b99c969610a92f01378836c440518a3 GIT binary patch literal 2706 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 M07*qoM6N<$f~UPM`~Uy| literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2d756242f30a03008bb0b631c4b0fb87f5643b GIT binary patch literal 8746 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 UYb^4Xq5uE@07*qoM6N<$f(5<%C;$Ke literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb76fdf55b72b740f227ce75d9ab4ad41ca0f88 GIT binary patch literal 3413 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 Y0dcT->I99tg#Z8m07*qoM6N<$f)uYY>Hq)$ literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..783711d9fe706e8c67934be95ba82c7021d8c6cc GIT binary patch literal 11888 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9f039d47e54ac482be2298beeb4a081ff63913 GIT binary patch literal 23268 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner.plist/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d81666a5c3e2af3b6e7588a8f527d0f758379ee2 GIT binary patch literal 17518 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/ios/Runner.plist/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner.plist/Base.lproj/LaunchScreen.storyboard b/ios/Runner.plist/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/ios/Runner.plist/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.plist/Base.lproj/Main.storyboard b/ios/Runner.plist/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/ios/Runner.plist/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.plist/GeneratedPluginRegistrant.h b/ios/Runner.plist/GeneratedPluginRegistrant.h new file mode 100644 index 00000000..7a890927 --- /dev/null +++ b/ios/Runner.plist/GeneratedPluginRegistrant.h @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GeneratedPluginRegistrant_h +#define GeneratedPluginRegistrant_h + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GeneratedPluginRegistrant : NSObject ++ (void)registerWithRegistry:(NSObject*)registry; +@end + +NS_ASSUME_NONNULL_END +#endif /* GeneratedPluginRegistrant_h */ diff --git a/ios/Runner.plist/GeneratedPluginRegistrant.m b/ios/Runner.plist/GeneratedPluginRegistrant.m new file mode 100644 index 00000000..153c6c06 --- /dev/null +++ b/ios/Runner.plist/GeneratedPluginRegistrant.m @@ -0,0 +1,133 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#import "GeneratedPluginRegistrant.h" + +#if __has_include() +#import +#else +@import audioplayers_darwin; +#endif + +#if __has_include() +#import +#else +@import firebase_core; +#endif + +#if __has_include() +#import +#else +@import firebase_messaging; +#endif + +#if __has_include() +#import +#else +@import flutter_keyboard_visibility; +#endif + +#if __has_include() +#import +#else +@import flutter_local_notifications; +#endif + +#if __has_include() +#import +#else +@import flutter_sound; +#endif + +#if __has_include() +#import +#else +@import fluttertoast; +#endif + +#if __has_include() +#import +#else +@import image_picker_ios; +#endif + +#if __has_include() +#import +#else +@import package_info; +#endif + +#if __has_include() +#import +#else +@import path_provider_ios; +#endif + +#if __has_include() +#import +#else +@import permission_handler_apple; +#endif + +#if __has_include() +#import +#else +@import qr_code_scanner; +#endif + +#if __has_include() +#import +#else +@import share; +#endif + +#if __has_include() +#import +#else +@import shared_preferences_ios; +#endif + +#if __has_include() +#import +#else +@import speech_to_text; +#endif + +#if __has_include() +#import +#else +@import sqflite; +#endif + +#if __has_include() +#import +#else +@import url_launcher_ios; +#endif + +@implementation GeneratedPluginRegistrant + ++ (void)registerWithRegistry:(NSObject*)registry { + [AudioplayersDarwinPlugin registerWithRegistrar:[registry registrarForPlugin:@"AudioplayersDarwinPlugin"]]; + [FLTFirebaseCorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseCorePlugin"]]; + [FLTFirebaseMessagingPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseMessagingPlugin"]]; + [FlutterKeyboardVisibilityPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterKeyboardVisibilityPlugin"]]; + [FlutterLocalNotificationsPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterLocalNotificationsPlugin"]]; + [FlutterSound registerWithRegistrar:[registry registrarForPlugin:@"FlutterSound"]]; + [FluttertoastPlugin registerWithRegistrar:[registry registrarForPlugin:@"FluttertoastPlugin"]]; + [FLTImagePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTImagePickerPlugin"]]; + [FLTPackageInfoPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTPackageInfoPlugin"]]; + [FLTPathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTPathProviderPlugin"]]; + [PermissionHandlerPlugin registerWithRegistrar:[registry registrarForPlugin:@"PermissionHandlerPlugin"]]; + [FlutterQrPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterQrPlugin"]]; + [FLTSharePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTSharePlugin"]]; + [FLTSharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTSharedPreferencesPlugin"]]; + [SpeechToTextPlugin registerWithRegistrar:[registry registrarForPlugin:@"SpeechToTextPlugin"]]; + [SqflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"SqflitePlugin"]]; + [FLTURLLauncherPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTURLLauncherPlugin"]]; +} + +@end diff --git a/ios/Runner.plist/Runner-Bridging-Header.h b/ios/Runner.plist/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/ios/Runner.plist/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 00000000..8608b33d --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,1025 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.12" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.5" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + audioplayers: + dependency: "direct main" + description: + name: audioplayers + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + audioplayers_android: + dependency: transitive + description: + name: audioplayers_android + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.3" + audioplayers_darwin: + dependency: transitive + description: + name: audioplayers_darwin + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + audioplayers_linux: + dependency: transitive + description: + name: audioplayers_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + audioplayers_platform_interface: + dependency: transitive + description: + name: audioplayers_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + audioplayers_web: + dependency: transitive + description: + name: audioplayers_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + audioplayers_windows: + dependency: transitive + description: + name: audioplayers_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.3" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + carousel_slider: + dependency: "direct main" + description: + name: carousel_slider + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.1" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.8" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.5.2" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + url: "https://pub.dartlang.org" + source: hosted + version: "14.2.1" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.10" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.11" + flare_flutter: + dependency: "direct main" + description: + name: flare_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.0" + flutter_keyboard_visibility: + dependency: transitive + description: + name: flutter_keyboard_visibility + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.0" + flutter_keyboard_visibility_linux: + dependency: transitive + description: + name: flutter_keyboard_visibility_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_macos: + dependency: transitive + description: + name: flutter_keyboard_visibility_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_platform_interface: + dependency: transitive + description: + name: flutter_keyboard_visibility_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_web: + dependency: transitive + description: + name: flutter_keyboard_visibility_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_windows: + dependency: transitive + description: + name: flutter_keyboard_visibility_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_launcher_icons: + dependency: "direct main" + description: + name: flutter_launcher_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + url: "https://pub.dartlang.org" + source: hosted + version: "12.0.4" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" + flutter_sound: + dependency: "direct main" + description: + name: flutter_sound + url: "https://pub.dartlang.org" + source: hosted + version: "9.2.13" + flutter_sound_platform_interface: + dependency: transitive + description: + name: flutter_sound_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "9.2.13" + flutter_sound_web: + dependency: transitive + description: + name: flutter_sound_web + url: "https://pub.dartlang.org" + source: hosted + version: "9.2.13" + flutter_svg: + dependency: transitive + description: + name: flutter_svg + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_typeahead: + dependency: "direct main" + description: + name: flutter_typeahead + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.1" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + fluttertoast: + dependency: "direct main" + description: + name: fluttertoast + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.2" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "10.3.0" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.2" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.0" + image_picker: + dependency: "direct main" + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+4" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+5" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.7.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + logger: + dependency: transitive + description: + name: logger + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + package_info: + dependency: "direct main" + description: + name: package_info + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_drawing: + dependency: transitive + description: + name: path_drawing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + url: "https://pub.dartlang.org" + source: hosted + version: "10.2.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + url: "https://pub.dartlang.org" + source: hosted + version: "10.2.0" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + url: "https://pub.dartlang.org" + source: hosted + version: "9.0.7" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "3.9.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.2" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.5" + qr_code_scanner: + dependency: "direct main" + description: + name: qr_code_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + recase: + dependency: transitive + description: + name: recase + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" + rive: + dependency: "direct main" + description: + name: rive + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.1" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.27.7" + share: + dependency: "direct main" + description: + name: share + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.14" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + signature: + dependency: "direct main" + description: + name: signature + url: "https://pub.dartlang.org" + source: hosted + version: "5.3.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + speech_to_text: + dependency: "direct main" + description: + name: speech_to_text + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.1" + speech_to_text_macos: + dependency: transitive + description: + name: speech_to_text_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + speech_to_text_platform_interface: + dependency: transitive + description: + name: speech_to_text_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + sqflite: + dependency: transitive + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.2" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0+2" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0+3" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + timezone: + dependency: transitive + description: + name: timezone + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.1" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.7" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.22" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.17" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.7" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" From 14eceb7ae5deb7bfba9b6dfb0443acce257c5aca Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 15 Jan 2023 12:56:14 +0300 Subject: [PATCH 3/6] pentry added. --- assets/subtitles/en_subtitle.json | 20 +- lib/controllers/api_routes/urls.dart | 10 + .../providers/api/devices_provider.dart | 23 +-- .../providers/api/gas_refill_provider.dart | 17 +- .../providers/api/hospitals_provider.dart | 11 +- .../providers/api/parts_provider.dart | 4 - .../api/regular_visits_provider.dart | 44 ++++- .../api/service_requests_provider.dart | 22 +-- .../employee/employee_provider.dart | 12 +- .../gas_cylinder_size_provider.dart | 10 +- .../gas_refill/gas_status_provider.dart | 10 +- .../gas_refill/gas_types_provider.dart | 10 +- .../pentry/pentry_status_provider.dart | 75 +++++++ .../pentry/pentry_task_status_provider.dart | 75 +++++++ .../pentry/pentry_visit_status_provider.dart | 74 +++++++ .../service_report_defect_types_provider.dart | 75 +++++++ .../service_report_last_calls_provider.dart | 8 +- .../service_report_priority_provider.dart | 74 +++++++ .../service_report_reasons_provider.dart | 8 +- .../service_report_status_provider.dart | 8 +- .../report/service_report_types_provider.dart | 8 +- .../report/service_types_provider.dart | 8 +- lib/main.dart | 10 + lib/models/device/device.dart | 4 + lib/models/device/device_transfer.dart | 2 +- lib/models/device/device_transfer_info.dart | 6 +- lib/models/gas_refill/gas_refill_details.dart | 14 +- lib/models/gas_refill/gas_refill_model.dart | 8 +- lib/models/{status.dart => lookup.dart} | 22 +-- lib/models/pantry/calibration_tools.dart | 26 +++ lib/models/pantry/contact.dart | 41 ++++ lib/models/pantry/lookups/contact_person.dart | 15 ++ lib/models/pantry/lookups/contact_title.dart | 15 ++ lib/models/pantry/pentry.dart | 121 ++++++++++++ lib/models/pantry/pm_kit.dart | 45 +++++ lib/models/pantry/ppm_check_list.dart | 33 ++++ lib/models/service_report.dart | 23 ++- .../service_request/service_request.dart | 9 + lib/models/user.dart | 143 +++++++------- lib/models/visits/visit.dart | 9 +- lib/models/visits/visits_group.dart | 6 +- lib/views/app_style/colors.dart | 2 +- .../track_device_transfer.dart | 2 +- lib/views/pages/user/land_page.dart | 46 ++--- .../pages/user/requests/create_request.dart | 25 ++- .../report/create_service_report.dart | 94 ++++----- .../requests/report/edit_service_report.dart | 2 +- .../pages/user/requests/request_details.dart | 12 +- .../pages/user/visits/pantry/edit_pentry.dart | 187 ++++++++++++++++++ .../visits/pantry/future_edit_pently.dart | 59 ++++++ .../visits/update_visits_group_sheet.dart | 16 +- .../pages/user/visits/visit_details.dart | 25 ++- .../widgets/date_and_time/date_picker.dart | 6 +- .../auto_complete_devices_field.dart | 99 ++++------ .../equipment/single_device_picker.dart | 45 +++-- ...dart => hospital_auto_complete_field.dart} | 8 +- .../widgets/images/mini_one_image_picker.dart | 4 +- .../widgets/images/multi_image_picker.dart | 2 +- .../parts/auto_complete_parts_field.dart | 15 +- .../auto_complete_devices_field.dart | 94 +++++++++ .../pentry/pentry_calibration_tool_form.dart | 95 +++++++++ .../widgets/pentry/pentry_info_form.dart | 114 +++++++++++ .../widgets/pentry/pentry_pm_kit_form.dart | 154 +++++++++++++++ .../pentry/pentry_ppm_check_list_form.dart | 117 +++++++++++ .../widgets/requests/request_status.dart | 2 +- .../requests/service_request_item.dart | 51 ----- .../service_request_update_dialog.dart | 6 +- lib/views/widgets/search/filter_item.dart | 4 +- .../search/service_request_search_bar.dart | 18 +- .../widgets/search/visits_search_bar.dart | 22 +-- .../status/employee/employee_mune.dart | 6 +- .../status/gas_refill/gas_cylinder_size.dart | 6 +- .../widgets/status/gas_refill/gas_status.dart | 6 +- .../widgets/status/gas_refill/gas_type.dart | 6 +- .../widgets/status/multi_status_menu.dart | 14 +- .../status/pentry/pentry_status_mune.dart | 37 ++++ .../pentry/pentry_task_status_mune.dart | 37 ++++ .../pentry/pentry_visit_status_mune.dart | 37 ++++ .../report/service_report_last_call.dart | 4 +- .../status/report/service_report_reasons.dart | 6 +- .../status/report/service_report_status.dart | 4 +- .../status/report/service_report_type.dart | 32 +-- .../widgets/status/report/service_status.dart | 6 +- .../service_request_defect_types_mune.dart | 37 ++++ .../service_request_priority_mune.dart | 37 ++++ .../widgets/status/single_status_menu.dart | 18 +- lib/views/widgets/timer/app_timer.dart | 49 ++--- lib/views/widgets/visits/visit_item.dart | 133 ++++++------- pubspec.yaml | 2 +- 89 files changed, 2316 insertions(+), 645 deletions(-) create mode 100644 lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart create mode 100644 lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart create mode 100644 lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart create mode 100644 lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart create mode 100644 lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart rename lib/models/{status.dart => lookup.dart} (58%) create mode 100644 lib/models/pantry/calibration_tools.dart create mode 100644 lib/models/pantry/contact.dart create mode 100644 lib/models/pantry/lookups/contact_person.dart create mode 100644 lib/models/pantry/lookups/contact_title.dart create mode 100644 lib/models/pantry/pentry.dart create mode 100644 lib/models/pantry/pm_kit.dart create mode 100644 lib/models/pantry/ppm_check_list.dart create mode 100644 lib/views/pages/user/visits/pantry/edit_pentry.dart create mode 100644 lib/views/pages/user/visits/pantry/future_edit_pently.dart rename lib/views/widgets/hospitals/{auto_complete_field.dart => hospital_auto_complete_field.dart} (89%) create mode 100644 lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart create mode 100644 lib/views/widgets/pentry/pentry_calibration_tool_form.dart create mode 100644 lib/views/widgets/pentry/pentry_info_form.dart create mode 100644 lib/views/widgets/pentry/pentry_pm_kit_form.dart create mode 100644 lib/views/widgets/pentry/pentry_ppm_check_list_form.dart create mode 100644 lib/views/widgets/status/pentry/pentry_status_mune.dart create mode 100644 lib/views/widgets/status/pentry/pentry_task_status_mune.dart create mode 100644 lib/views/widgets/status/pentry/pentry_visit_status_mune.dart create mode 100644 lib/views/widgets/status/service_request/service_request_defect_types_mune.dart create mode 100644 lib/views/widgets/status/service_request/service_request_priority_mune.dart diff --git a/assets/subtitles/en_subtitle.json b/assets/subtitles/en_subtitle.json index e9eac980..2ce29fb9 100644 --- a/assets/subtitles/en_subtitle.json +++ b/assets/subtitles/en_subtitle.json @@ -64,7 +64,7 @@ "code": "Code", "serialNumber": "Serial Number", "add": "Add", - "brand": "Brand", + "brand": "manufacture", "clearSearch": "Clear Search", "closed": "Closed", "create": "Create", @@ -84,8 +84,8 @@ "facebook": "facebook", "faultDescription": "Fault Description", "general": "General", - "hospital": "Client", - "hospitalRequired": "Client Required", + "hospital": "Site", + "hospitalRequired": "Site Required", "hotLine": "Hot Line", "jobSheetNumber": "Job Sheet Number", "linkedIn": "linkedIn", @@ -96,9 +96,9 @@ "nameExist": "Name Exist", "newServiceRequest": "New Service Request", "newWord": "New", - "noDateFound": "No Data Found", - "noDeviceFound": "No Device Found", - "noHospitalFound": "No Client Found", + "noDateFound": "No Date Found", + "noDeviceFound": "No Asset Found", + "noHospitalFound": "No Site Found", "noModelFound": "No Model Found", "noServiceRequestFound": "No Service Request Found", "noSnFound": "No SN Found", @@ -106,8 +106,8 @@ "notificationsNotFound": "Notifications Not Found", "noUniteFound": "No Unit Found", "ourWebsite": "Our Website", - "pickDevice": "Pick Device", - "pickHospital": "Pick Client", + "pickDevice": "Pick Asset", + "pickHospital": "Pick Site", "pickUnite": "Pick Unit", "policy": "Policy", "reason1": "The engineer didn't confirm visit date with 2 hours from the request time", @@ -169,10 +169,10 @@ "attachImage": "Attach Image", "callLastSituation": "Call's Last Situation", "customer": "Customer", - "editServiceReport": "Edit Service Report", + "editServiceReport": "Edit Work Order", "invoiceCode": "Invoice Code", "invoiceNumber": "Invoice Number", - "newServiceReport": "New Service Report", + "newServiceReport": "New Work Order", "number": "Number", "operatingHours": "Operating Hours", "partNumber": "Part Number", diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index eeba5f3e..f2e26591 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -37,6 +37,8 @@ class URLs{ static const getServiceReportLastCalls = "/return/call/last/situation"; // get static const getServiceTypes = "/return/service/type"; // get static const getPartNumber = "/handle/return/all/parts"; // get + static const getServiceReportPriority = "/return/call/priority/list"; // get + static const getServiceReportDefectTypes = "/return/call/defect/type/list"; // get //gas refill static const getGasTypes = "/return/gas/refill/types"; // get @@ -53,5 +55,13 @@ class URLs{ // employee static const getEmployees = "/return/assigned/employee"; // get + // pentry + static const getPentry = "/return/pentry/details"; // get + static const updatePentry = "/update/pentry/details"; // get + static const getPentryTaskStatus = "/return/pentry/task/status"; // get + static const getPentryVisitStatus = "/return/pentry/visit/status/list"; // get + static const getPentryStatus = "/return/pentry/status/list"; // get + // contacts + static const getPentryContacts = "/handle/return/all/contacts"; // get } \ No newline at end of file diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index 808421da..d434551f 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -81,25 +81,25 @@ class DevicesProvider extends ChangeNotifier{ @required String host, @required User user, @required String hospitalId, - @required String title}) async { + String serialNumber, + String number, + }) async { Response response; try{ response = await get( - Uri.parse(host + URLs.getEquipment+"?client=$hospitalId" - + ( title == null || title.isEmpty ? "" : "&name=$title" )), + Uri.parse("$host${URLs.getEquipment}?client=$hospitalId" + "${serialNumber?.isEmpty == false ? "&name=$serialNumber" :""}" + "${number?.isEmpty == false ? "&number=$number" : ""}" + ), ); - _stateCode = response.statusCode; - List _page = []; + List page = []; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _page = categoriesListJson.map((device) => Device.fromJson(device)).toList(); + page = categoriesListJson.map((device) => Device.fromJson(device)).toList(); } - return _page; + return page; } catch(error) { - _loading = false; - _stateCode = -1; - notifyListeners(); return []; } @@ -128,13 +128,10 @@ class DevicesProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - print(categoriesListJson.length); _page = categoriesListJson.map((device) => Device.fromJson(device)).toList(); - print(_page.length); } return _page; } catch(error) { - print(error); _loading = false; _stateCode = -1; notifyListeners(); diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index e0f90bbc..5297ae06 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -54,10 +54,6 @@ class GasRefillProvider extends ChangeNotifier{ isLoading = true; Response response; try{ - print( Uri.parse( - "$host${URLs.getGasRefill}?uid=${user.id}" - "&token=${user.token}&page=${(items?.length ?? 0) ~/pageItemNumber}" - )); response = await get( Uri.parse( "$host${URLs.getGasRefill}?uid=${user.id}" @@ -67,7 +63,6 @@ class GasRefillProvider extends ChangeNotifier{ "Content-Type":"application/json; charset=utf-8" } ); - print(response.body); stateCode = response.statusCode; if(stateCode >= 200 && stateCode < 300) { // client's request was successfully received @@ -87,7 +82,6 @@ class GasRefillProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); isLoading = false; stateCode = -1; notifyListeners(); @@ -109,12 +103,11 @@ class GasRefillProvider extends ChangeNotifier{ }; body["details"] = jsonEncode(model.details.map((model) => { - "type": model.type.id.toString(), - "size": model.cylinderSize.id.toString(), + "type": model.type.id?.toString(), + "size": model.cylinderSize?.id.toString(), "requsted_qty": model.requestedQuantity.toString(), }).toList()); - print(body); Response response; try{ response = await post( @@ -123,7 +116,6 @@ class GasRefillProvider extends ChangeNotifier{ body: body, ); - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { if(items != null) { @@ -139,7 +131,6 @@ class GasRefillProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } @@ -165,8 +156,6 @@ class GasRefillProvider extends ChangeNotifier{ "deliverd_qty": model.deliveredQuantity.toString(), }).toList()); - print(body); - print(Uri.parse("$host${URLs.updateGasRefill}/${newModel.id}"),); Response response; try{ response = await post( @@ -174,7 +163,6 @@ class GasRefillProvider extends ChangeNotifier{ body: body, ); - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { oldModel.fromGasRefillModel(newModel); @@ -183,7 +171,6 @@ class GasRefillProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } diff --git a/lib/controllers/providers/api/hospitals_provider.dart b/lib/controllers/providers/api/hospitals_provider.dart index 3ead9f6f..5e3c4509 100644 --- a/lib/controllers/providers/api/hospitals_provider.dart +++ b/lib/controllers/providers/api/hospitals_provider.dart @@ -55,11 +55,7 @@ class HospitalsProvider extends ChangeNotifier{ notifyListeners(); Response response; try{ - print( Uri.parse( - host + URLs.getHospitals - + "?page=${(_hospitals?.length ?? 0) ~/pageItemNumber}" - + ( title == null || title.isEmpty ? "" : "&name=$title" ))); - response = await get( + response = await get( Uri.parse( host + URLs.getHospitals + "?page=${(_hospitals?.length ?? 0) ~/pageItemNumber}" @@ -96,11 +92,6 @@ class HospitalsProvider extends ChangeNotifier{ } - /// return -2 if request in progress - /// return -1 if error happen when sending request - /// return state code if request complete may be 200, 404 or 403 - /// for more details check http state manager - /// lib\controllers\http_status_manger\http_status_manger.dart Future> getHospitalsList ({String host,User user,String title}) async { Response response; try{ diff --git a/lib/controllers/providers/api/parts_provider.dart b/lib/controllers/providers/api/parts_provider.dart index 061e3da7..6f763f77 100644 --- a/lib/controllers/providers/api/parts_provider.dart +++ b/lib/controllers/providers/api/parts_provider.dart @@ -110,7 +110,6 @@ class PartsProvider extends ChangeNotifier{ "Content-Type":"application/json; charset=utf-8" } ); - _stateCode = response.statusCode; List _page = []; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received @@ -119,9 +118,6 @@ class PartsProvider extends ChangeNotifier{ } return _page; } catch(error) { - _loading = false; - _stateCode = -1; - notifyListeners(); return []; } diff --git a/lib/controllers/providers/api/regular_visits_provider.dart b/lib/controllers/providers/api/regular_visits_provider.dart index 1db89790..03737f73 100644 --- a/lib/controllers/providers/api/regular_visits_provider.dart +++ b/lib/controllers/providers/api/regular_visits_provider.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/pantry/pentry.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visits_group.dart'; @@ -76,7 +77,7 @@ class RegularVisitsProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received try{ - List requestsListJson = json.decode(utf8.decode(response.bodyBytes)); + List requestsListJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); List _visits = requestsListJson.map( (request) => Visit.fromJson(request) ).toList(); @@ -137,5 +138,46 @@ class RegularVisitsProvider extends ChangeNotifier{ } } + Future getPently({String host,User user,String id}) async { + Response response; + response = await get( + Uri.parse("$host${URLs.getPentry}/$id"), + headers: { + "Content-Type":"application/json; charset=utf-8" + } + ); + + Pentry pantry; + if(response.statusCode >= 200 && response.statusCode < 300) { + pantry = Pentry.fromMap(json.decode(utf8.decode(response.bodyBytes))); + } + return pantry; + } + Future updatePentry ({ + @required String host, + @required User user, + @required Pentry pentry, + @required Visit visit, + }) async { + try{ + Response response; + Map body = pentry.toMap(); + body["uid"] = user.id; + body["token"] = user.token; + response = await post( + Uri.parse(host+URLs.updatePentry + "/${visit.id}"), + body: body, + ); + if(response.statusCode >= 200 && response.statusCode < 300) { + visit.status = pentry.ppmVisitStatus; + notifyListeners(); + } + return response.statusCode; + + } catch(error) { + return -1; + } + + } } \ No newline at end of file diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index b5ab6022..cb62d06b 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -3,10 +3,10 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/models/issue.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/status.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/user.dart'; @@ -58,14 +58,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ isLoading = true; Response response; try{ - print( Uri.parse( - host+URLs.getServiceRequests - +"?uid=${user.id}" - +(hospitalId == null? "" :"&client_nid=$hospitalId") - +"&token=${user.token}" - "&page=${(serviceRequests?.length ?? 0) ~/pageItemNumber}" - +search?.toSearchString() ?? "" - )); response = await get( Uri.parse( host+URLs.getServiceRequests @@ -79,7 +71,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ "Content-Type":"application/json; charset=utf-8" } ); - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received @@ -100,7 +91,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); isLoading = false; stateCode = -1; notifyListeners(); @@ -161,11 +151,12 @@ class ServiceRequestsProvider extends ChangeNotifier{ "client": user.hospital.id ?? '', "complaint": serviceRequest.maintenanceIssue, "image": json.encode(serviceRequest.devicePhotos), + "priority": (serviceRequest.priority?.id).toString(), + "defect_types": (serviceRequest.defectType?.id).toString(), }; if(serviceRequest.audio != null){ body["audio"] = serviceRequest.audio; } - print(body); Response response; try{ response = await post( @@ -173,7 +164,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ host+URLs.createRequest), body: body, ); - stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { if(serviceRequests != null) @@ -188,7 +178,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } @@ -225,7 +214,7 @@ class ServiceRequestsProvider extends ChangeNotifier{ @required String host, @required User user, @required String newDate, - @required Status employee, + @required Lookup employee, @required ServiceRequest request, }) async { Response response; @@ -235,14 +224,12 @@ class ServiceRequestsProvider extends ChangeNotifier{ body["nid"] = request.id; if(newDate != null) body["date"] = newDate; if(employee != null) body["ass_emp"] = employee.id.toString(); - print(body); try{ response = await post( Uri.parse( host+URLs.updateRequestDate), body: body, ); - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { request.engineerName = employee.label; @@ -377,7 +364,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ host+URLs.updateServiceReport), body: body, ); - print(response.body); //stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { diff --git a/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart b/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart index 7c6a6757..9005b47c 100644 --- a/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -23,8 +23,8 @@ class EmployeesProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _items; - List get items => _items; + List _items; + List get items => _items; // when categories in-process _loading = true // done _loading = true @@ -49,15 +49,15 @@ class EmployeesProvider extends ChangeNotifier{ Response response; try{ response = await get( - Uri.parse( - host + URLs.getEmployees), + Uri.parse( + host + URLs.getEmployees), ); print(response.body); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _items = categoriesListJson.map((type) => Status.fromJson(type)).toList(); + _items = categoriesListJson.map((type) => Lookup.fromJson(type)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart index a4533788..12bb62d1 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -24,8 +24,8 @@ class GasCylinderSizesProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _items; - List get items => _items; + List _items; + List get items => _items; // when categories in-process _loading = true // done _loading = true @@ -50,13 +50,13 @@ class GasCylinderSizesProvider extends ChangeNotifier{ Response response; try{ response = await get( - Uri.parse(host + URLs.getGasCylinderSize), + Uri.parse(host + URLs.getGasCylinderSize), ); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _items = categoriesListJson.map((item) => Status.fromJson(item)).toList(); + _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart index 60d5db9e..24b4e018 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -24,8 +24,8 @@ class GasStatusProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _items; - List get items => _items; + List _items; + List get items => _items; // when categories in-process _loading = true // done _loading = true @@ -49,13 +49,13 @@ class GasStatusProvider extends ChangeNotifier{ Response response; try{ response = await get( - Uri.parse(host + URLs.getGasStatus), + Uri.parse(host + URLs.getGasStatus), ); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _items = categoriesListJson.map((item) => Status.fromJson(item)).toList(); + _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart index 33ab1b27..bda262bd 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -24,8 +24,8 @@ class GasTypesProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _items; - List get items => _items; + List _items; + List get items => _items; // when categories in-process _loading = true // done _loading = true @@ -49,13 +49,13 @@ class GasTypesProvider extends ChangeNotifier{ Response response; try{ response = await get( - Uri.parse(host + URLs.getGasTypes), + Uri.parse(host + URLs.getGasTypes), ); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _items = categoriesListJson.map((item) => Status.fromJson(item)).toList(); + _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart new file mode 100644 index 00000000..75d18783 --- /dev/null +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart @@ -0,0 +1,75 @@ +import 'dart:convert'; + +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; + +class PentryStatusProvider extends ChangeNotifier{ + + //reset provider data + void reset(){ + _items = null; + _stateCode = null; + } + + // state code of current request to defied error message + // like 400 customer request failed + // 500 service not available + int _stateCode; + int get stateCode => _stateCode; + + // contain user data + // when user not login or register _user = null + List _items; + List get items => _items; + + // when categories in-process _loading = true + // done _loading = true + // failed _loading = false + bool _loading; + bool get isLoading => _loading; + set isLoading(bool isLoading){ + _loading = isLoading; + notifyListeners(); + } + + /// return -2 if request in progress + /// return -1 if error happen when sending request + /// return state code if request complete may be 200, 404 or 403 + /// for more details check http state manager + /// lib\controllers\http_status_manger\http_status_manger.dart + Future getData ({String host,User user}) async { + if(_loading == true) + return -2; + _loading = true; + notifyListeners(); + Response response; + try{ + response = await get( + Uri.parse( + host + URLs.getPentryStatus), + ); + + _stateCode = response.statusCode; + if(response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List listJson = json.decode(utf8.decode(response.bodyBytes)); + _items = listJson.map((type) => Lookup.fromIntIdJson(type)).toList(); + } + _loading = false; + notifyListeners(); + return response.statusCode; + } catch(error) { + + _loading = false; + _stateCode = -1; + notifyListeners(); + return -1; + } + + } + +} \ No newline at end of file diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart new file mode 100644 index 00000000..900671e1 --- /dev/null +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart @@ -0,0 +1,75 @@ +import 'dart:convert'; + +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; + +class PentryTaskStatusProvider extends ChangeNotifier{ + + //reset provider data + void reset(){ + _items = null; + _stateCode = null; + } + + // state code of current request to defied error message + // like 400 customer request failed + // 500 service not available + int _stateCode; + int get stateCode => _stateCode; + + // contain user data + // when user not login or register _user = null + List _items; + List get items => _items; + + // when categories in-process _loading = true + // done _loading = true + // failed _loading = false + bool _loading; + bool get isLoading => _loading; + set isLoading(bool isLoading){ + _loading = isLoading; + notifyListeners(); + } + + /// return -2 if request in progress + /// return -1 if error happen when sending request + /// return state code if request complete may be 200, 404 or 403 + /// for more details check http state manager + /// lib\controllers\http_status_manger\http_status_manger.dart + Future getData ({String host,User user}) async { + if(_loading == true) + return -2; + _loading = true; + notifyListeners(); + Response response; + try{ + response = await get( + Uri.parse( + host + URLs.getPentryTaskStatus), + ); + + _stateCode = response.statusCode; + if(response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); + _items = categoriesListJson.map((type) => Lookup.fromIntIdJson(type)).toList(); + } + _loading = false; + notifyListeners(); + return response.statusCode; + } catch(error) { + + _loading = false; + _stateCode = -1; + notifyListeners(); + return -1; + } + + } + +} \ No newline at end of file diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart new file mode 100644 index 00000000..c8562f25 --- /dev/null +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart @@ -0,0 +1,74 @@ +import 'dart:convert'; + +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; + +class PentryVisitStatusProvider extends ChangeNotifier{ + + //reset provider data + void reset(){ + _items = null; + _stateCode = null; + } + + // state code of current request to defied error message + // like 400 customer request failed + // 500 service not available + int _stateCode; + int get stateCode => _stateCode; + + // contain user data + // when user not login or register _user = null + List _items; + List get items => _items; + + // when categories in-process _loading = true + // done _loading = true + // failed _loading = false + bool _loading; + bool get isLoading => _loading; + set isLoading(bool isLoading){ + _loading = isLoading; + notifyListeners(); + } + + /// return -2 if request in progress + /// return -1 if error happen when sending request + /// return state code if request complete may be 200, 404 or 403 + /// for more details check http state manager + /// lib\controllers\http_status_manger\http_status_manger.dart + Future getData ({String host,User user}) async { + if(_loading == true) + return -2; + _loading = true; + notifyListeners(); + Response response; + try{ + response = await get( + Uri.parse( + host + URLs.getPentryVisitStatus), + ); + + _stateCode = response.statusCode; + if(response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List listJson = json.decode(utf8.decode(response.bodyBytes)); + _items = listJson.map((type) => Lookup.fromIntIdJson(type)).toList(); + } + _loading = false; + notifyListeners(); + return response.statusCode; + } catch(error) { + _loading = false; + _stateCode = -1; + notifyListeners(); + return -1; + } + + } + +} \ No newline at end of file diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart new file mode 100644 index 00000000..a61b1e76 --- /dev/null +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart @@ -0,0 +1,75 @@ +import 'dart:convert'; + +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; + +class ServiceRequestDefectTypesProvider extends ChangeNotifier{ + + //reset provider data + void reset(){ + _items = null; + _stateCode = null; + } + + // state code of current request to defied error message + // like 400 customer request failed + // 500 service not available + int _stateCode; + int get stateCode => _stateCode; + + // contain user data + // when user not login or register _user = null + List _items; + List get items => _items; + + // when categories in-process _loading = true + // done _loading = true + // failed _loading = false + bool _loading; + bool get isLoading => _loading; + set isLoading(bool isLoading){ + _loading = isLoading; + notifyListeners(); + } + + /// return -2 if request in progress + /// return -1 if error happen when sending request + /// return state code if request complete may be 200, 404 or 403 + /// for more details check http state manager + /// lib\controllers\http_status_manger\http_status_manger.dart + Future getData ({String host,User user}) async { + if(_loading == true) + return -2; + _loading = true; + notifyListeners(); + Response response; + try{ + response = await get( + Uri.parse( + host + URLs.getServiceReportDefectTypes), + ); + + _stateCode = response.statusCode; + if(response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List listJson = json.decode(utf8.decode(response.bodyBytes)); + _items = listJson.map((type) => Lookup.fromIntIdJson(type)).toList(); + } + _loading = false; + notifyListeners(); + return response.statusCode; + } catch(error) { + + _loading = false; + _stateCode = -1; + notifyListeners(); + return -1; + } + + } + +} \ No newline at end of file diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart index b7ac8b79..20e9f7be 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -24,8 +24,8 @@ class ServiceReportLastCallsProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _calls; - List get calls => _calls; + List _calls; + List get calls => _calls; // when categories in-process _loading = true // done _loading = true @@ -59,7 +59,7 @@ class ServiceReportLastCallsProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _calls = categoriesListJson.map((type) => Status.fromServiceReportJson(type)).toList(); + _calls = categoriesListJson.map((type) => Lookup.fromIntIdJson(type)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart new file mode 100644 index 00000000..beb18280 --- /dev/null +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart @@ -0,0 +1,74 @@ +import 'dart:convert'; + +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; + +class ServiceRequestPriorityProvider extends ChangeNotifier{ + + //reset provider data + void reset(){ + _items = null; + _stateCode = null; + } + + // state code of current request to defied error message + // like 400 customer request failed + // 500 service not available + int _stateCode; + int get stateCode => _stateCode; + + // contain user data + // when user not login or register _user = null + List _items; + List get items => _items; + + // when categories in-process _loading = true + // done _loading = true + // failed _loading = false + bool _loading; + bool get isLoading => _loading; + set isLoading(bool isLoading){ + _loading = isLoading; + notifyListeners(); + } + + /// return -2 if request in progress + /// return -1 if error happen when sending request + /// return state code if request complete may be 200, 404 or 403 + /// for more details check http state manager + /// lib\controllers\http_status_manger\http_status_manger.dart + Future getData ({String host,User user}) async { + if(_loading == true) + return -2; + _loading = true; + notifyListeners(); + Response response; + try{ + response = await get( + Uri.parse( + host + URLs.getServiceReportPriority), + ); + + _stateCode = response.statusCode; + if(response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List listJson = json.decode(utf8.decode(response.bodyBytes)); + _items = listJson.map((type) => Lookup.fromIntIdJson(type)).toList(); + } + _loading = false; + notifyListeners(); + return response.statusCode; + } catch(error) { + _loading = false; + _stateCode = -1; + notifyListeners(); + return -1; + } + + } + +} \ No newline at end of file diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart index 5d2f499d..b1f86f54 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -23,8 +23,8 @@ class ServiceReportReasonsProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _reasons; - List get reasons => _reasons; + List _reasons; + List get reasons => _reasons; // when categories in-process _loading = true // done _loading = true @@ -56,7 +56,7 @@ class ServiceReportReasonsProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _reasons = categoriesListJson.map((type) => Status.fromServiceReportJson(type)).toList(); + _reasons = categoriesListJson.map((type) => Lookup.fromIntIdJson(type)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart index 1cc21f4c..6e98367c 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -23,8 +23,8 @@ class ServiceReportStatusProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _status; - List get statuses => _status; + List _status; + List get statuses => _status; // when categories in-process _loading = true // done _loading = true @@ -56,7 +56,7 @@ class ServiceReportStatusProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _status = categoriesListJson.map((type) => Status.fromServiceReportJson(type)).toList(); + _status = categoriesListJson.map((type) => Lookup.fromIntIdJson(type)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart index 3737fc51..358440a1 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -23,8 +23,8 @@ class ServiceReportTypesProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _types; - List get types => _types; + List _types; + List get types => _types; // when categories in-process _loading = true // done _loading = true @@ -57,7 +57,7 @@ class ServiceReportTypesProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _types = categoriesListJson.map((type) => Status.fromServiceReportJson(type)).toList(); + _types = categoriesListJson.map((type) => Lookup.fromIntIdJson(type)).toList(); } _loading = false; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart index 5cde5e9b..3fa2ddb3 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -23,8 +23,8 @@ class ServiceStatusProvider extends ChangeNotifier{ // contain user data // when user not login or register _user = null - List _statuses; - List get statuses => _statuses; + List _statuses; + List get statuses => _statuses; // when categories in-process _loading = true // done _loading = true @@ -57,7 +57,7 @@ class ServiceStatusProvider extends ChangeNotifier{ if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _statuses = categoriesListJson.map((e) => Status.fromServiceReportJson(e)).toList(); + _statuses = categoriesListJson.map((e) => Lookup.fromIntIdJson(e)).toList(); } _loading = false; diff --git a/lib/main.dart b/lib/main.dart index 5ba0e835..7a615669 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,6 +14,10 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/employee/empl import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/pages/login.dart'; import 'package:test_sa/views/pages/register.dart'; @@ -36,6 +40,7 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'controllers/providers/api/parts_provider.dart'; import 'controllers/providers/api/preventive_maintenance_visits_provider.dart'; +import 'controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart'; import 'controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart'; import 'controllers/providers/api/status_drop_down/report/service_report_status_provider.dart'; @@ -91,6 +96,11 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => GasRefillProvider()), ChangeNotifierProvider(create: (_) => DeviceTransferProvider()), ChangeNotifierProvider(create: (_) => EmployeesProvider()), + ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()), + ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()), + ChangeNotifierProvider(create: (_) => PentryStatusProvider()), + ChangeNotifierProvider(create: (_) => ServiceRequestPriorityProvider()), + ChangeNotifierProvider(create: (_) => ServiceRequestDefectTypesProvider()), ], child: GestureDetector( onTap: () { diff --git a/lib/models/device/device.dart b/lib/models/device/device.dart index a817b00e..b84b8715 100644 --- a/lib/models/device/device.dart +++ b/lib/models/device/device.dart @@ -1,6 +1,7 @@ class Device{ String id; String serialNumber; + String number; String brand; String model; DateTime productionDate; @@ -13,6 +14,7 @@ class Device{ Device({ this.id, this.serialNumber, + this.number, this.brand, this.model, this.productionDate, @@ -27,6 +29,7 @@ class Device{ return Device( id: parsedJson["nid"] ?? parsedJson["id"], serialNumber: parsedJson["sn"] ?? parsedJson["value"], + number: parsedJson["asset_no"], brand: parsedJson["brand"].toString(), model: parsedJson["model"].toString(), productionDate: getDateFromString(parsedJson["production_date"]), @@ -42,6 +45,7 @@ class Device{ return Device( id: device.id, serialNumber: device.serialNumber, + number: device.number, brand: device.brand, model: device.model, productionDate: device.productionDate, diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index 2cad5ed0..27379344 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -3,7 +3,7 @@ import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; class DeviceTransfer{ String id; diff --git a/lib/models/device/device_transfer_info.dart b/lib/models/device/device_transfer_info.dart index f3f1d80d..3e8d0f8f 100644 --- a/lib/models/device/device_transfer_info.dart +++ b/lib/models/device/device_transfer_info.dart @@ -2,7 +2,7 @@ import 'package:http/http.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; class DeviceTransferInfo{ String userId; @@ -13,7 +13,7 @@ class DeviceTransferInfo{ String travelingHours; String name; String signature; - Status status; + Lookup status; DeviceTransferInfo({ this.userId, @@ -67,7 +67,7 @@ class DeviceTransferInfo{ comment: parsedJson["${key}comment"], client: Hospital.fromJson(parsedJson["${key}client"]), department: Department.fromJson(parsedJson["${key}department"]), - status: Status.fromJson(parsedJson["${key}status"]), + status: Lookup.fromJson(parsedJson["${key}status"]), ); } } diff --git a/lib/models/gas_refill/gas_refill_details.dart b/lib/models/gas_refill/gas_refill_details.dart index 35ed91fa..f150e150 100644 --- a/lib/models/gas_refill/gas_refill_details.dart +++ b/lib/models/gas_refill/gas_refill_details.dart @@ -1,8 +1,8 @@ -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; class GasRefillDetails{ - Status type; - Status cylinderSize; + Lookup type; + Lookup cylinderSize; int requestedQuantity; int deliveredQuantity; @@ -21,9 +21,9 @@ class GasRefillDetails{ } factory GasRefillDetails.fromJson(Map parsedJson){ return GasRefillDetails( - type: Status.fromJson(parsedJson["type"]), + type: Lookup.fromJson(parsedJson["type"]), - cylinderSize: Status.fromJson(parsedJson["size"]), + cylinderSize: Lookup.fromJson(parsedJson["size"]), requestedQuantity: parsedJson["requsted_qty"] == null ? 0 : int.tryParse(parsedJson["requsted_qty"].toString()) ?? 0, deliveredQuantity: parsedJson["deliverd_qty"] == null @@ -33,8 +33,8 @@ class GasRefillDetails{ factory GasRefillDetails.fromDetails(GasRefillDetails details){ return GasRefillDetails( - type: Status.fromStatus(details.type), - cylinderSize:Status.fromStatus(details.cylinderSize), + type: Lookup.fromStatus(details.type), + cylinderSize:Lookup.fromStatus(details.cylinderSize), requestedQuantity: details.requestedQuantity, deliveredQuantity: details.deliveredQuantity, ); diff --git a/lib/models/gas_refill/gas_refill_model.dart b/lib/models/gas_refill/gas_refill_model.dart index b0941c2b..28773fac 100644 --- a/lib/models/gas_refill/gas_refill_model.dart +++ b/lib/models/gas_refill/gas_refill_model.dart @@ -1,12 +1,12 @@ import 'package:test_sa/models/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; class GasRefillModel{ String id; String userId; String clientName; String title; - Status status; + Lookup status; List details; GasRefillModel({ @@ -30,7 +30,7 @@ class GasRefillModel{ userId = model.userId; clientName = model.clientName; title = model.title; - status = Status.fromStatus(model.status); + status = Lookup.fromStatus(model.status); details = model.details.map((e) => GasRefillDetails.fromDetails(e)).toList(); } @@ -45,7 +45,7 @@ class GasRefillModel{ userId: parsedJson["uid"], title: parsedJson["title"], clientName: parsedJson["client"], - status: Status.fromJson(parsedJson["status"]), + status: Lookup.fromJson(parsedJson["status"]), details: details, ); } diff --git a/lib/models/status.dart b/lib/models/lookup.dart similarity index 58% rename from lib/models/status.dart rename to lib/models/lookup.dart index 79786f40..93e1f9ec 100644 --- a/lib/models/status.dart +++ b/lib/models/lookup.dart @@ -1,10 +1,10 @@ -class Status{ +class Lookup{ final String label; final String key; final int id; - const Status({ + const Lookup({ this.label, this.key, this.id, @@ -12,7 +12,7 @@ class Status{ @override bool operator == (Object other) => - identical(this, other) || other is Status && + identical(this, other) || other is Lookup && key == other.key && id == other.id; @@ -20,26 +20,26 @@ class Status{ @override int get hashCode => id.hashCode; - factory Status.fromStatus(Status old){ - return Status( + factory Lookup.fromStatus(Lookup old){ + return Lookup( label: old.label, id: old.id, key: old.key, ); } - factory Status.fromJson(Map parsedJson){ + factory Lookup.fromJson(Map parsedJson){ if(parsedJson["id"] == null && parsedJson["uid"] == null) return null; - return Status( + return Lookup( label: parsedJson["value"], id: parsedJson["id"] is int - ? parsedJson["id"] - : int.tryParse(parsedJson["id"] ?? parsedJson["uid"]), + ? parsedJson["id"] + : int.tryParse(parsedJson["id"] ?? parsedJson["uid"]), ); } - factory Status.fromServiceReportJson(Map parsedJson){ - return Status( + factory Lookup.fromIntIdJson(Map parsedJson){ + return Lookup( label: parsedJson["value"], id: parsedJson["id"], ); diff --git a/lib/models/pantry/calibration_tools.dart b/lib/models/pantry/calibration_tools.dart new file mode 100644 index 00000000..2c70c6d2 --- /dev/null +++ b/lib/models/pantry/calibration_tools.dart @@ -0,0 +1,26 @@ +import 'package:test_sa/models/lookup.dart'; + +class CalibrationTool{ + Lookup assetsNumber; + DateTime dataOfTesting; + + CalibrationTool({ + this.assetsNumber, + this.dataOfTesting, + }); + + Map toMap() { + return { + if(assetsNumber != null) 'assetsSN': (assetsNumber?.id).toString(), + if(dataOfTesting != null) 'dataOfTesting': (dataOfTesting.millisecondsSinceEpoch ~/ 1000).toString(), + }; + } + + factory CalibrationTool.fromMap(Map map) { + return CalibrationTool( + assetsNumber: Lookup.fromJson(map['assetsSN']), + dataOfTesting: map['dataOfTesting'] == null || map['dataOfTesting'] == "" ? null : + DateTime.fromMillisecondsSinceEpoch(int.tryParse(map['dataOfTesting']) * 1000), + ); + } +} \ No newline at end of file diff --git a/lib/models/pantry/contact.dart b/lib/models/pantry/contact.dart new file mode 100644 index 00000000..50748bea --- /dev/null +++ b/lib/models/pantry/contact.dart @@ -0,0 +1,41 @@ +import 'package:test_sa/models/lookup.dart'; + +class Contact{ + Lookup title; + Lookup contactPerson; + String job; + String email; + String telephone; + String landLine; + + Contact({ + this.title, + this.contactPerson, + this.job, + this.email, + this.telephone, + this.landLine + }); + + Map toMap() { + return { + if (title != null) 'title': title.id.toString(), + if (contactPerson != null) 'contactPerson': contactPerson.id.toString(), + if (job != null) 'job': job, + if (email != null) 'email': email, + if (telephone != null) 'telephone': telephone, + if (landLine != null) 'landLine': landLine, + }; + } + + factory Contact.fromMap(Map map) { + return Contact( + title: map['title'] as Lookup, + contactPerson: map['contactPerson'] as Lookup, + job: map['job'] as String, + email: map['email'] as String, + telephone: map['telephone'] as String, + landLine: map['landLine'] as String, + ); + } +} \ No newline at end of file diff --git a/lib/models/pantry/lookups/contact_person.dart b/lib/models/pantry/lookups/contact_person.dart new file mode 100644 index 00000000..5231712c --- /dev/null +++ b/lib/models/pantry/lookups/contact_person.dart @@ -0,0 +1,15 @@ +import 'package:test_sa/models/lookup.dart'; + +class ContactTitle extends Lookup { + ContactTitle({ + int id, + String label + }):super(id: id,label: label); + + factory ContactTitle.fromMap(Map parsedJson){ + return ContactTitle( + label: parsedJson["value"], + id: parsedJson["id"], + ); + } +} \ No newline at end of file diff --git a/lib/models/pantry/lookups/contact_title.dart b/lib/models/pantry/lookups/contact_title.dart new file mode 100644 index 00000000..5231712c --- /dev/null +++ b/lib/models/pantry/lookups/contact_title.dart @@ -0,0 +1,15 @@ +import 'package:test_sa/models/lookup.dart'; + +class ContactTitle extends Lookup { + ContactTitle({ + int id, + String label + }):super(id: id,label: label); + + factory ContactTitle.fromMap(Map parsedJson){ + return ContactTitle( + label: parsedJson["value"], + id: parsedJson["id"], + ); + } +} \ No newline at end of file diff --git a/lib/models/pantry/pentry.dart b/lib/models/pantry/pentry.dart new file mode 100644 index 00000000..cee31181 --- /dev/null +++ b/lib/models/pantry/pentry.dart @@ -0,0 +1,121 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/pantry/calibration_tools.dart'; +import 'package:test_sa/models/pantry/contact.dart'; +import 'package:test_sa/models/pantry/pm_kit.dart'; +import 'package:test_sa/models/pantry/ppm_check_list.dart'; +import 'package:test_sa/models/timer_model.dart'; + +class Pentry{ + Lookup ppmVisitStatus; + Lookup status; + TimerModel timer; + DateTime actualVisitDate; + String travelingHours; + String image; + File imageFile; + // List contacts; + List ppmCheckLists; + List calibrationTools; + List pmKits; + + Pentry({ + this.travelingHours, + this.timer, + this.status, + this.ppmVisitStatus, + this.actualVisitDate, + this.image, + this.imageFile, + // this.contacts, + this.ppmCheckLists, + this.calibrationTools, + this.pmKits, + }); + + bool validate(){ + if(actualVisitDate == null) return false; + if(timer == null && timer.endAt != null) return false; + if(ppmVisitStatus == null) return false; + //if(status == null) return false; + + return true; + } + + Map toMap() { + Map map = {}; + map["visit_status"] = ppmVisitStatus?.id.toString(); + if(status != null) map["pentry_status"] = status?.id.toString(); + if(travelingHours != null) map["traveling_hours"] = travelingHours; + if(imageFile != null) map["file_attachement"] = base64Encode(imageFile.readAsBytesSync()); + map["actual_date"] = (actualVisitDate.millisecondsSinceEpoch / 1000).toStringAsFixed(0); + if(timer != null){ + map["start_date"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); + map["end_date"] = ((timer.endAt ?? DateTime.now()).millisecondsSinceEpoch / 1000).toStringAsFixed(0); + map["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); + } + // if(contacts?.isNotEmpty == true) { + // for(int i = 0;i e.toMap()).toList()); + map["calibrationTools"] = jsonEncode(calibrationTools.map((e) => e.toMap()).toList()); + map["pmKits"] = jsonEncode(pmKits.map((e) => e.toMap()).toList()); + return map; + } + + factory Pentry.fromMap(Map map) { + // List contacts = []; + // if(map['contacts'] != null){ + // contacts =(map['contacts'] as List) + // .map((e) => Contact.fromMap(e as Map)) + // .toList(); + // } + + List pmKits = []; + if(map['pmKits'] != null){ + pmKits =(map['pmKits'] as List) + .map((e) => PMKit.fromMap(e as Map)) + .toList(); + } + + List ppmCheckLists = []; + if(map['ppmCheckLists'] != null){ + ppmCheckLists =(map['ppmCheckLists'] as List) + .map((e) => PPMCheckList.fromMap(e as Map)) + .toList(); + } + + List calibrationTools = []; + if(map['calibrationTools'] != null){ + calibrationTools =(map['calibrationTools'] as List) + .map((e) => CalibrationTool.fromMap(e as Map)) + .toList(); + } + return Pentry( + status: Lookup.fromJson(map["pentry_status"]), + ppmVisitStatus: Lookup.fromJson(map["visit_status"]), + actualVisitDate: getDate(map["actual_date"]), + travelingHours: map["traveling_hours"], + timer: TimerModel( + startAt: getDate(map["start_date"]), + endAt: getDate(map["end_date"]), + durationInSecond: (int.tryParse(map["working_hours"] ?? "") ?? 0) * 60 *60 + ), + // contacts: contacts, + ppmCheckLists: ppmCheckLists, + calibrationTools: calibrationTools, + pmKits: pmKits, + ); + } + + static getDate(String date){ + return date == null || date.isEmpty + ? null : DateTime.fromMillisecondsSinceEpoch(int.tryParse(date) * 1000); + } +} \ No newline at end of file diff --git a/lib/models/pantry/pm_kit.dart b/lib/models/pantry/pm_kit.dart new file mode 100644 index 00000000..0a008e5f --- /dev/null +++ b/lib/models/pantry/pm_kit.dart @@ -0,0 +1,45 @@ +import 'package:test_sa/models/lookup.dart'; + +class PMKit{ + Lookup itemCode; + String itemName; + String preparationTimeFrame; + String kitFrequencyDemand; + String availability; + String quantityNeeded; + String quantityReserved; + + PMKit({ + this.itemCode, + this.itemName, + this.preparationTimeFrame, + this.kitFrequencyDemand, + this.availability, + this.quantityNeeded, + this.quantityReserved + }); + + Map toMap() { + return { + if(itemCode != null) 'itemCode': (itemCode?.id).toString(), + if(itemName != null) 'itemName': itemName, + if(preparationTimeFrame != null) 'preparationTimeFrame': preparationTimeFrame, + if(kitFrequencyDemand != null) 'kitFrequencyDemand': kitFrequencyDemand, + if(availability != null) 'availability': availability, + if(quantityNeeded != null) 'quantityNeeded': quantityNeeded, + if(quantityReserved != null) 'quantityReserved': quantityReserved, + }; + } + + factory PMKit.fromMap(Map map) { + return PMKit( + itemCode: Lookup.fromJson(map['itemCode']), + itemName: map['itemName'] as String, + preparationTimeFrame: map['preparationTimeFrame'] as String, + kitFrequencyDemand: map['kitFrequencyDemand'] as String, + availability: map['availability'] as String, + quantityNeeded: map['quantityNeeded'] as String, + quantityReserved: map['quantityReserved'] as String, + ); + } +} \ No newline at end of file diff --git a/lib/models/pantry/ppm_check_list.dart b/lib/models/pantry/ppm_check_list.dart new file mode 100644 index 00000000..8f1a14d7 --- /dev/null +++ b/lib/models/pantry/ppm_check_list.dart @@ -0,0 +1,33 @@ +import 'package:test_sa/models/lookup.dart'; + +class PPMCheckList{ + Lookup status; + String title; + String comment; + String measuredValue; + + PPMCheckList({ + this.title, + this.status, + this.comment, + this.measuredValue, + }); + + Map toMap() { + return { + if(status != null) 'status': status?.id.toString(), + if(title != null) 'title': title, + if(comment != null) 'comment': comment, + if(measuredValue != null) 'measuredValue': measuredValue, + }; + } + + factory PPMCheckList.fromMap(Map map) { + return PPMCheckList( + status: Lookup.fromJson(map['status']), + title: map['title'] as String, + comment: map['comment'] as String, + measuredValue: map['measuredValue'] as String, + ); + } +} \ No newline at end of file diff --git a/lib/models/service_report.dart b/lib/models/service_report.dart index 7737c9f5..33bb2fd2 100644 --- a/lib/models/service_report.dart +++ b/lib/models/service_report.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/part.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/timer_model.dart'; class ServiceReport { @@ -10,11 +10,11 @@ class ServiceReport { String operatingHours; DateTime visitDate; DateTime endDate; - Status serviceType; - Status callLastSituation; - Status status; - Status type; - Status reason; + Lookup serviceType; + Lookup callLastSituation; + Lookup status; + Lookup type; + Lookup reason; String faultDescription; String workPreformed; //String workHours; @@ -90,7 +90,6 @@ class ServiceReport { } bool validate(){ - if(visitDate == null) return false; if(serviceType == null) return false; if(status == null) return false; @@ -120,11 +119,11 @@ class ServiceReport { } return ServiceReport( id: id, - serviceType: Status.fromJson(parsedJson["service_type"]), - callLastSituation: Status.fromJson(parsedJson["call_last_situtation"]), - reason: Status.fromJson(parsedJson["reasons"]), - status: Status.fromJson(parsedJson["service_report_status"]), - type: Status.fromJson(parsedJson["service_report_type"]), + serviceType: Lookup.fromJson(parsedJson["service_type"]), + callLastSituation: Lookup.fromJson(parsedJson["call_last_situtation"]), + reason: Lookup.fromJson(parsedJson["reasons"]), + status: Lookup.fromJson(parsedJson["service_report_status"]), + type: Lookup.fromJson(parsedJson["service_report_type"]), faultDescription: parsedJson["fault_description"], endDate:getDate(parsedJson["end_date"]), invoiceCode: parsedJson["invoice_code"], diff --git a/lib/models/service_request/service_request.dart b/lib/models/service_request/service_request.dart index 81ea6744..ae6f9370 100644 --- a/lib/models/service_request/service_request.dart +++ b/lib/models/service_request/service_request.dart @@ -1,3 +1,5 @@ +import 'package:test_sa/models/lookup.dart'; + import '../timer_model.dart'; class ServiceRequest{ @@ -27,6 +29,9 @@ class ServiceRequest{ DateTime nextVisitDate; String jobSheetNumber; String reportID; + String deviceNumber; + Lookup priority; + Lookup defectType; ServiceRequest({ this.id, @@ -55,6 +60,9 @@ class ServiceRequest{ this.nextVisitDate, this.workPerformed, this.reportID, + this.defectType, + this.priority, + this.deviceNumber, }); @@ -63,6 +71,7 @@ class ServiceRequest{ id: parsedJson["nid"], requestCode: parsedJson["call_id"] ?? parsedJson["jobcode"] , hospitalName: parsedJson["call_client"], + deviceNumber: parsedJson["device_no"], deviceId: parsedJson["deviceid"], audio: parsedJson["audio"] ?? "", deviceArName: parsedJson["equipment_arabic_name"] == false diff --git a/lib/models/user.dart b/lib/models/user.dart index 10fb06be..caa9e7fb 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -3,13 +3,12 @@ import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/hospital.dart'; -class User{ +class User { String id; String userName; String password; String email; String image; - String hospitalID; Hospital hospital; Department department; UsersTypes type; @@ -18,103 +17,95 @@ class User{ String token; bool isActive; - - User({ - this.id, - this.userName = "", - this.email = "", - this.password = "", - this.phoneNumber = "", - this.hospital, - this.image, - this.department, - this.type, - this.whatsApp, - this.token, - this.isActive = false - }); + User( + {this.id, + this.userName = "", + this.email = "", + this.password = "", + this.phoneNumber = "", + this.hospital, + this.image, + this.department, + this.type, + this.whatsApp, + this.token, + this.isActive = false}); Future> toLoginJson() async { - if(FirebaseNotificationManger.token == null) - await FirebaseNotificationManger.getToken(); + if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken(); return { - "username":userName, - "pass":password, + "username": userName, + "pass": password, "firebase_token": FirebaseNotificationManger?.token ?? "", }; } - Map toUpdateProfileJson(){ - Map jsonObject ={}; - if(department?.id != null && department.id.isNotEmpty) - jsonObject["department"] = department.id; - if(whatsApp != null && whatsApp.isNotEmpty) - jsonObject["whatsapp"] = whatsApp; - if(phoneNumber != null && phoneNumber.isNotEmpty) - jsonObject["phone"] = phoneNumber; + Map toUpdateProfileJson() { + Map jsonObject = {}; + if (department?.id != null && department.id.isNotEmpty) jsonObject["department"] = department.id; + if (whatsApp != null && whatsApp.isNotEmpty) jsonObject["whatsapp"] = whatsApp; + if (phoneNumber != null && phoneNumber.isNotEmpty) jsonObject["phone"] = phoneNumber; return jsonObject; } Future> toRegisterJson() async { - if(FirebaseNotificationManger.token == null) - await FirebaseNotificationManger.getToken(); + if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken(); return { "username": userName, - "email":email, - "whatsapp":whatsApp, - "client":hospital.id, - "department":department?.id, - "phone":phoneNumber, - "pass":password, + "email": email, + "whatsapp": whatsApp, + "client": hospital.id, + "department": department?.id, + "phone": phoneNumber, + "pass": password, "firebase_token": FirebaseNotificationManger?.token ?? "", }; } - Map toJson(){ + Map toJson() { return { - "uid":id, + "uid": id, "name": userName, - "email":email, - "token":token, - "phone":phoneNumber, - "whatsapp":whatsApp, - "client":hospital?.id, - "client_name":hospital?.name, - "department":department?.id, - "department_name":department?.name, - "password":password, - "picture":image, - "active":isActive ? 1 : 0, - "role": type == UsersTypes.engineer - ? "field_engineer" : "normal_user" , - // "token":token, pass is token + "email": email, + "token": token, + "phone": phoneNumber, + "whatsapp": whatsApp, + "client": hospital?.id, + "client_name": hospital?.name, + "department": department?.id, + "department_name": department?.name, + "password": password, + "picture": image, + "active": isActive ? 1 : 0, + "role": type == UsersTypes.engineer ? "field_engineer" : "normal_user", + // "token":token, pass is token }; } - factory User.fromJson(Map parsedJson){ + factory User.fromJson(Map parsedJson) { UsersTypes type; - switch(parsedJson["role"]){ - case "field_engineer": type = UsersTypes.engineer; break; - default: type = UsersTypes.normal_user; break; + switch (parsedJson["role"]) { + case "field_engineer": + type = UsersTypes.engineer; + break; + default: + type = UsersTypes.normal_user; + break; } return User( - id: parsedJson["uid"], - userName: parsedJson["name"] ?? parsedJson["title"], - email: parsedJson["mail"] ?? parsedJson["email"], - hospital: Hospital( - id: parsedJson["client"], - name: parsedJson["client_name"] - ), - department: Department( - id: parsedJson["department"], - name: parsedJson["department_name"], - ), - image: parsedJson["picture"], - phoneNumber: parsedJson["phone"], - whatsApp: parsedJson["whatsapp"], - token: parsedJson["token"], - isActive: parsedJson["active"] == "1", - type:type - ); + id: parsedJson["uid"], + userName: parsedJson["name"] ?? parsedJson["title"], + email: parsedJson["mail"] ?? parsedJson["email"], + hospital: Hospital(id: parsedJson["client"], name: parsedJson["client_name"]), + department: Department( + id: parsedJson["department"], + name: parsedJson["department_name"], + ), + image: parsedJson["picture"], + phoneNumber: parsedJson["phone"], + whatsApp: parsedJson["whatsapp"], + token: parsedJson["token"], + isActive: parsedJson["active"] == "1", + type: type); } -} \ No newline at end of file +} diff --git a/lib/models/visits/visit.dart b/lib/models/visits/visit.dart index 55071bf9..da3a2143 100644 --- a/lib/models/visits/visit.dart +++ b/lib/models/visits/visit.dart @@ -1,4 +1,4 @@ -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/timer_model.dart'; class Visit{ @@ -16,8 +16,9 @@ class Visit{ String employName; String modelAndBrand; String contactStatus; - Status status; + Lookup status; String assignTo; + String deviceNumber; List images; Visit({ @@ -38,6 +39,7 @@ class Visit{ this.contactStatus, this.images, this.assignTo, + this.deviceNumber, }); factory Visit.fromJson(Map parsedJson){ @@ -45,6 +47,7 @@ class Visit{ id: parsedJson["nid"], serialNumber: parsedJson["title"], hospitalId: parsedJson["client"], + deviceNumber: parsedJson["device_no"], hospitalName: parsedJson["client_name"], deviceId: parsedJson["medical_equipment_nid"], deviceSerialNumber: parsedJson["medical_equipment"], @@ -57,7 +60,7 @@ class Visit{ modelAndBrand: parsedJson["mode_brand"], contactStatus: parsedJson["contactStatus"], images: List.from(parsedJson["images"] ?? []), - status: Status( + status: Lookup( id: int.tryParse(parsedJson["status"] ?? "-1"), // actual value (0,1,2) label: parsedJson["status_value"] // text value ), diff --git a/lib/models/visits/visits_group.dart b/lib/models/visits/visits_group.dart index b408e934..abe6dfc0 100644 --- a/lib/models/visits/visits_group.dart +++ b/lib/models/visits/visits_group.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/visits/visit.dart'; class VisitsGroup{ @@ -8,8 +8,8 @@ class VisitsGroup{ String travelingHours; String jobSheetNumber; String image; - Status status; - Status taskStatus; + Lookup status; + Lookup taskStatus; DateTime date; List visits; diff --git a/lib/views/app_style/colors.dart b/lib/views/app_style/colors.dart index 921cb636..b6200b0e 100644 --- a/lib/views/app_style/colors.dart +++ b/lib/views/app_style/colors.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; class AColors { AColors._(); static const Color white = Color(0xffffffff); diff --git a/lib/views/pages/device_transfer/track_device_transfer.dart b/lib/views/pages/device_transfer/track_device_transfer.dart index 02da4946..7308617f 100644 --- a/lib/views/pages/device_transfer/track_device_transfer.dart +++ b/lib/views/pages/device_transfer/track_device_transfer.dart @@ -65,7 +65,7 @@ class _TrackDeviceTransferPageState extends State Expanded( child: Center( child: Text( - _subtitle.serviceRequests, + "Device Transfer", style: Theme.of(context).textTheme.headline6.copyWith( color: AColors.white, fontStyle: FontStyle.italic diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index c5ae3187..059f3963 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -279,8 +279,8 @@ class _LandPageState extends State { padding: EdgeInsets.all(4), decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle), child: ClipOval( - child: ImageLoader( - url: "https://cdn.business2community.com/wp-content/uploads/2017/08/blank-profile-picture-973460_640.png", + child: ClipOval( + child: Icon(Icons.person,size: 72,color: Theme.of(context).colorScheme.primary,), ), ), ), @@ -345,27 +345,27 @@ class _LandPageState extends State { launch("mailto:customerservice@Test SA.com"); }, ), - DrawerItem( - icon: Icons.phone_in_talk, - title: "${_subtitle.hotLine} 15564", - onPressed: () { - launch("tel:15564"); - }, - ), - DrawerItem( - icon: FontAwesomeIcons.linkedinIn, - title: _subtitle.linkedIn, - onPressed: () { - launch("https://www.linkedin.com/company/Test SA/"); - }, - ), - DrawerItem( - icon: FontAwesomeIcons.globe, - title: _subtitle.ourWebsite, - onPressed: () { - launch("https://www.Test SA.com/"); - }, - ), + // DrawerItem( + // icon: Icons.phone_in_talk, + // title: "${_subtitle.hotLine} 15564", + // onPressed: () { + // launch("tel:15564"); + // }, + // ), + // DrawerItem( + // icon: FontAwesomeIcons.linkedinIn, + // title: _subtitle.linkedIn, + // onPressed: () { + // launch("https://www.linkedin.com/company/Test SA/"); + // }, + // ), + // DrawerItem( + // icon: FontAwesomeIcons.globe, + // title: _subtitle.ourWebsite, + // onPressed: () { + // launch("https://www.Test SA.com/"); + // }, + // ), DrawerItem( icon: Icons.share, title: _subtitle.shareApp, diff --git a/lib/views/pages/user/requests/create_request.dart b/lib/views/pages/user/requests/create_request.dart index 32a4e29f..bdbb72e0 100644 --- a/lib/views/pages/user/requests/create_request.dart +++ b/lib/views/pages/user/requests/create_request.dart @@ -25,6 +25,9 @@ import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/sound/record_sound.dart'; import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart'; +import 'package:test_sa/views/widgets/status/service_request/service_request_defect_types_mune.dart'; +import 'package:test_sa/views/widgets/status/service_request/service_request_priority_mune.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; class CreateRequestPage extends StatefulWidget { static final String id = "/create-request"; @@ -111,7 +114,7 @@ class _CreateRequestPageState extends State { initialValue: _userProvider.user.hospital?.name ?? _subtitle.noHospitalFound, hintText: _subtitle.hospital, prefixIconData: FontAwesomeIcons.hospital, - style: Theme.of(context).textTheme.headline6, + style: Theme.of(context).textTheme.subtitle1, ), 12.height, _userProvider.user.department == null @@ -121,7 +124,7 @@ class _CreateRequestPageState extends State { initialValue: _userProvider.user.department?.name ?? _subtitle.noUniteFound, hintText: _subtitle.unite, prefixIconData: FontAwesomeIcons.hospitalUser, - style: Theme.of(context).textTheme.headline6, + style: Theme.of(context).textTheme.subtitle1, ), 12.height, DeviceButton( @@ -131,6 +134,24 @@ class _CreateRequestPageState extends State { setState(() {}); }, ), + const SizedBox(height: 8,), + const ASubTitle("Priority"), + const SizedBox(height: 4,), + ServiceRequestPriorityMenu( + initialValue: _serviceRequest.priority, + onSelect: (status){ + _serviceRequest.priority = status; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Defect Type"), + const SizedBox(height: 4,), + ServiceRequestDefectTypesMenu( + initialValue: _serviceRequest.defectType, + onSelect: (status){ + _serviceRequest.defectType = status; + }, + ), 12.height, MultiImagesPicker( label: _subtitle.deviceImages, diff --git a/lib/views/pages/user/requests/report/create_service_report.dart b/lib/views/pages/user/requests/report/create_service_report.dart index b509b58d..b9f353be 100644 --- a/lib/views/pages/user/requests/report/create_service_report.dart +++ b/lib/views/pages/user/requests/report/create_service_report.dart @@ -12,7 +12,7 @@ import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; @@ -68,7 +68,7 @@ class _CreateServiceReportState extends State with TickerPr void initState() { _serviceReport = ServiceReport( visitDate: DateTime.now(), - type: const Status(id: 2), + type: const Lookup(id: 2), device: Device( id: widget.request.deviceId, serialNumber: widget.request.deviceSerialNumber, @@ -159,25 +159,25 @@ class _CreateServiceReportState extends State with TickerPr Row( children: [ // Report Status - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.reportType), - _validate && _serviceReport.type == null ? - ASubTitle(_subtitle.requiredWord,color: Colors.red,): - const SizedBox.shrink(), - const SizedBox(height: 4,), - ServiceReportTypeMenu( - initialValue: _serviceReport.type, - onSelect: (status){ - _serviceReport.type = status; - }, - ), - ], - ), - ), - const SizedBox(width: 8,), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.reportType), + // _validate && _serviceReport.type == null ? + // ASubTitle(_subtitle.requiredWord,color: Colors.red,): + // const SizedBox.shrink(), + // const SizedBox(height: 4,), + // ServiceReportTypeMenu( + // initialValue: _serviceReport.type, + // onSelect: (status){ + // _serviceReport.type = status; + // }, + // ), + // ], + // ), + // ), + // const SizedBox(width: 8,), // visit date Expanded( child: Column( @@ -490,9 +490,9 @@ class _CreateServiceReportState extends State with TickerPr textAlign: TextAlign.center, hintText: "i.e 3, 3.5, 4", style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, + // validator: (value) => + // Validator.isNumeric(value) + // ? null : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value){ _serviceReport.travelingHours = value; @@ -507,29 +507,29 @@ class _CreateServiceReportState extends State with TickerPr // Operating Hours and Job Sheet Number Row( children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.operatingHours), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.operatingHours, - textAlign: TextAlign.center, - hintText: "i.e 3, 3.5, 4", - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.number, - onSaved: (value){ - _serviceReport.operatingHours = value; - }, - ), - ], - ), - ), - const SizedBox(width: 8,), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.operatingHours), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.operatingHours, + // textAlign: TextAlign.center, + // hintText: "i.e 3, 3.5, 4", + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.isNumeric(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.number, + // onSaved: (value){ + // _serviceReport.operatingHours = value; + // }, + // ), + // ], + // ), + // ), + // const SizedBox(width: 8,), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/views/pages/user/requests/report/edit_service_report.dart b/lib/views/pages/user/requests/report/edit_service_report.dart index aeed77b5..1ca58282 100644 --- a/lib/views/pages/user/requests/report/edit_service_report.dart +++ b/lib/views/pages/user/requests/report/edit_service_report.dart @@ -12,7 +12,7 @@ import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; diff --git a/lib/views/pages/user/requests/request_details.dart b/lib/views/pages/user/requests/request_details.dart index c9e78584..5e2d80f9 100644 --- a/lib/views/pages/user/requests/request_details.dart +++ b/lib/views/pages/user/requests/request_details.dart @@ -182,6 +182,10 @@ class RequestDetailsPage extends StatelessWidget { title: _subtitle.code, info: serviceRequest.requestCode, ), + RequestInfoRow( + title: "Asset Number", + info: serviceRequest.deviceNumber, + ), RequestInfoRow( title: _subtitle.deviceSN, info: serviceRequest.deviceSerialNumber, @@ -230,10 +234,10 @@ class RequestDetailsPage extends StatelessWidget { title: _subtitle.unite, info: serviceRequest.departmentName, ), - RequestInfoRow( - title: _subtitle.deviceArName, - content: serviceRequest.deviceArName, - ), + // RequestInfoRow( + // title: _subtitle.deviceArName, + // content: serviceRequest.deviceArName, + // ), RequestInfoRow( title: _subtitle.deviceEnName, content: serviceRequest.deviceEnName, diff --git a/lib/views/pages/user/visits/pantry/edit_pentry.dart b/lib/views/pages/user/visits/pantry/edit_pentry.dart new file mode 100644 index 00000000..7c9201b1 --- /dev/null +++ b/lib/views/pages/user/visits/pantry/edit_pentry.dart @@ -0,0 +1,187 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/pantry/pentry.dart'; +import 'package:test_sa/models/subtitle.dart'; +import 'package:test_sa/models/visits/visit.dart'; +import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/pentry/pentry_calibration_tool_form.dart'; +import 'package:test_sa/views/widgets/pentry/pentry_info_form.dart'; +import 'package:test_sa/views/widgets/pentry/pentry_pm_kit_form.dart'; +import 'package:test_sa/views/widgets/pentry/pentry_ppm_check_list_form.dart'; + +class EditPentry extends StatefulWidget { + final Pentry pentry; + final Visit visit; + const EditPentry({Key key,this.pentry, this.visit}) : super(key: key); + + @override + State createState() => _EditPentryState(); +} + +class _EditPentryState extends State with SingleTickerProviderStateMixin{ + bool _isLoading = false; + bool _validate = false; + Subtitle _subtitle; + UserProvider _userProvider; + SettingProvider _settingProvider; + RegularVisitsProvider _regularVisitsProvider; + Pentry _pentry; + final GlobalKey _scaffoldKey = GlobalKey(); + + TabController _tabController; + _onSubmit() async { + _validate = true; + + if(!_pentry.validate()) { + setState(() { }); + return; + } + + _isLoading = true; + setState(() {}); + + int status = await _regularVisitsProvider.updatePentry( + user: _userProvider.user, + host: _settingProvider.host, + pentry: _pentry, + visit: widget.visit + ); + _isLoading =false; + setState(() {}); + if(status >= 200 && status < 300){ + Fluttertoast.showToast( + msg: _subtitle.requestCompleteSuccessfully, + ); + // Navigator.of(context).pop(); + }else{ + String errorMessage = HttpStatusManger.getStatusMessage( + status: status, subtitle: _subtitle); + Fluttertoast.showToast( + msg: errorMessage, + ); + } + } + + @override + void initState() { + _pentry = widget.pentry; + _tabController = TabController(length: 4, vsync: this); + super.initState(); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + _subtitle = AppLocalization.of(context).subtitle; + _userProvider = Provider.of(context); + _settingProvider = Provider.of(context); + _regularVisitsProvider = Provider.of(context); + return Scaffold( + key: _scaffoldKey, + body: SafeArea( + child: LoadingManager( + isLoading: _isLoading, + isFailedLoading: false, + stateCode: 200, + onRefresh: () async {}, + child: Column( + children: [ + Material( + color: Theme.of(context).colorScheme.primary, + child: Padding( + padding: const EdgeInsets.all(2.0), + child: TabBar( + controller: _tabController, + isScrollable: true, + onTap: (index){ + setState(() {}); + }, + tabs: const [ + Tab(text: "PPM Check List",), + Tab(text: "Calibration Tools",), + Tab(text: "PK Kits",), + Tab(text: "Pentry",), + ]), + ), + ), + Expanded( + child: Stack( + children: [ + TabBarView( + physics: const NeverScrollableScrollPhysics(), + controller: _tabController, + children: [ + PentryPPMCheckListForm( + models: _pentry.ppmCheckLists, + enableValidate: _validate, + ), + PentryCalibrationToolForm( + models: _pentry.calibrationTools, + enableValidate: _validate, + ), + PentryPMKitForm( + models: _pentry.pmKits, + enableValidate: _validate, + ), + PentryInfoForm( + model: _pentry, + enableValidate: _validate, + ) + ], + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + if(_tabController.index != 0) + ASmallButton( + text: _subtitle.back, + onPressed: (){ + _tabController.animateTo(_tabController.index - 1,); + setState(() {}); + }, + ), + const Spacer(), + if(_tabController.index != _tabController.length -1) + ASmallButton( + text: _subtitle.next, + onPressed: (){ + _tabController.animateTo(_tabController.index + 1,); + setState(() {}); + }, + ), + if(_tabController.index == _tabController.length -1) + ASmallButton( + text: _subtitle.update, + onPressed: _onSubmit, + ), + ], + ), + ), + ) + ], + ), + ), + + ], + ) + ), + ), + ); + } +} + diff --git a/lib/views/pages/user/visits/pantry/future_edit_pently.dart b/lib/views/pages/user/visits/pantry/future_edit_pently.dart new file mode 100644 index 00000000..161df3ce --- /dev/null +++ b/lib/views/pages/user/visits/pantry/future_edit_pently.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/pantry/pentry.dart'; +import 'package:test_sa/models/subtitle.dart'; +import 'package:test_sa/models/visits/visit.dart'; +import 'package:test_sa/views/pages/user/visits/pantry/edit_pentry.dart'; +import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; +class FutureEditPentry extends StatefulWidget { + + final Visit visit; + + const FutureEditPentry({Key key, this.visit}) : super(key: key); + + @override + State createState() => _FutureEditPentryState(); +} + +class _FutureEditPentryState extends State { + + UserProvider _userProvider; + SettingProvider _settingProvider; + @override + Widget build(BuildContext context) { + _userProvider = Provider.of(context); + _settingProvider = Provider.of(context); + //String requestId = ModalRoute.of(context).settings.arguments; + Subtitle subtitle = AppLocalization.of(context).subtitle; + return Scaffold( + body: FutureBuilder( + future: RegularVisitsProvider().getPently( + user: _userProvider.user, + host: _settingProvider.host, + id: widget.visit.id + ), + builder: (BuildContext context, AsyncSnapshot snapshot){ + if(snapshot.hasError) { + + return FailedLoading( + message: subtitle.failedToCompleteRequest, + onReload: (){setState(() {});}, + ); + } + if(snapshot.hasData){ + return EditPentry( + pentry: snapshot.data, + visit: widget.visit, + ); + } + return const Center(child: ALoading()); + }, + ), + ); + } +} diff --git a/lib/views/pages/user/visits/update_visits_group_sheet.dart b/lib/views/pages/user/visits/update_visits_group_sheet.dart index 50d925d5..8be79f27 100644 --- a/lib/views/pages/user/visits/update_visits_group_sheet.dart +++ b/lib/views/pages/user/visits/update_visits_group_sheet.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visits_group.dart'; @@ -26,15 +26,15 @@ class UpdateVisitsGroupSheet extends StatefulWidget { } class _UpdateVisitsGroupSheetState extends State { - List status = [ - Status(label: "Done", id: 0,), - Status(label: "Not Yet", id: 1), - Status(label: "On Hold", id: 2,), + List status = [ + Lookup(label: "Done", id: 0,), + Lookup(label: "Not Yet", id: 1), + Lookup(label: "On Hold", id: 2,), ]; - List taskStatus = [ - Status(label: "Passed", id: 0,), - Status(label: "Failed", id: 1), + List taskStatus = [ + Lookup(label: "Passed", id: 0,), + Lookup(label: "Failed", id: 1), ]; VisitsGroup _group = VisitsGroup(); File _image; diff --git a/lib/views/pages/user/visits/visit_details.dart b/lib/views/pages/user/visits/visit_details.dart index 98738c36..342bf02c 100644 --- a/lib/views/pages/user/visits/visit_details.dart +++ b/lib/views/pages/user/visits/visit_details.dart @@ -1,15 +1,21 @@ +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/pages/user/visits/pantry/future_edit_pently.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; +import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/images/images_list.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart'; import 'package:flutter/material.dart'; +import '../../../../controllers/providers/api/regular_visits_provider.dart'; + + class VisitDetailsPage extends StatelessWidget { static final String id = "/visit-details"; final Visit visit; @@ -18,6 +24,8 @@ class VisitDetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { Subtitle _subtitle = AppLocalization.of(context).subtitle; + final regularVisitsProvider = Provider.of(context); + return Scaffold( body: SafeArea( child: Column( @@ -39,7 +47,18 @@ class VisitDetailsPage extends StatelessWidget { ), ), ), - SizedBox(width: 42,) + AIconButton( + iconData: Icons.edit, + color: AColors.white, + buttonSize: 42, + backgroundColor: AColors.green, + onPressed: () async { + Navigator.of(context).push( + MaterialPageRoute(builder: (_)=> FutureEditPentry(visit: visit,)) + ); + }, + ), + SizedBox(width: 16,) ], ), ), @@ -87,6 +106,10 @@ class VisitDetailsPage extends StatelessWidget { title: _subtitle.code, info: visit.serialNumber, ), + RequestInfoRow( + title: "Asset Number", + info: visit.deviceNumber, + ), RequestInfoRow( title: _subtitle.deviceSN, info: visit.deviceSerialNumber, diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 4ce1dd9f..291a7e46 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -14,13 +14,13 @@ class ADatePicker extends StatelessWidget { Widget build(BuildContext context) { return ElevatedButton( style: ElevatedButton.styleFrom( + foregroundColor: Colors.white, + textStyle: Theme.of(context).textTheme.subtitle2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( 12 * AppStyle.getScaleFactor(context) - ) + ), ), - primary: AColors.white, - onPrimary: AColors.primaryColor, ), child: Text( date == null ? "Pick Date" : diff --git a/lib/views/widgets/equipment/auto_complete_devices_field.dart b/lib/views/widgets/equipment/auto_complete_devices_field.dart index c9e11872..ec91ae17 100644 --- a/lib/views/widgets/equipment/auto_complete_devices_field.dart +++ b/lib/views/widgets/equipment/auto_complete_devices_field.dart @@ -43,65 +43,52 @@ class _AutoCompleteDeviceFieldState extends State { _userProvider = Provider.of(context); _devicesProvider = Provider.of(context); //Subtitle _subtitle = AppLocalization.of(context).subtitle; - return LoadingManager( - isLoading: _devicesProvider.isLoading, - isFailedLoading: _devicesProvider.devices == null, - stateCode: _devicesProvider.stateCode, - onRefresh: () async { - _devicesProvider.reset(); - await _devicesProvider.getEquipment( - host: _settingProvider.host, - user: _userProvider.user, - hospitalId: widget.hospitalId - ); - }, - child: Container( - padding: EdgeInsets.symmetric( - horizontal: 16 - ), - decoration: BoxDecoration( - color: Colors.white, - border: Border.all(color:AColors.black), - borderRadius: BorderRadius.circular( - AppStyle.borderRadius * AppStyle.getScaleFactor(context) - ), - boxShadow: [ - AppStyle.boxShadow - ] + return Container( + padding: const EdgeInsets.symmetric( + horizontal: 16 + ), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color:AColors.black), + borderRadius: BorderRadius.circular( + AppStyle.borderRadius * AppStyle.getScaleFactor(context) ), - child: TypeAheadField( - textFieldConfiguration: TextFieldConfiguration( - style: Theme.of(context).textTheme.headline6, - controller: _controller, - textAlign: TextAlign.center, - decoration: InputDecoration( - border: InputBorder.none, - disabledBorder: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - ), - textInputAction: TextInputAction.search, + boxShadow: [ + AppStyle.boxShadow + ] + ), + child: TypeAheadField( + textFieldConfiguration: TextFieldConfiguration( + style: Theme.of(context).textTheme.headline6, + controller: _controller, + textAlign: TextAlign.center, + decoration: const InputDecoration( + border: InputBorder.none, + disabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, ), - suggestionsCallback: (vale) async { - return await _devicesProvider.getDevicesList( - host: _settingProvider.host, - user: _userProvider.user, - hospitalId: widget.hospitalId, - title: vale, - ); - }, - itemBuilder: (context, device) { - return ListTile( - title: Text(device.serialNumber), - subtitle: Text(device.model+"/"+device.brand), - ); - }, - onSuggestionSelected: (device) { - _controller.text = device.serialNumber; - widget.onPick(device.id); - }, - ), + textInputAction: TextInputAction.search, ), + suggestionsCallback: (value) async { + return await _devicesProvider.getDevicesList( + host: _settingProvider.host, + user: _userProvider.user, + hospitalId: widget.hospitalId, + serialNumber: value, + ); + }, + itemBuilder: (context, device) { + return ListTile( + title: Text(device.serialNumber), + subtitle: Text(device.model+"/"+device.brand), + ); + }, + onSuggestionSelected: (device) { + _controller.text = device.serialNumber; + widget.onPick(device.id); + }, + ), ); } } diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 9ecd0bbe..9d50f479 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -88,22 +88,41 @@ class _SingleDevicePickerState extends State { }, child: Column( children: [ - SizedBox(height: 48,), + const SizedBox(height: 48), Padding( padding: const EdgeInsets.symmetric(vertical: 8,horizontal: 16), - child: ATextFormField( - hintText: _subtitle.searchBySn, - style: Theme.of(context).textTheme.headline6, - suffixIcon: const Icon(Icons.search_rounded), - onChange: (value){ - _searchableList.clear(); - _searchableList.addAll(_devicesProvider.devices.where( - (element) => element.serialNumber.toLowerCase().contains( + child: Column( + children: [ + ATextFormField( + hintText: _subtitle.searchBySn, + style: Theme.of(context).textTheme.subtitle1, + suffixIcon: const Icon(Icons.search_rounded), + onChange: (value){ + _searchableList.clear(); + _searchableList.addAll(_devicesProvider.devices.where( + (element) => element.serialNumber.toLowerCase().contains( value.toLowerCase() - ) - ).toList()); - setState(() {}); - }, + ) + ).toList()); + setState(() {}); + }, + ), + const SizedBox(height: 8,), + ATextFormField( + hintText: "Search by Number", + style: Theme.of(context).textTheme.subtitle1, + suffixIcon: const Icon(Icons.search_rounded), + onChange: (value){ + _searchableList.clear(); + _searchableList.addAll(_devicesProvider.devices.where( + (element) => element.number.toLowerCase().contains( + value.toLowerCase() + ) + ).toList()); + setState(() {}); + }, + ), + ], ), ), Expanded( diff --git a/lib/views/widgets/hospitals/auto_complete_field.dart b/lib/views/widgets/hospitals/hospital_auto_complete_field.dart similarity index 89% rename from lib/views/widgets/hospitals/auto_complete_field.dart rename to lib/views/widgets/hospitals/hospital_auto_complete_field.dart index 6ce29dcf..863ebc08 100644 --- a/lib/views/widgets/hospitals/auto_complete_field.dart +++ b/lib/views/widgets/hospitals/hospital_auto_complete_field.dart @@ -10,18 +10,18 @@ import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_item.dart'; -class AutoCompleteField extends StatefulWidget { +class HospitalAutoCompleteField extends StatefulWidget { final String initialValue; final Function(String) onSearch; final Function(String) onSave; - const AutoCompleteField({Key key, this.onSearch, this.initialValue, this.onSave}) : super(key: key); + const HospitalAutoCompleteField({Key key, this.onSearch, this.initialValue, this.onSave}) : super(key: key); @override - _AutoCompleteFieldState createState() => _AutoCompleteFieldState(); + _HospitalAutoCompleteFieldState createState() => _HospitalAutoCompleteFieldState(); } -class _AutoCompleteFieldState extends State { +class _HospitalAutoCompleteFieldState extends State { SettingProvider _settingProvider; TextEditingController _controller; diff --git a/lib/views/widgets/images/mini_one_image_picker.dart b/lib/views/widgets/images/mini_one_image_picker.dart index 0f696032..b26e9f49 100644 --- a/lib/views/widgets/images/mini_one_image_picker.dart +++ b/lib/views/widgets/images/mini_one_image_picker.dart @@ -70,7 +70,8 @@ class _AMiniOneImagePickerState extends State { AppStyle.borderRadius * AppStyle.getScaleFactor(context) ) ), - primary: Colors.grey[200], + //primary: Colors.grey[200], + textStyle: Theme.of(context).textTheme.overline, padding: _image == null ? null : EdgeInsets.zero, ), @@ -78,7 +79,6 @@ class _AMiniOneImagePickerState extends State { padding: const EdgeInsets.all(8.0), child: Text( _image == null ? _subtitle.pickImage : _image.path.split("/").last, - style: Theme.of(context).textTheme.overline, textScaleFactor: AppStyle.getScaleFactor(context), ), ), diff --git a/lib/views/widgets/images/multi_image_picker.dart b/lib/views/widgets/images/multi_image_picker.dart index 0173336f..854209bb 100644 --- a/lib/views/widgets/images/multi_image_picker.dart +++ b/lib/views/widgets/images/multi_image_picker.dart @@ -50,7 +50,7 @@ class _MultiImagesPickerState extends State with TickerProvid child: Text( widget.label ?? _subtitle.images, style: Theme.of(context).textTheme.headline6.copyWith( - fontSize: 16, + fontSize: 14, ), textScaleFactor: AppStyle.getScaleFactor(context), ), diff --git a/lib/views/widgets/parts/auto_complete_parts_field.dart b/lib/views/widgets/parts/auto_complete_parts_field.dart index ef2be956..e7918729 100644 --- a/lib/views/widgets/parts/auto_complete_parts_field.dart +++ b/lib/views/widgets/parts/auto_complete_parts_field.dart @@ -11,8 +11,9 @@ import 'package:provider/provider.dart'; class AutoCompletePartsField extends StatefulWidget { final String initialValue; final Function(Part) onPick; + final bool clearAfterPick; - const AutoCompletePartsField({Key key, this.initialValue, this.onPick}) : super(key: key); + const AutoCompletePartsField({Key key, this.initialValue, this.onPick, this.clearAfterPick = true}) : super(key: key); @override _AutoCompletePartsFieldState createState() => _AutoCompletePartsFieldState(); @@ -54,7 +55,7 @@ class _AutoCompletePartsFieldState extends State { ); }, child: Container( - padding: EdgeInsets.symmetric( + padding: const EdgeInsets.symmetric( horizontal: 16 ), decoration: BoxDecoration( @@ -63,7 +64,7 @@ class _AutoCompletePartsFieldState extends State { borderRadius: BorderRadius.circular( AppStyle.borderRadius * AppStyle.getScaleFactor(context) ), - boxShadow: [ + boxShadow: const [ AppStyle.boxShadow ] ), @@ -72,7 +73,7 @@ class _AutoCompletePartsFieldState extends State { style: Theme.of(context).textTheme.subtitle1, controller: _controller, textAlign: TextAlign.center, - decoration: InputDecoration( + decoration: const InputDecoration( border: InputBorder.none, disabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -93,7 +94,11 @@ class _AutoCompletePartsFieldState extends State { ); }, onSuggestionSelected: (part) { - _controller.clear(); + if(widget.clearAfterPick){ + _controller.clear(); + } else{ + _controller.text = part.code; + } widget.onPick(part); }, ), diff --git a/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart new file mode 100644 index 00000000..ea2228cd --- /dev/null +++ b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/devices_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/device/device.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/app_style/colors.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +class AutoCompleteDeviceNumberField extends StatefulWidget { + final Lookup initialValue; + final String hospitalId; + final Function(Lookup) onPick; + + const AutoCompleteDeviceNumberField({Key key, this.initialValue, this.onPick, this.hospitalId}) : super(key: key); + + @override + State createState() => _AutoCompleteDeviceNumberFieldState(); +} + +class _AutoCompleteDeviceNumberFieldState extends State { + + SettingProvider _settingProvider; + DevicesProvider _devicesProvider; + UserProvider _userProvider; + TextEditingController _controller; + + @override + void initState() { + _controller = TextEditingController(text: widget.initialValue?.label); + super.initState(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + @override + Widget build(BuildContext context) { + _settingProvider = Provider.of(context); + _userProvider = Provider.of(context); + _devicesProvider = Provider.of(context); + //Subtitle _subtitle = AppLocalization.of(context).subtitle; + return Container( + padding: const EdgeInsets.symmetric( + horizontal: 16 + ), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color:AColors.black), + borderRadius: BorderRadius.circular( + AppStyle.borderRadius * AppStyle.getScaleFactor(context) + ), + boxShadow: const [ + AppStyle.boxShadow + ] + ), + child: TypeAheadField( + textFieldConfiguration: TextFieldConfiguration( + style: Theme.of(context).textTheme.headline6, + controller: _controller, + textAlign: TextAlign.center, + decoration: const InputDecoration( + border: InputBorder.none, + disabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + ), + textInputAction: TextInputAction.search, + ), + suggestionsCallback: (vale) async { + return await _devicesProvider.getDevicesList( + host: _settingProvider.host, + user: _userProvider.user, + hospitalId: widget.hospitalId, + number: vale, + ); + }, + itemBuilder: (context, device) { + return ListTile( + title: Text(device.number), + subtitle: Text("${device.model}/${device.brand}"), + ); + }, + onSuggestionSelected: (device) { + _controller.text = device.number; + widget.onPick(Lookup(id: int.tryParse(device.id),label: device.number)); + }, + ), + ); + } +} diff --git a/lib/views/widgets/pentry/pentry_calibration_tool_form.dart b/lib/views/widgets/pentry/pentry_calibration_tool_form.dart new file mode 100644 index 00000000..70528bb3 --- /dev/null +++ b/lib/views/widgets/pentry/pentry_calibration_tool_form.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/models/pantry/calibration_tools.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/widgets/buttons/app_button.dart'; +import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; +import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; +import 'package:test_sa/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; +class PentryCalibrationToolForm extends StatefulWidget { + final List models; + final bool enableValidate; + const PentryCalibrationToolForm({ + Key key, this.models, this.enableValidate, + }) : super(key: key); + + @override + State createState() => _PentryCalibrationToolFormState(); +} + +class _PentryCalibrationToolFormState extends State { + + + @override + Widget build(BuildContext context) { + final subtitle = AppLocalization.of(context).subtitle; + final userProvider = Provider.of(context); + return ListView.builder( + padding: EdgeInsets.only( + top: 12 * AppStyle.getScaleFactor(context), + left: 12 * AppStyle.getScaleFactor(context), + right: 12 * AppStyle.getScaleFactor(context), + bottom: 80 * AppStyle.getScaleFactor(context) + ), + itemCount: widget.models.length + 1, + itemBuilder: (context,index){ + if(index == widget.models.length){ + return AButton( + text: subtitle.add, + onPressed: (){ + widget.models.add(CalibrationTool()); + setState(() {}); + }, + ); + } + final model = widget.models[index]; + return ListView( + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ASubTitle("#${index+1}"), + if(index != 0) + ASmallButton( + color: Theme.of(context).colorScheme.error, + text: subtitle.delete, + onPressed: (){ + widget.models.remove(model); + setState(() {}); + }, + ), + ], + ), + const SizedBox(height: 8,), + const ASubTitle("Asset Number"), + const SizedBox(height: 4,), + AutoCompleteDeviceNumberField( + initialValue: model.assetsNumber, + hospitalId: userProvider.user.hospital.id, + onPick: (number){ + model.assetsNumber = number; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Date of Testing"), + const SizedBox(height: 4,), + ADatePicker( + date: model.dataOfTesting, + onDatePicker: (date){ + model.dataOfTesting =date; + setState(() {}); + }, + ), + const SizedBox(height: 8,), + Divider(color: Theme.of(context).textTheme.titleMedium.color,), + ], + ); + } + ); + } +} diff --git a/lib/views/widgets/pentry/pentry_info_form.dart b/lib/views/widgets/pentry/pentry_info_form.dart new file mode 100644 index 00000000..1fadc1c9 --- /dev/null +++ b/lib/views/widgets/pentry/pentry_info_form.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/models/pantry/pentry.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/widgets/app_text_form_field.dart'; +import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; +import 'package:test_sa/views/widgets/images/mini_one_image_picker.dart'; +import 'package:test_sa/views/widgets/status/pentry/pentry_status_mune.dart'; +import 'package:test_sa/views/widgets/status/pentry/pentry_visit_status_mune.dart'; +import 'package:test_sa/views/widgets/timer/app_timer.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; +class PentryInfoForm extends StatefulWidget { + final Pentry model; + final bool enableValidate; + const PentryInfoForm({ + Key key, this.model, this.enableValidate, + }) : super(key: key); + + @override + State createState() => _PentryInfoFormState(); +} + +class _PentryInfoFormState extends State { + + @override + Widget build(BuildContext context) { + final subtitle = AppLocalization.of(context).subtitle; + final userProvider = Provider.of(context); + return ListView( + padding: EdgeInsets.only( + top: 12 * AppStyle.getScaleFactor(context), + left: 12 * AppStyle.getScaleFactor(context), + right: 12 * AppStyle.getScaleFactor(context), + bottom: 80 * AppStyle.getScaleFactor(context) + ), + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + children: [ + const SizedBox(height: 8,), + const ASubTitle("PPM Visit Status"), + if(widget.enableValidate && widget.model.ppmVisitStatus == null) + ASubTitle(subtitle.requiredWord,color: Colors.red,), + const SizedBox(height: 4,), + PentryVisitsStatusMenu( + initialValue: widget.model.ppmVisitStatus, + onSelect: (status){ + widget.model.ppmVisitStatus = status; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Timer"), + if(widget.enableValidate && widget.model?.timer?.endAt == null) + ASubTitle(subtitle.requiredWord,color: Colors.red,), + const SizedBox(height: 4,), + AppTimer( + timer: widget.model.timer, + onChange: (timer) async{ + widget.model.timer = timer; + return true; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Status"), + // if(widget.enableValidate && widget.model.status == null) + // ASubTitle(subtitle.requiredWord,color: Colors.red,), + const SizedBox(height: 4,), + PentryStatusMenu( + initialValue: widget.model.status, + onSelect: (status){ + widget.model.status = status; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Actual Visit Date"), + if(widget.enableValidate && widget.model.actualVisitDate == null) + ASubTitle(subtitle.requiredWord,color: Colors.red,), + const SizedBox(height: 4,), + ADatePicker( + date: widget.model.actualVisitDate, + from: DateTime.now().subtract(const Duration(days: 30)), + onDatePicker: (date){ + if(date == null) return; + widget.model.actualVisitDate = date; + setState(() {}); + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Traveling Hours"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (widget.model.travelingHours ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.number, + onChange: (value){ + widget.model.travelingHours = value; + }, + ), + const SizedBox(height: 12,), + const ASubTitle("PPM Attachment"), + AMiniOneImagePicker( + //error: _validate && _serviceReport.image == null, + image: widget.model.imageFile, + onPick: (image){ + widget.model.imageFile =image; + }, + ), + const SizedBox(height: 8,), + ], + ); + } +} diff --git a/lib/views/widgets/pentry/pentry_pm_kit_form.dart b/lib/views/widgets/pentry/pentry_pm_kit_form.dart new file mode 100644 index 00000000..6fdd3b43 --- /dev/null +++ b/lib/views/widgets/pentry/pentry_pm_kit_form.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/pantry/pm_kit.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/widgets/app_text_form_field.dart'; +import 'package:test_sa/views/widgets/buttons/app_button.dart'; +import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; +import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; +class PentryPMKitForm extends StatefulWidget { + final List models; + final bool enableValidate; + const PentryPMKitForm({ + Key key, this.models, this.enableValidate, + }) : super(key: key); + + @override + State createState() => _PentryPMKitFormState(); +} + +class _PentryPMKitFormState extends State { + + @override + Widget build(BuildContext context) { + final subtitle = AppLocalization.of(context).subtitle; + return ListView.builder( + padding: EdgeInsets.only( + top: 12 * AppStyle.getScaleFactor(context), + left: 12 * AppStyle.getScaleFactor(context), + right: 12 * AppStyle.getScaleFactor(context), + bottom: 80 * AppStyle.getScaleFactor(context) + ), + itemCount: widget.models.length + 1, + itemBuilder: (context,index){ + if(index == widget.models.length){ + return AButton( + text: subtitle.add, + onPressed: (){ + widget.models.add(PMKit()); + setState(() {}); + }, + ); + } + final model = widget.models[index]; + return ListView( + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ASubTitle("#${index+1}"), + if(index != 0) + ASmallButton( + color: Theme.of(context).colorScheme.error, + text: subtitle.delete, + onPressed: (){ + widget.models.remove(model); + setState(() {}); + }, + ), + ], + ), + const SizedBox(height: 8,), + const ASubTitle("Item Code"), + const SizedBox(height: 4,), + AutoCompletePartsField( + clearAfterPick: false, + initialValue: (model.itemCode?.label ?? "").toString(), + onPick: (part){ + model.itemCode = Lookup(id: int.tryParse(part.id),label: part.code); + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Item Name"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.itemName ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.itemName = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Preparation Time Frame"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.preparationTimeFrame ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.preparationTimeFrame = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("kit Frequency Demand"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.kitFrequencyDemand ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.kitFrequencyDemand = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Availability"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.availability ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.availability = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Quantity Needed"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.quantityNeeded ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.number, + onChange: (value){ + model.quantityNeeded = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Quantity Reserved"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.quantityReserved ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.number, + onChange: (value){ + model.quantityReserved = value; + }, + ), + const SizedBox(height: 8,), + Divider(color: Theme.of(context).textTheme.titleMedium.color,), + ], + ); + } + ); + } +} diff --git a/lib/views/widgets/pentry/pentry_ppm_check_list_form.dart b/lib/views/widgets/pentry/pentry_ppm_check_list_form.dart new file mode 100644 index 00000000..201c7498 --- /dev/null +++ b/lib/views/widgets/pentry/pentry_ppm_check_list_form.dart @@ -0,0 +1,117 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/models/pantry/ppm_check_list.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/widgets/app_text_form_field.dart'; +import 'package:test_sa/views/widgets/buttons/app_button.dart'; +import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; +import 'package:test_sa/views/widgets/status/pentry/pentry_task_status_mune.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; +class PentryPPMCheckListForm extends StatefulWidget { + final List models; + final bool enableValidate; + const PentryPPMCheckListForm({ + Key key, this.models, this.enableValidate, + }) : super(key: key); + + @override + State createState() => _PentryPPMCheckListFormState(); +} + +class _PentryPPMCheckListFormState extends State { + + + @override + Widget build(BuildContext context) { + final subtitle = AppLocalization.of(context).subtitle; + return ListView.builder( + padding: EdgeInsets.only( + top: 12 * AppStyle.getScaleFactor(context), + left: 12 * AppStyle.getScaleFactor(context), + right: 12 * AppStyle.getScaleFactor(context), + bottom: 80 * AppStyle.getScaleFactor(context) + ), + itemCount: widget.models.length + 1, + itemBuilder: (context,index){ + if(index == widget.models.length){ + return AButton( + text: subtitle.add, + onPressed: (){ + widget.models.add(PPMCheckList()); + setState(() {}); + }, + ); + } + final model = widget.models[index]; + return ListView( + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ASubTitle("#${index+1}"), + if(index != 0) + ASmallButton( + color: Theme.of(context).colorScheme.error, + text: subtitle.delete, + onPressed: (){ + widget.models.remove(model); + setState(() {}); + }, + ), + ], + ), + const SizedBox(height: 8,), + const ASubTitle("Task"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.title ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.title = value; + }, + ), + const SizedBox(height: 8,), + ASubTitle(subtitle.status), + const SizedBox(height: 4,), + PentryTaskStatusMenu( + initialValue: model.status, + onSelect: (status){ + model.status = status; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Comment"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.comment ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.comment = value; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Measured Value"), + const SizedBox(height: 4,), + ATextFormField( + initialValue: (model.measuredValue ?? "").toString(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.subtitle1, + textInputType: TextInputType.text, + onChange: (value){ + model.measuredValue = value; + }, + ), + const SizedBox(height: 8,), + Divider(color: Theme.of(context).textTheme.titleMedium.color,), + ], + ); + } + ); + } +} diff --git a/lib/views/widgets/requests/request_status.dart b/lib/views/widgets/requests/request_status.dart index 84142349..44308861 100644 --- a/lib/views/widgets/requests/request_status.dart +++ b/lib/views/widgets/requests/request_status.dart @@ -1,5 +1,5 @@ import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/widgets/requests/service_request_item.dart b/lib/views/widgets/requests/service_request_item.dart index 6cffb284..448cb53e 100644 --- a/lib/views/widgets/requests/service_request_item.dart +++ b/lib/views/widgets/requests/service_request_item.dart @@ -251,57 +251,6 @@ class ServiceRequestItem extends StatelessWidget { color: onItemColor ), ), - - ], - ), - ], - ), - if(request.viewReport) - Column( - children: [ - const SizedBox(height: 8,), - Row( - children: [ - Expanded( - child: Text( - "Work Duration", - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - fontWeight: FontWeight.bold - ), - ), - ), - // AppTimer( - // timer: request.timer, - // onChange: (timeModel) async { - // - // request.timer = timeModel; - // if(timeModel.endAt == null) return true; - // int status = await servicesProvider.updateServiceReportTimer( - // host: settingProvider.host, - // user: _user, - // timer: timeModel, - // request: request - // ); - // if(status >= 200 && status < 300){ - // return true; - // }else{ - // String errorMessage = HttpStatusManger.getStatusMessage( - // status: status, subtitle: _subtitle); - // ScaffoldMessenger.of(context).showSnackBar( - // SnackBar( - // content: Text( - // errorMessage - // ), - // ) - // ); - // return false; - // } - // - // - // }, - // ), ], ), ], diff --git a/lib/views/widgets/requests/service_request_update_dialog.dart b/lib/views/widgets/requests/service_request_update_dialog.dart index ccea8858..bde17432 100644 --- a/lib/views/widgets/requests/service_request_update_dialog.dart +++ b/lib/views/widgets/requests/service_request_update_dialog.dart @@ -8,13 +8,13 @@ import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import 'package:test_sa/views/widgets/hospitals/auto_complete_field.dart'; +import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart'; import 'package:flutter/material.dart'; import 'package:test_sa/views/widgets/status/employee/employee_mune.dart'; @@ -33,7 +33,7 @@ class _ServiceRequestsUpdateDialogState extends State with TickerProviderStateMixin{ ServiceRequestSearch _search; - List status = [ - Status(label: "New", id: 4,), + List status = [ + Lookup(label: "New", id: 4,), - Status(label: "Repaired", id: 6,), - Status(label: "Repeated", id: 8), - Status(label: "Closed", id: 9,), - Status(label: "Under Repair", id: 5,), + Lookup(label: "Repaired", id: 6,), + Lookup(label: "Repeated", id: 8), + Lookup(label: "Closed", id: 9,), + Lookup(label: "Under Repair", id: 5,), ]; final GlobalKey _formKey = GlobalKey(); @@ -94,7 +94,7 @@ class _ServiceRequestsSearchDialogState extends State with TickerProviderStateMixin{ VisitsSearch _search; - List status = [ - Status(label: "Done", id: 0,), - Status(label: "Not Yet", id: 1), - Status(label: "On Hold", id: 2,), + List status = [ + Lookup(label: "Done", id: 0,), + Lookup(label: "Not Yet", id: 1), + Lookup(label: "On Hold", id: 2,), ]; - List contactStatus = [ - Status(label: "Hospital Employee", key: "H",), - Status(label: "Under Warranty", key: "CW"), - Status(label: "Under Maintenance Contract", key: "CC",), + List contactStatus = [ + Lookup(label: "Hospital Employee", key: "H",), + Lookup(label: "Under Warranty", key: "CW"), + Lookup(label: "Under Maintenance Contract", key: "CC",), ]; @@ -100,7 +100,7 @@ class _VisitsSearchDialogState extends State }, ), SizedBox(height: 8.0 * AppStyle.getScaleFactor(context),), - AutoCompleteField( + HospitalAutoCompleteField( initialValue: _search.hospitalName, onSave: (value){ _search.hospitalName = value; diff --git a/lib/views/widgets/status/employee/employee_mune.dart b/lib/views/widgets/status/employee/employee_mune.dart index 5555233a..5ee55ea5 100644 --- a/lib/views/widgets/status/employee/employee_mune.dart +++ b/lib/views/widgets/status/employee/employee_mune.dart @@ -1,14 +1,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/employee/employee_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class EmployeeMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const EmployeeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart index 842e5d0e..925e920a 100644 --- a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart +++ b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart @@ -3,14 +3,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/ga import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class GasCylinderSizeMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const GasCylinderSizeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/gas_refill/gas_status.dart b/lib/views/widgets/status/gas_refill/gas_status.dart index 524d8acf..c198bd33 100644 --- a/lib/views/widgets/status/gas_refill/gas_status.dart +++ b/lib/views/widgets/status/gas_refill/gas_status.dart @@ -3,14 +3,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/ga import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class GasStatusMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const GasStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/gas_refill/gas_type.dart b/lib/views/widgets/status/gas_refill/gas_type.dart index 9d9b47f5..6f0c0616 100644 --- a/lib/views/widgets/status/gas_refill/gas_type.dart +++ b/lib/views/widgets/status/gas_refill/gas_type.dart @@ -4,14 +4,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/ga import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class GasTypeMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const GasTypeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/multi_status_menu.dart b/lib/views/widgets/status/multi_status_menu.dart index b0c8272d..8d1d7c4c 100644 --- a/lib/views/widgets/status/multi_status_menu.dart +++ b/lib/views/widgets/status/multi_status_menu.dart @@ -1,14 +1,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; class MultiStatusMenu extends StatefulWidget { - final List statuses; - final List initialSelectedStatus; - final Function(List) onSelect; + final List statuses; + final List initialSelectedStatus; + final Function(List) onSelect; const MultiStatusMenu({Key key, this.statuses, this.onSelect, this.initialSelectedStatus}) : super(key: key); @override @@ -17,7 +17,7 @@ class MultiStatusMenu extends StatefulWidget { class _MultiStatusMenuState extends State { - List _selectedStatus = []; + List _selectedStatus = []; TextEditingController _controller; @override @@ -93,7 +93,7 @@ class _MultiStatusMenuState extends State { AppStyle.boxShadow ] ), - child: TypeAheadField( + child: TypeAheadField( textFieldConfiguration: TextFieldConfiguration( style: Theme.of(context).textTheme.subtitle1, controller: _controller, @@ -107,7 +107,7 @@ class _MultiStatusMenuState extends State { textInputAction: TextInputAction.search, ), suggestionsCallback: (vale) { - return widget.statuses.where((Status option) { + return widget.statuses.where((Lookup option) { return option.label.toLowerCase().contains(_controller.text); }); }, diff --git a/lib/views/widgets/status/pentry/pentry_status_mune.dart b/lib/views/widgets/status/pentry/pentry_status_mune.dart new file mode 100644 index 00000000..b0813f22 --- /dev/null +++ b/lib/views/widgets/status/pentry/pentry_status_mune.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/single_status_menu.dart'; +class PentryStatusMenu extends StatelessWidget { + final Function(Lookup) onSelect; + final Lookup initialValue; + + const PentryStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + @override + Widget build(BuildContext context) { + final settingProvider = Provider.of(context); + final userProvider = Provider.of(context); + final menuProvider = Provider.of(context); + return LoadingManager( + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.items == null, + stateCode: menuProvider.stateCode, + onRefresh: () async { + menuProvider.reset(); + await menuProvider.getData( + user: userProvider.user, + host: settingProvider.host + ); + }, + child: SingleStatusMenu( + initialStatus: initialValue, + statuses: menuProvider.items, + onSelect: onSelect, + ) + ); + } +} diff --git a/lib/views/widgets/status/pentry/pentry_task_status_mune.dart b/lib/views/widgets/status/pentry/pentry_task_status_mune.dart new file mode 100644 index 00000000..8564410d --- /dev/null +++ b/lib/views/widgets/status/pentry/pentry_task_status_mune.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/single_status_menu.dart'; +class PentryTaskStatusMenu extends StatelessWidget { + final Function(Lookup) onSelect; + final Lookup initialValue; + + const PentryTaskStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + @override + Widget build(BuildContext context) { + final settingProvider = Provider.of(context); + final userProvider = Provider.of(context); + final menuProvider = Provider.of(context); + return LoadingManager( + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.items == null, + stateCode: menuProvider.stateCode, + onRefresh: () async { + menuProvider.reset(); + await menuProvider.getData( + user: userProvider.user, + host: settingProvider.host + ); + }, + child: SingleStatusMenu( + initialStatus: initialValue, + statuses: menuProvider.items, + onSelect: onSelect, + ) + ); + } +} diff --git a/lib/views/widgets/status/pentry/pentry_visit_status_mune.dart b/lib/views/widgets/status/pentry/pentry_visit_status_mune.dart new file mode 100644 index 00000000..4df17a49 --- /dev/null +++ b/lib/views/widgets/status/pentry/pentry_visit_status_mune.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/single_status_menu.dart'; +class PentryVisitsStatusMenu extends StatelessWidget { + final Function(Lookup) onSelect; + final Lookup initialValue; + + const PentryVisitsStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + @override + Widget build(BuildContext context) { + final settingProvider = Provider.of(context); + final userProvider = Provider.of(context); + final menuProvider = Provider.of(context); + return LoadingManager( + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.items == null, + stateCode: menuProvider.stateCode, + onRefresh: () async { + menuProvider.reset(); + await menuProvider.getData( + user: userProvider.user, + host: settingProvider.host + ); + }, + child: SingleStatusMenu( + initialStatus: initialValue, + statuses: menuProvider.items, + onSelect: onSelect, + ) + ); + } +} diff --git a/lib/views/widgets/status/report/service_report_last_call.dart b/lib/views/widgets/status/report/service_report_last_call.dart index 7093e7e4..1e858cb9 100644 --- a/lib/views/widgets/status/report/service_report_last_call.dart +++ b/lib/views/widgets/status/report/service_report_last_call.dart @@ -1,12 +1,12 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class ServiceReportLastCallsMenu extends StatelessWidget { - final Function(Status) onSelect; + final Function(Lookup) onSelect; final ServiceReport report; const ServiceReportLastCallsMenu({ diff --git a/lib/views/widgets/status/report/service_report_reasons.dart b/lib/views/widgets/status/report/service_report_reasons.dart index 8aa4effd..fc24140d 100644 --- a/lib/views/widgets/status/report/service_report_reasons.dart +++ b/lib/views/widgets/status/report/service_report_reasons.dart @@ -1,14 +1,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class ServiceReportReasonsMenu extends StatelessWidget { - final Status initialValue; - final Function(Status) onSelect; + final Lookup initialValue; + final Function(Lookup) onSelect; const ServiceReportReasonsMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/report/service_report_status.dart b/lib/views/widgets/status/report/service_report_status.dart index 41033e8b..d739b1db 100644 --- a/lib/views/widgets/status/report/service_report_status.dart +++ b/lib/views/widgets/status/report/service_report_status.dart @@ -5,13 +5,13 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/servic import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class ServiceReportStatusMenu extends StatefulWidget { - final Function(Status) onSelect; + final Function(Lookup) onSelect; final ServiceReport report; const ServiceReportStatusMenu({Key key, this.onSelect, this.report}) : super(key: key); diff --git a/lib/views/widgets/status/report/service_report_type.dart b/lib/views/widgets/status/report/service_report_type.dart index 26e4eb14..b3e509b3 100644 --- a/lib/views/widgets/status/report/service_report_type.dart +++ b/lib/views/widgets/status/report/service_report_type.dart @@ -1,36 +1,36 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class ServiceReportTypeMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const ServiceReportTypeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override Widget build(BuildContext context) { - SettingProvider _settingProvider = Provider.of(context); - UserProvider _userProvider = Provider.of(context); - ServiceReportTypesProvider _menuProvider = Provider.of(context); + SettingProvider settingProvider = Provider.of(context); + UserProvider userProvider = Provider.of(context); + ServiceReportTypesProvider menuProvider = Provider.of(context); return LoadingManager( - isLoading: _menuProvider.isLoading, - isFailedLoading: _menuProvider.types == null, - stateCode: _menuProvider.stateCode, + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.types == null, + stateCode: menuProvider.stateCode, onRefresh: () async { - _menuProvider.reset(); - await _menuProvider.getTypes( - user: _userProvider.user, - host: _settingProvider.host + menuProvider.reset(); + await menuProvider.getTypes( + user: userProvider.user, + host: settingProvider.host ); - onSelect(initialValue ?? _menuProvider.types?.last); + onSelect(initialValue ?? menuProvider.types?.last); }, child: SingleStatusMenu( - initialStatus: initialValue ?? _menuProvider.types?.last, - statuses: _menuProvider.types, + initialStatus: initialValue ?? menuProvider.types?.last, + statuses: menuProvider.types, onSelect: onSelect, ) ); diff --git a/lib/views/widgets/status/report/service_status.dart b/lib/views/widgets/status/report/service_status.dart index 6851ab38..a9bd0950 100644 --- a/lib/views/widgets/status/report/service_status.dart +++ b/lib/views/widgets/status/report/service_status.dart @@ -1,14 +1,14 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class ServiceStatusMenu extends StatelessWidget { - final Function(Status) onSelect; - final Status initialValue; + final Function(Lookup) onSelect; + final Lookup initialValue; const ServiceStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override diff --git a/lib/views/widgets/status/service_request/service_request_defect_types_mune.dart b/lib/views/widgets/status/service_request/service_request_defect_types_mune.dart new file mode 100644 index 00000000..be02c54e --- /dev/null +++ b/lib/views/widgets/status/service_request/service_request_defect_types_mune.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/single_status_menu.dart'; +class ServiceRequestDefectTypesMenu extends StatelessWidget { + final Function(Lookup) onSelect; + final Lookup initialValue; + + const ServiceRequestDefectTypesMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + @override + Widget build(BuildContext context) { + final settingProvider = Provider.of(context); + final userProvider = Provider.of(context); + final menuProvider = Provider.of(context); + return LoadingManager( + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.items == null, + stateCode: menuProvider.stateCode, + onRefresh: () async { + menuProvider.reset(); + await menuProvider.getData( + user: userProvider.user, + host: settingProvider.host + ); + }, + child: SingleStatusMenu( + initialStatus: initialValue, + statuses: menuProvider.items, + onSelect: onSelect, + ) + ); + } +} diff --git a/lib/views/widgets/status/service_request/service_request_priority_mune.dart b/lib/views/widgets/status/service_request/service_request_priority_mune.dart new file mode 100644 index 00000000..fe3bd6db --- /dev/null +++ b/lib/views/widgets/status/service_request/service_request_priority_mune.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/single_status_menu.dart'; +class ServiceRequestPriorityMenu extends StatelessWidget { + final Function(Lookup) onSelect; + final Lookup initialValue; + + const ServiceRequestPriorityMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + @override + Widget build(BuildContext context) { + final settingProvider = Provider.of(context); + final userProvider = Provider.of(context); + final menuProvider = Provider.of(context); + return LoadingManager( + isLoading: menuProvider.isLoading, + isFailedLoading: menuProvider.items == null, + stateCode: menuProvider.stateCode, + onRefresh: () async { + menuProvider.reset(); + await menuProvider.getData( + user: userProvider.user, + host: settingProvider.host + ); + }, + child: SingleStatusMenu( + initialStatus: initialValue, + statuses: menuProvider.items, + onSelect: onSelect, + ) + ); + } +} diff --git a/lib/views/widgets/status/single_status_menu.dart b/lib/views/widgets/status/single_status_menu.dart index 8e35e903..212cd1c8 100644 --- a/lib/views/widgets/status/single_status_menu.dart +++ b/lib/views/widgets/status/single_status_menu.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/models/status.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; class SingleStatusMenu extends StatefulWidget { - final List statuses; - final Status initialStatus; - final Function(Status) onSelect; + final List statuses; + final Lookup initialStatus; + final Function(Lookup) onSelect; const SingleStatusMenu({Key key, this.statuses, this.onSelect, this.initialStatus}) : super(key: key); @@ -15,7 +15,7 @@ class SingleStatusMenu extends StatefulWidget { } class _SingleStatusMenuState extends State { - Status _selectedStatus; + Lookup _selectedStatus; @override void didUpdateWidget(covariant SingleStatusMenu oldWidget) { @@ -54,7 +54,7 @@ class _SingleStatusMenuState extends State { // AppStyle.boxShadow // ] ), - child: DropdownButton( + child: DropdownButton( value: _selectedStatus, iconSize: 24, icon: Icon(Icons.keyboard_arrow_down_rounded), @@ -66,14 +66,14 @@ class _SingleStatusMenuState extends State { ), style: TextStyle(color: Theme.of(context).primaryColor), underline: SizedBox.shrink(), - onChanged: (Status newValue) { + onChanged: (Lookup newValue) { setState(() { _selectedStatus = newValue; }); widget.onSelect(newValue); }, - items: widget.statuses.map>((Status value) { - return DropdownMenuItem( + items: widget.statuses.map>((Lookup value) { + return DropdownMenuItem( value: value, child: Text( value.label, diff --git a/lib/views/widgets/timer/app_timer.dart b/lib/views/widgets/timer/app_timer.dart index c2c332b3..95f4fbe7 100644 --- a/lib/views/widgets/timer/app_timer.dart +++ b/lib/views/widgets/timer/app_timer.dart @@ -30,24 +30,24 @@ class _AppTimerState extends State { final ValueNotifier _period = ValueNotifier("0:00:00"); _startTimer() async { - final time = DateTime.now(); - bool result = await widget.onChange( - TimerModel(startAt: time,endAt: null,durationInSecond: _delay)); - if(!result) return; - _running = true; + if (!_running) { + final time = DateTime.now(); + bool result = await widget.onChange( + TimerModel(startAt: time,endAt: null,durationInSecond: _delay)); + if(!result) return; + _running = true; - if(_endAt != null){ - _delay += _endAt.difference(_startAt).inSeconds; + if(_endAt != null){ + _delay += _endAt.difference(_startAt).inSeconds; + } + _startAt = time.subtract(Duration(seconds: _delay)); + _endAt = null; } - _startAt = time.subtract(Duration(seconds: _delay)); - _endAt = null; - - _timer = Timer.periodic(const Duration(seconds: 1), (timer) { if(_loading == true) return; _period.value = (_endAt ?? DateTime.now()).difference( - _startAt + _startAt ).toString().split(".").first; }); } @@ -78,32 +78,13 @@ class _AppTimerState extends State { @override void initState() { - // TODO: implement initState - // if(widget.timer?.isNotEmpty == true){ - // _startAt = widget.timer.last.startAt; - // _endAt = widget.timer.last.endAt; - // _running = _startAt != null && _endAt == null; - // print(_startAt); - // print(_endAt); - // print(_running); - // if(widget.timer.length != 1){ - // for (int i = 0;i(context); - Color itemColor = index % 2 == 0 - ? Theme.of(context).colorScheme.primary - : Theme.of(context).colorScheme.onPrimary; - Color onItemColor = index % 2 != 0 - ? Theme.of(context).colorScheme.primary - : Theme.of(context).colorScheme.onPrimary; + Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; + Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; Subtitle _subtitle = AppLocalization.of(context).subtitle; return Padding( padding: const EdgeInsets.symmetric(vertical: 4), child: ElevatedButton( style: ElevatedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8), + padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), primary: itemColor, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - AppStyle.getBorderRadius(context) - ), + borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), ), ), - onPressed: (){ - if(activeSelectMod && _userProvider.user.type == UsersTypes.engineer) + onPressed: () { + if (activeSelectMod && _userProvider.user.type == UsersTypes.engineer) onSelect(visit); else onPressed(visit); }, - onLongPress: _userProvider.user.type == UsersTypes.engineer ? (){ - onLongPress(visit); - } : null, - - child:Column( + onLongPress: _userProvider.user.type == UsersTypes.engineer + ? () { + onLongPress(visit); + } + : null, + child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: Text( - "S.N: "+visit.deviceSerialNumber ?? "No serial number", - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 16, - fontWeight: FontWeight.bold - ), + "S.N: " + visit.deviceSerialNumber ?? "No serial number", + style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), ), ), AnimatedSwitcher( @@ -83,63 +66,65 @@ class VisitItem extends StatelessWidget { child: SizedBox( height: 18, child: Checkbox( - activeColor: Colors.black38, - + activeColor: Colors.black38, value: isSelected, - onChanged: (value){ + onChanged: (value) { onSelect(visit); - } - ), + }), ), ), ), - VisitStatusLabel(visit: visit,) + VisitStatusLabel( + visit: visit, + ) ], ), - Divider(color: onItemColor,), + Divider( + color: onItemColor, + ), Row( children: [ Expanded( child: Text( visit.hospitalName ?? "No client found", style: Theme.of(context).textTheme.subtitle1.copyWith( - color: onItemColor, - fontSize: 14, - ), + color: onItemColor, + fontSize: 14, + ), ), ), - Text( - visit.modelAndBrand ?? "", - style: Theme.of(context).textTheme.subtitle1.copyWith( + ], + ), + Text( + visit.modelAndBrand ?? "", + style: Theme.of(context).textTheme.subtitle1.copyWith( color: onItemColor, fontSize: 14, ), - ), - ], ), - Divider(color: onItemColor,), + Divider( + color: onItemColor, + ), Row( children: [ Expanded( child: Text( visit.employName ?? "No employ found", - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - fontWeight: FontWeight.bold - ), + style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 14, fontWeight: FontWeight.bold), ), ), Text( visit.contactStatus ?? "", style: Theme.of(context).textTheme.subtitle1.copyWith( - color: onItemColor, - fontSize: 14, - ), + color: onItemColor, + fontSize: 14, + ), ), ], ), - Divider(color: onItemColor,), + Divider( + color: onItemColor, + ), Row( children: [ Expanded( @@ -149,18 +134,16 @@ class VisitItem extends StatelessWidget { Text( _subtitle.expectDate, style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - - ), + color: onItemColor, + fontSize: 14, + ), ), Text( visit.expectDate ?? _subtitle.noDateFound, style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - - ), + color: onItemColor, + fontSize: 14, + ), ), ], ), @@ -171,16 +154,16 @@ class VisitItem extends StatelessWidget { Text( _subtitle.actualDate, style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), + color: onItemColor, + fontSize: 14, + ), ), Text( visit.actualDate ?? _subtitle.noDateFound, style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), + color: onItemColor, + fontSize: 14, + ), ), ], ), diff --git a/pubspec.yaml b/pubspec.yaml index e51e2229..6d74f91c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.6.1+1 +version: 0.7.4+1 environment: sdk: ">=2.7.0 <3.0.0" From 4af0c3c9b04798babf6f1465019c8e995b35815f Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 15 Jan 2023 16:21:04 +0300 Subject: [PATCH 4/6] import optimization --- .../localization/localization.dart | 2 +- .../firebase_notification_manger.dart | 2 +- .../notification/notification_manger.dart | 2 +- .../providers/api/departments_provider.dart | 4 +-- .../api/device_transfer_provider.dart | 27 ++----------------- .../providers/api/devices_provider.dart | 4 +-- .../providers/api/gas_refill_provider.dart | 10 ++----- .../providers/api/hospitals_provider.dart | 6 ++--- .../providers/api/notifications_provider.dart | 4 +-- .../api/service_requests_provider.dart | 4 +-- .../employee/employee_provider.dart | 7 +++-- .../gas_cylinder_size_provider.dart | 6 ++--- .../gas_refill/gas_types_provider.dart | 1 - .../pentry/pentry_status_provider.dart | 6 ++--- .../pentry/pentry_task_status_provider.dart | 6 ++--- .../pentry/pentry_visit_status_provider.dart | 6 ++--- .../service_report_defect_types_provider.dart | 6 ++--- .../service_report_last_calls_provider.dart | 6 ++--- .../service_report_priority_provider.dart | 6 ++--- .../service_report_reasons_provider.dart | 6 ++--- .../service_report_status_provider.dart | 6 ++--- .../report/service_report_types_provider.dart | 6 ++--- .../report/service_types_provider.dart | 6 ++--- lib/extensions/widget_extensions.dart | 1 - lib/main.dart | 7 ++--- lib/models/device/device_transfer.dart | 4 --- lib/models/device/device_transfer_info.dart | 2 -- lib/models/pantry/pentry.dart | 1 - lib/models/service_report.dart | 2 +- .../service_request/service_request.dart | 2 -- lib/models/visits/visit.dart | 1 - .../device_transfer_details.dart | 2 -- .../request_device_transfer.dart | 1 - .../track_device_transfer.dart | 13 +++------ .../update_device_transfer.dart | 3 --- lib/views/pages/splash_screen.dart | 7 +++-- .../user/gas_refill/gas_refill_details.dart | 1 - .../user/gas_refill/track_gas_refill.dart | 11 +++----- lib/views/pages/user/land_page.dart | 4 +-- .../notifications/notifications_page.dart | 4 +-- lib/views/pages/user/report_issues_page.dart | 7 +++-- .../pages/user/requests/create_request.dart | 1 - .../requests/report/edit_service_report.dart | 12 ++++----- .../report/future_service_report.dart | 5 ++-- .../pages/user/requests/request_details.dart | 9 +++---- .../pages/user/requests/requests_page.dart | 6 ++--- .../preventive_maintenance_visits_page.dart | 10 +++---- .../user/visits/regular_visits_page.dart | 10 +++---- .../visits/update_visits_group_sheet.dart | 2 +- .../pages/user/visits/visit_details.dart | 2 +- lib/views/widgets/app_name_bar.dart | 2 +- .../widgets/buttons/app_icon_button.dart | 4 +-- .../widgets/date_and_time/date_picker.dart | 3 +-- .../date_and_time/from_to_date_bar.dart | 2 +- .../widgets/departments/department_item.dart | 2 +- .../departments/single_department_picker.dart | 4 +-- .../device_transfer_info_section.dart | 1 - .../device_trancfer/device_transfer_list.dart | 8 +----- .../widgets/e_signature/e_signature.dart | 2 -- .../auto_complete_devices_field.dart | 7 +++-- lib/views/widgets/equipment/device_item.dart | 2 +- .../equipment/single_device_picker.dart | 6 ++--- .../widgets/gas_refill/gas_refill_list.dart | 5 +--- .../gas_refill_update_details_item.dart | 1 - .../hospitals/single_hospital_picker.dart | 4 +-- lib/views/widgets/images/image_item.dart | 4 +-- lib/views/widgets/images/images_list.dart | 2 +- lib/views/widgets/images/images_viewer.dart | 2 +- .../widgets/images/mini_one_image_picker.dart | 6 ++--- .../images/multi_image_picker_item.dart | 2 +- .../widgets/images/one_image_picker.dart | 6 ++--- .../widgets/issues/report_issue_item.dart | 2 +- .../widgets/loaders/app_lazy_loading.dart | 2 +- lib/views/widgets/loaders/failed_loading.dart | 2 +- lib/views/widgets/loaders/lazy_loading.dart | 2 +- .../widgets/loaders/loading_manager.dart | 2 +- lib/views/widgets/loaders/no_item_found.dart | 2 +- .../parts/auto_complete_parts_field.dart | 6 ++--- lib/views/widgets/requests/info_row.dart | 2 +- .../widgets/requests/request_status.dart | 4 +-- .../requests/service_request_list.dart | 2 +- lib/views/widgets/search/filter_item.dart | 2 +- .../search/service_request_search_bar.dart | 4 +-- .../widgets/search/visits_search_bar.dart | 4 +-- lib/views/widgets/sound/record_sound.dart | 4 --- lib/views/widgets/sound/sound_player.dart | 2 -- .../status/employee/employee_mune.dart | 4 +-- .../status/gas_refill/gas_cylinder_size.dart | 6 ++--- .../widgets/status/gas_refill/gas_status.dart | 6 ++--- .../widgets/status/gas_refill/gas_type.dart | 7 ++--- .../widgets/status/multi_status_menu.dart | 3 +-- .../report/service_report_last_call.dart | 6 ++--- .../status/report/service_report_reasons.dart | 4 +-- .../status/report/service_report_status.dart | 6 ++--- .../status/report/service_report_type.dart | 4 +-- .../widgets/status/report/service_status.dart | 4 +-- lib/views/widgets/titles/app_sub_title.dart | 2 +- .../widgets/titles/expandable_info_row.dart | 2 +- lib/views/widgets/visits/visit_status.dart | 2 +- 99 files changed, 171 insertions(+), 271 deletions(-) diff --git a/lib/controllers/localization/localization.dart b/lib/controllers/localization/localization.dart index fafc8aaf..a6e7fe82 100644 --- a/lib/controllers/localization/localization.dart +++ b/lib/controllers/localization/localization.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'package:test_sa/models/subtitle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:test_sa/models/subtitle.dart'; class AppLocalization { diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 19ef543e..153d28fa 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -1,9 +1,9 @@ import 'dart:convert'; -import 'package:test_sa/models/app_notification.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/models/app_notification.dart'; import 'notification_manger.dart'; diff --git a/lib/controllers/notification/notification_manger.dart b/lib/controllers/notification/notification_manger.dart index 8c0de712..a568d5d3 100644 --- a/lib/controllers/notification/notification_manger.dart +++ b/lib/controllers/notification/notification_manger.dart @@ -1,6 +1,6 @@ -import 'package:test_sa/views/app_style/colors.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:test_sa/views/app_style/colors.dart'; class NotificationManger{ // private constructor to avoid create object diff --git a/lib/controllers/providers/api/departments_provider.dart b/lib/controllers/providers/api/departments_provider.dart index 1b66771d..0bcd0f02 100644 --- a/lib/controllers/providers/api/departments_provider.dart +++ b/lib/controllers/providers/api/departments_provider.dart @@ -1,9 +1,9 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/department.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/department.dart'; class DepartmentsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/device_transfer_provider.dart b/lib/controllers/providers/api/device_transfer_provider.dart index e646a6da..1d433c11 100644 --- a/lib/controllers/providers/api/device_transfer_provider.dart +++ b/lib/controllers/providers/api/device_transfer_provider.dart @@ -1,21 +1,11 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; -import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/issue.dart'; -import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class DeviceTransferProvider extends ChangeNotifier{ @@ -74,10 +64,6 @@ class DeviceTransferProvider extends ChangeNotifier{ // return 200; Response response; try{ - print( Uri.parse( - "$host${URLs.getDeviceTransfer}?uid=${user.id}" - "&token=${user.token}&page=${(items?.length ?? 0) ~/pageItemNumber}" - ),); response = await get( Uri.parse( "$host${URLs.getDeviceTransfer}?uid=${user.id}" @@ -106,7 +92,6 @@ class DeviceTransferProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); isLoading = false; stateCode = -1; notifyListeners(); @@ -136,8 +121,6 @@ class DeviceTransferProvider extends ChangeNotifier{ host+URLs.requestDeviceTransfer), body: body, ); - - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { if(items != null) { @@ -153,7 +136,6 @@ class DeviceTransferProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } @@ -175,16 +157,12 @@ class DeviceTransferProvider extends ChangeNotifier{ }; body.addAll(newModel.toJson(isSender)); - print(body); Response response; try{ - print(Uri.parse("$host${URLs.updateDeviceTransfer}/$requestId"),); response = await post( Uri.parse("$host${URLs.updateDeviceTransfer}/$requestId"), body: body, ); - - print(response.body); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { reset(); @@ -198,7 +176,6 @@ class DeviceTransferProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index d434551f..b55d1733 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -1,10 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class DevicesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index 5297ae06..7dba6a8c 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -1,16 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/issue.dart'; -import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class GasRefillProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/hospitals_provider.dart b/lib/controllers/providers/api/hospitals_provider.dart index 5e3c4509..df70994f 100644 --- a/lib/controllers/providers/api/hospitals_provider.dart +++ b/lib/controllers/providers/api/hospitals_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/hospital.dart'; +import 'package:test_sa/models/user.dart'; class HospitalsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/notifications_provider.dart b/lib/controllers/providers/api/notifications_provider.dart index 0bea5f26..d21ec77b 100644 --- a/lib/controllers/providers/api/notifications_provider.dart +++ b/lib/controllers/providers/api/notifications_provider.dart @@ -1,10 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/app_notification.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class NotificationsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index cb62d06b..040ed855 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -1,5 +1,7 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/models/issue.dart'; @@ -10,8 +12,6 @@ import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class ServiceRequestsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart b/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart index 9005b47c..04f6d5b6 100644 --- a/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/employee/employee_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class EmployeesProvider extends ChangeNotifier{ @@ -52,7 +52,6 @@ class EmployeesProvider extends ChangeNotifier{ Uri.parse( host + URLs.getEmployees), ); - print(response.body); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart index 12bb62d1..b4112034 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class GasCylinderSizesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart index bda262bd..f444c233 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart @@ -61,7 +61,6 @@ class GasTypesProvider extends ChangeNotifier{ notifyListeners(); return response.statusCode; } catch(error) { - print(error); _loading = false; _stateCode = -1; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart index 75d18783..8e3168d9 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class PentryStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart index 900671e1..03370135 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class PentryTaskStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart index c8562f25..09b52cbb 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class PentryVisitStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart index a61b1e76..50efd414 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceRequestDefectTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart index 20e9f7be..50de291f 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceReportLastCallsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart index beb18280..58fc2d98 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceRequestPriorityProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart index b1f86f54..bac49f9f 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceReportReasonsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart index 6e98367c..89cb100f 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceReportStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart index 358440a1..a8b07c08 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceReportTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart index 3fa2ddb3..a5bcb0a5 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/user.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/user.dart'; class ServiceStatusProvider extends ChangeNotifier{ diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 326dbb6d..5a8f3ce5 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; -import 'package:test_sa/views/app_style/colors.dart'; extension WidgetExtensions on Widget { Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this); diff --git a/lib/main.dart b/lib/main.dart index 7a615669..dea92839 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,9 @@ import 'dart:io'; import 'package:firebase_core/firebase_core.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; @@ -35,9 +38,7 @@ import 'package:test_sa/views/pages/user/visits/preventive_maintenance_visits_pa import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:provider/provider.dart'; + import 'controllers/providers/api/parts_provider.dart'; import 'controllers/providers/api/preventive_maintenance_visits_provider.dart'; import 'controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart'; diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index 27379344..d62913ab 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -1,9 +1,5 @@ -import 'package:http/http.dart'; -import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/lookup.dart'; class DeviceTransfer{ String id; diff --git a/lib/models/device/device_transfer_info.dart b/lib/models/device/device_transfer_info.dart index 3e8d0f8f..d3645b9d 100644 --- a/lib/models/device/device_transfer_info.dart +++ b/lib/models/device/device_transfer_info.dart @@ -1,6 +1,4 @@ -import 'package:http/http.dart'; import 'package:test_sa/models/department.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/lookup.dart'; diff --git a/lib/models/pantry/pentry.dart b/lib/models/pantry/pentry.dart index cee31181..ebd855dc 100644 --- a/lib/models/pantry/pentry.dart +++ b/lib/models/pantry/pentry.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/pantry/calibration_tools.dart'; -import 'package:test_sa/models/pantry/contact.dart'; import 'package:test_sa/models/pantry/pm_kit.dart'; import 'package:test_sa/models/pantry/ppm_check_list.dart'; import 'package:test_sa/models/timer_model.dart'; diff --git a/lib/models/service_report.dart b/lib/models/service_report.dart index 33bb2fd2..81047ec1 100644 --- a/lib/models/service_report.dart +++ b/lib/models/service_report.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:test_sa/models/device/device.dart'; -import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/timer_model.dart'; class ServiceReport { diff --git a/lib/models/service_request/service_request.dart b/lib/models/service_request/service_request.dart index ae6f9370..edf66852 100644 --- a/lib/models/service_request/service_request.dart +++ b/lib/models/service_request/service_request.dart @@ -1,7 +1,5 @@ import 'package:test_sa/models/lookup.dart'; -import '../timer_model.dart'; - class ServiceRequest{ String id; String requestCode; diff --git a/lib/models/visits/visit.dart b/lib/models/visits/visit.dart index da3a2143..b6562e4c 100644 --- a/lib/models/visits/visit.dart +++ b/lib/models/visits/visit.dart @@ -1,5 +1,4 @@ import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/timer_model.dart'; class Visit{ String id; diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 9b089448..7b36058c 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -15,7 +15,6 @@ import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_info_section.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; -import 'package:test_sa/views/widgets/requests/request_status.dart'; class DeviceTransferDetails extends StatefulWidget { final DeviceTransfer model; @@ -51,7 +50,6 @@ class _DeviceTransferDetailsState extends State { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _deviceTransferProvider = Provider.of(context); - print(_userProvider.user.id); _isSender = _userProvider.user.id == widget.model.sender?.userId; _isReceiver = _userProvider.user.id == widget.model.receiver?.userId; return Scaffold( diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 66162778..eaaed184 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -12,7 +12,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/departments/department_button.dart'; -import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/equipment/device_button.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; diff --git a/lib/views/pages/device_transfer/track_device_transfer.dart b/lib/views/pages/device_transfer/track_device_transfer.dart index 7308617f..454d6d30 100644 --- a/lib/views/pages/device_transfer/track_device_transfer.dart +++ b/lib/views/pages/device_transfer/track_device_transfer.dart @@ -1,21 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; -import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_list.dart'; -import 'package:test_sa/views/widgets/requests/service_request_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; +import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/search/service_request_search_bar.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class TrackDeviceTransferPage extends StatefulWidget { static const String id = "/track-device-transfer"; diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index f9044b65..2b407a48 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -14,10 +14,7 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/departments/department_button.dart'; import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; -import 'package:test_sa/views/widgets/equipment/device_button.dart'; -import 'package:test_sa/views/widgets/hospitals/hospital_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/gas_refill/gas_status.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; diff --git a/lib/views/pages/splash_screen.dart b/lib/views/pages/splash_screen.dart index 32911345..a7bfa347 100644 --- a/lib/views/pages/splash_screen.dart +++ b/lib/views/pages/splash_screen.dart @@ -1,16 +1,16 @@ import 'dart:convert'; +import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flare_flutter/flare_actor.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/app_notification.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/views/pages/user/land_page.dart'; -import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import 'login.dart'; @@ -70,7 +70,6 @@ class _SplashScreenState extends State { print(await FirebaseMessaging.instance.getToken()); Navigator.of(context).pushNamed(Login.id); if(_settingProvider.isLoaded && _settingProvider.user != null){ - print(_settingProvider.user.toJson()); _goToUserScreen(_settingProvider.user); } }, diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index 33dd686a..d1d41eac 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -13,7 +13,6 @@ import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_create_details_item.dart'; import 'package:test_sa/views/widgets/gas_refill/gas_refill_update_details_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; diff --git a/lib/views/pages/user/gas_refill/track_gas_refill.dart b/lib/views/pages/user/gas_refill/track_gas_refill.dart index ce9796fc..713c9530 100644 --- a/lib/views/pages/user/gas_refill/track_gas_refill.dart +++ b/lib/views/pages/user/gas_refill/track_gas_refill.dart @@ -1,19 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_list.dart'; -import 'package:test_sa/views/widgets/requests/service_request_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; +import 'package:test_sa/views/widgets/gas_refill/gas_refill_list.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/search/service_request_search_bar.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class TrackGasRefillPage extends StatefulWidget { static const String id = "/track-gas-refill"; diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index 059f3963..dd37a8af 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -33,7 +33,6 @@ import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/dialogs/dialog.dart'; import 'package:test_sa/views/widgets/drawer/drawer_item.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../widgets/land_page/land_page_item.dart'; @@ -94,7 +93,6 @@ class _LandPageState extends State { _buttonHeight = 68 * AppStyle.getScaleFactor(context); return WillPopScope( onWillPop: () async { - print("back pressed"); bool result = await showDialog( context: context, builder: (_) => AAlertDialog( @@ -280,7 +278,7 @@ class _LandPageState extends State { decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle), child: ClipOval( child: ClipOval( - child: Icon(Icons.person,size: 72,color: Theme.of(context).colorScheme.primary,), + child: Icon(Icons.person,size: 36,color: Theme.of(context).colorScheme.primary,), ), ), ), diff --git a/lib/views/pages/user/notifications/notifications_page.dart b/lib/views/pages/user/notifications/notifications_page.dart index 900fb460..a0e85259 100644 --- a/lib/views/pages/user/notifications/notifications_page.dart +++ b/lib/views/pages/user/notifications/notifications_page.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/notifications_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -7,8 +9,6 @@ import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class NotificationsPage extends StatefulWidget { static final String id = "/notifications"; @override diff --git a/lib/views/pages/user/report_issues_page.dart b/lib/views/pages/user/report_issues_page.dart index d9a91be3..a1641b24 100644 --- a/lib/views/pages/user/report_issues_page.dart +++ b/lib/views/pages/user/report_issues_page.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -8,15 +11,11 @@ import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; - import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/issues/report_issue_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; class ReportIssuesPage extends StatefulWidget { static final String id = "/report-issue"; final ServiceRequest serviceRequest; diff --git a/lib/views/pages/user/requests/create_request.dart b/lib/views/pages/user/requests/create_request.dart index bdbb72e0..86b819e8 100644 --- a/lib/views/pages/user/requests/create_request.dart +++ b/lib/views/pages/user/requests/create_request.dart @@ -194,7 +194,6 @@ class _CreateRequestPageState extends State { final file = File(_serviceRequest.audio); _serviceRequest.audio = base64Encode(file.readAsBytesSync()); } - print("pass data"); int status = await _serviceRequestsProvider.createRequest( user: _userProvider.user, host: _settingProvider.host, diff --git a/lib/views/pages/user/requests/report/edit_service_report.dart b/lib/views/pages/user/requests/report/edit_service_report.dart index 1ca58282..0b268fc7 100644 --- a/lib/views/pages/user/requests/report/edit_service_report.dart +++ b/lib/views/pages/user/requests/report/edit_service_report.dart @@ -1,18 +1,20 @@ import 'dart:convert'; import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/validator/validator.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; @@ -33,10 +35,6 @@ import 'package:test_sa/views/widgets/status/report/service_report_type.dart'; import 'package:test_sa/views/widgets/status/report/service_status.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; class EditServiceReport extends StatefulWidget { static final String id = "/edit-service-report"; final ServiceRequest request ; diff --git a/lib/views/pages/user/requests/report/future_service_report.dart b/lib/views/pages/user/requests/report/future_service_report.dart index a2e1897d..5ee16ea2 100644 --- a/lib/views/pages/user/requests/report/future_service_report.dart +++ b/lib/views/pages/user/requests/report/future_service_report.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -5,11 +7,8 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import 'edit_service_report.dart'; class FutureServiceReport extends StatefulWidget { diff --git a/lib/views/pages/user/requests/request_details.dart b/lib/views/pages/user/requests/request_details.dart index 5e2d80f9..2ada571e 100644 --- a/lib/views/pages/user/requests/request_details.dart +++ b/lib/views/pages/user/requests/request_details.dart @@ -1,3 +1,7 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; @@ -20,11 +24,6 @@ import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/service_request_update_dialog.dart'; import 'package:test_sa/views/widgets/sound/sound_player.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; import '../report_issues_page.dart'; import 'report/future_service_report.dart'; diff --git a/lib/views/pages/user/requests/requests_page.dart b/lib/views/pages/user/requests/requests_page.dart index af926f28..e535d03b 100644 --- a/lib/views/pages/user/requests/requests_page.dart +++ b/lib/views/pages/user/requests/requests_page.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -5,13 +7,11 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/requests/service_request_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/requests/service_request_list.dart'; import 'package:test_sa/views/widgets/search/service_request_search_bar.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceRequestsPage extends StatefulWidget { static final String id = "/service-requests"; @override diff --git a/lib/views/pages/user/visits/preventive_maintenance_visits_page.dart b/lib/views/pages/user/visits/preventive_maintenance_visits_page.dart index b4eec47f..7c1c57c2 100644 --- a/lib/views/pages/user/visits/preventive_maintenance_visits_page.dart +++ b/lib/views/pages/user/visits/preventive_maintenance_visits_page.dart @@ -1,3 +1,7 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/preventive_maintenance_visits_provider.dart'; @@ -8,16 +12,12 @@ import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/models/visits/visits_search.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/pages/user/visits/update_visits_group_sheet.dart'; -import 'package:test_sa/views/widgets/visits/visits_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/search/visits_search_bar.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; +import 'package:test_sa/views/widgets/visits/visits_list.dart'; class PreventiveMaintenanceVisitsPage extends StatefulWidget { static final String id = "/preventive-maintenance-visits"; @override diff --git a/lib/views/pages/user/visits/regular_visits_page.dart b/lib/views/pages/user/visits/regular_visits_page.dart index d1bd69bd..37e34fed 100644 --- a/lib/views/pages/user/visits/regular_visits_page.dart +++ b/lib/views/pages/user/visits/regular_visits_page.dart @@ -1,3 +1,7 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart'; @@ -8,16 +12,12 @@ import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/models/visits/visits_search.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/pages/user/visits/update_visits_group_sheet.dart'; -import 'package:test_sa/views/widgets/visits/visits_list.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/search/visits_search_bar.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; +import 'package:test_sa/views/widgets/visits/visits_list.dart'; class RegularVisitsPage extends StatefulWidget { static final String id = "/Regular-visits"; @override diff --git a/lib/views/pages/user/visits/update_visits_group_sheet.dart b/lib/views/pages/user/visits/update_visits_group_sheet.dart index 8be79f27..724f4657 100644 --- a/lib/views/pages/user/visits/update_visits_group_sheet.dart +++ b/lib/views/pages/user/visits/update_visits_group_sheet.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:io'; +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; @@ -15,7 +16,6 @@ import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/images/one_image_picker.dart'; import 'package:test_sa/views/widgets/search/filter_item.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart'; -import 'package:flutter/material.dart'; class UpdateVisitsGroupSheet extends StatefulWidget { final List visits; final String title; diff --git a/lib/views/pages/user/visits/visit_details.dart b/lib/views/pages/user/visits/visit_details.dart index 342bf02c..e191cf67 100644 --- a/lib/views/pages/user/visits/visit_details.dart +++ b/lib/views/pages/user/visits/visit_details.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/subtitle.dart'; @@ -11,7 +12,6 @@ import 'package:test_sa/views/widgets/images/images_list.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart'; -import 'package:flutter/material.dart'; import '../../../../controllers/providers/api/regular_visits_provider.dart'; diff --git a/lib/views/widgets/app_name_bar.dart b/lib/views/widgets/app_name_bar.dart index 35a382a0..8aebd901 100644 --- a/lib/views/widgets/app_name_bar.dart +++ b/lib/views/widgets/app_name_bar.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class AppNameBar extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/lib/views/widgets/buttons/app_icon_button.dart b/lib/views/widgets/buttons/app_icon_button.dart index 8c1da58e..07e9c9a3 100644 --- a/lib/views/widgets/buttons/app_icon_button.dart +++ b/lib/views/widgets/buttons/app_icon_button.dart @@ -1,7 +1,7 @@ -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:test_sa/views/app_style/colors.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class AIconButton extends StatelessWidget { final IconData iconData; diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 291a7e46..ee68b716 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -1,6 +1,5 @@ -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class ADatePicker extends StatelessWidget { final DateTime date; diff --git a/lib/views/widgets/date_and_time/from_to_date_bar.dart b/lib/views/widgets/date_and_time/from_to_date_bar.dart index 422dcbf9..4ef79e81 100644 --- a/lib/views/widgets/date_and_time/from_to_date_bar.dart +++ b/lib/views/widgets/date_and_time/from_to_date_bar.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; import 'date_picker.dart'; class FromToDateBar extends StatefulWidget { diff --git a/lib/views/widgets/departments/department_item.dart b/lib/views/widgets/departments/department_item.dart index fd37b418..4ac240e9 100644 --- a/lib/views/widgets/departments/department_item.dart +++ b/lib/views/widgets/departments/department_item.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class DepartmentItem extends StatelessWidget { final Department department; final Function(Department) onPressed; diff --git a/lib/views/widgets/departments/single_department_picker.dart b/lib/views/widgets/departments/single_department_picker.dart index fb07b393..e5fb916b 100644 --- a/lib/views/widgets/departments/single_department_picker.dart +++ b/lib/views/widgets/departments/single_department_picker.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -6,8 +8,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/departments/department_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleDepartmentPicker extends StatefulWidget { diff --git a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart index a042d72f..169e16f1 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; diff --git a/lib/views/widgets/device_trancfer/device_transfer_list.dart b/lib/views/widgets/device_trancfer/device_transfer_list.dart index ede0bc6d..18bee922 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,17 +1,11 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; -import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:test_sa/views/widgets/requests/service_request_item.dart'; -import 'package:flutter/material.dart'; class DeviceTransferList extends StatelessWidget { final List items; final bool nextPage; diff --git a/lib/views/widgets/e_signature/e_signature.dart b/lib/views/widgets/e_signature/e_signature.dart index 72f9d653..c48ce9b5 100644 --- a/lib/views/widgets/e_signature/e_signature.dart +++ b/lib/views/widgets/e_signature/e_signature.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:signature/signature.dart'; diff --git a/lib/views/widgets/equipment/auto_complete_devices_field.dart b/lib/views/widgets/equipment/auto_complete_devices_field.dart index ec91ae17..0756bc70 100644 --- a/lib/views/widgets/equipment/auto_complete_devices_field.dart +++ b/lib/views/widgets/equipment/auto_complete_devices_field.dart @@ -1,13 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:provider/provider.dart'; class AutoCompleteDeviceField extends StatefulWidget { final Device initialValue; final String hospitalId; diff --git a/lib/views/widgets/equipment/device_item.dart b/lib/views/widgets/equipment/device_item.dart index aaa3112d..df07096b 100644 --- a/lib/views/widgets/equipment/device_item.dart +++ b/lib/views/widgets/equipment/device_item.dart @@ -1,9 +1,9 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class DeviceItem extends StatelessWidget { final Device device; final Function(Device) onPressed; diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 9d50f479..bc8bf527 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -8,9 +11,6 @@ import 'package:test_sa/views/widgets/equipment/device_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; import 'package:test_sa/views/widgets/qr/scan_qr.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleDevicePicker extends StatefulWidget { diff --git a/lib/views/widgets/gas_refill/gas_refill_list.dart b/lib/views/widgets/gas_refill/gas_refill_list.dart index b54c2ee9..e25797d2 100644 --- a/lib/views/widgets/gas_refill/gas_refill_list.dart +++ b/lib/views/widgets/gas_refill/gas_refill_list.dart @@ -1,14 +1,11 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/gas_refill/gas_refill_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:test_sa/views/widgets/requests/service_request_item.dart'; -import 'package:flutter/material.dart'; class GasRefillList extends StatelessWidget { final List items; final bool nextPage; diff --git a/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart b/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart index 2a94a9ba..0ccd9e45 100644 --- a/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart +++ b/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart @@ -3,7 +3,6 @@ import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/models/gas_refill/gas_refill_details.dart'; import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; diff --git a/lib/views/widgets/hospitals/single_hospital_picker.dart b/lib/views/widgets/hospitals/single_hospital_picker.dart index f2ee3c74..27ca0861 100644 --- a/lib/views/widgets/hospitals/single_hospital_picker.dart +++ b/lib/views/widgets/hospitals/single_hospital_picker.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -6,8 +8,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleHospitalPicker extends StatefulWidget { diff --git a/lib/views/widgets/images/image_item.dart b/lib/views/widgets/images/image_item.dart index 8478ae97..5e2412a0 100644 --- a/lib/views/widgets/images/image_item.dart +++ b/lib/views/widgets/images/image_item.dart @@ -1,8 +1,8 @@ +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class ImageItem extends StatelessWidget { final String url; final bool isVideo; diff --git a/lib/views/widgets/images/images_list.dart b/lib/views/widgets/images/images_list.dart index 01868340..df2bdb0d 100644 --- a/lib/views/widgets/images/images_list.dart +++ b/lib/views/widgets/images/images_list.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; import 'image_item.dart'; import 'images_viewer.dart'; diff --git a/lib/views/widgets/images/images_viewer.dart b/lib/views/widgets/images/images_viewer.dart index 76c79814..865f0306 100644 --- a/lib/views/widgets/images/images_viewer.dart +++ b/lib/views/widgets/images/images_viewer.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; -import 'package:flutter/material.dart'; class ImagesViewer extends StatelessWidget { final List images; diff --git a/lib/views/widgets/images/mini_one_image_picker.dart b/lib/views/widgets/images/mini_one_image_picker.dart index b26e9f49..710e960d 100644 --- a/lib/views/widgets/images/mini_one_image_picker.dart +++ b/lib/views/widgets/images/mini_one_image_picker.dart @@ -1,11 +1,11 @@ import 'dart:io'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/models/subtitle.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class AMiniOneImagePicker extends StatefulWidget { final Function(File) onPick; diff --git a/lib/views/widgets/images/multi_image_picker_item.dart b/lib/views/widgets/images/multi_image_picker_item.dart index 92943032..be1d1b15 100644 --- a/lib/views/widgets/images/multi_image_picker_item.dart +++ b/lib/views/widgets/images/multi_image_picker_item.dart @@ -1,9 +1,9 @@ import 'dart:io'; +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:flutter/material.dart'; class MultiImagesPickerItem extends StatelessWidget { diff --git a/lib/views/widgets/images/one_image_picker.dart b/lib/views/widgets/images/one_image_picker.dart index 4220f330..3ff3ebbf 100644 --- a/lib/views/widgets/images/one_image_picker.dart +++ b/lib/views/widgets/images/one_image_picker.dart @@ -1,11 +1,11 @@ import 'dart:io'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/models/subtitle.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class AOneImagePicker extends StatefulWidget { final Function(File) onPick; diff --git a/lib/views/widgets/issues/report_issue_item.dart b/lib/views/widgets/issues/report_issue_item.dart index 0d04910d..8a952be7 100644 --- a/lib/views/widgets/issues/report_issue_item.dart +++ b/lib/views/widgets/issues/report_issue_item.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class ReportIssueItem extends StatelessWidget { final bool isSelected; final String issueInfo; diff --git a/lib/views/widgets/loaders/app_lazy_loading.dart b/lib/views/widgets/loaders/app_lazy_loading.dart index 7f2676c1..e3378c98 100644 --- a/lib/views/widgets/loaders/app_lazy_loading.dart +++ b/lib/views/widgets/loaders/app_lazy_loading.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; import 'app_loading.dart'; class ALazyLoading extends StatelessWidget { diff --git a/lib/views/widgets/loaders/failed_loading.dart b/lib/views/widgets/loaders/failed_loading.dart index 42e047ef..5039628b 100644 --- a/lib/views/widgets/loaders/failed_loading.dart +++ b/lib/views/widgets/loaders/failed_loading.dart @@ -1,6 +1,6 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class FailedLoading extends StatelessWidget { final String message; final VoidCallback onReload; diff --git a/lib/views/widgets/loaders/lazy_loading.dart b/lib/views/widgets/loaders/lazy_loading.dart index d5649c30..d5e5f2ed 100644 --- a/lib/views/widgets/loaders/lazy_loading.dart +++ b/lib/views/widgets/loaders/lazy_loading.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; import 'app_loading.dart'; class LazyLoading extends StatefulWidget { diff --git a/lib/views/widgets/loaders/loading_manager.dart b/lib/views/widgets/loaders/loading_manager.dart index 2a0c9bd9..8ed322e0 100644 --- a/lib/views/widgets/loaders/loading_manager.dart +++ b/lib/views/widgets/loaders/loading_manager.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/subtitle.dart'; -import 'package:flutter/material.dart'; import 'app_loading.dart'; import 'failed_loading.dart'; diff --git a/lib/views/widgets/loaders/no_item_found.dart b/lib/views/widgets/loaders/no_item_found.dart index ca71c28e..5ed637e7 100644 --- a/lib/views/widgets/loaders/no_item_found.dart +++ b/lib/views/widgets/loaders/no_item_found.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class NoItemFound extends StatelessWidget { final String message; diff --git a/lib/views/widgets/parts/auto_complete_parts_field.dart b/lib/views/widgets/parts/auto_complete_parts_field.dart index e7918729..9c31d01e 100644 --- a/lib/views/widgets/parts/auto_complete_parts_field.dart +++ b/lib/views/widgets/parts/auto_complete_parts_field.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/parts_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -5,9 +8,6 @@ import 'package:test_sa/models/part.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:provider/provider.dart'; class AutoCompletePartsField extends StatefulWidget { final String initialValue; final Function(Part) onPick; diff --git a/lib/views/widgets/requests/info_row.dart b/lib/views/widgets/requests/info_row.dart index e7f8ed43..d8fe0bc6 100644 --- a/lib/views/widgets/requests/info_row.dart +++ b/lib/views/widgets/requests/info_row.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class RequestInfoRow extends StatelessWidget { final String title; final String info; diff --git a/lib/views/widgets/requests/request_status.dart b/lib/views/widgets/requests/request_status.dart index 44308861..c953efc8 100644 --- a/lib/views/widgets/requests/request_status.dart +++ b/lib/views/widgets/requests/request_status.dart @@ -1,8 +1,6 @@ -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/lookup.dart'; +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class StatusLabel extends StatelessWidget { final String label; final Color color; diff --git a/lib/views/widgets/requests/service_request_list.dart b/lib/views/widgets/requests/service_request_list.dart index 7672a5d6..7cd71079 100644 --- a/lib/views/widgets/requests/service_request_list.dart +++ b/lib/views/widgets/requests/service_request_list.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; @@ -5,7 +6,6 @@ import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; import 'package:test_sa/views/widgets/requests/service_request_item.dart'; -import 'package:flutter/material.dart'; class ServiceRequestsList extends StatelessWidget { final List requests; final bool nextPage; diff --git a/lib/views/widgets/search/filter_item.dart b/lib/views/widgets/search/filter_item.dart index 0d346dfb..10d708a0 100644 --- a/lib/views/widgets/search/filter_item.dart +++ b/lib/views/widgets/search/filter_item.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class FilterItem extends StatelessWidget { final bool isSelected; diff --git a/lib/views/widgets/search/service_request_search_bar.dart b/lib/views/widgets/search/service_request_search_bar.dart index 57781690..a1f78945 100644 --- a/lib/views/widgets/search/service_request_search_bar.dart +++ b/lib/views/widgets/search/service_request_search_bar.dart @@ -1,12 +1,12 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart'; -import 'package:flutter/material.dart'; import '../app_text_form_field.dart'; import 'filter_item.dart'; diff --git a/lib/views/widgets/search/visits_search_bar.dart b/lib/views/widgets/search/visits_search_bar.dart index 8930ea76..17805c20 100644 --- a/lib/views/widgets/search/visits_search_bar.dart +++ b/lib/views/widgets/search/visits_search_bar.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; @@ -8,8 +10,6 @@ import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/date_and_time/from_to_date_bar.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import '../app_text_form_field.dart'; import 'filter_item.dart'; diff --git a/lib/views/widgets/sound/record_sound.dart b/lib/views/widgets/sound/record_sound.dart index d53dbdb3..5ca797e4 100644 --- a/lib/views/widgets/sound/record_sound.dart +++ b/lib/views/widgets/sound/record_sound.dart @@ -83,7 +83,6 @@ class _RecordSoundState extends State { _recording = true; setState(() {}); - print("onTapDown"); } _stopRecording() async { @@ -93,12 +92,10 @@ class _RecordSoundState extends State { return; } String path = (await _myRecorder.stopRecorder()).toString(); - print("audio path ----> $path <-----"); _record = path; widget.onRecord(path); _recording = false; setState(() {}); - print("onTapUp"); } _cancelRecording() async { @@ -111,7 +108,6 @@ class _RecordSoundState extends State { _recording = false; await Future.delayed(const Duration(seconds: 1)); if (!_recording) setState(() {}); - print("onTapCancel"); // _message.memoryAudio.; } diff --git a/lib/views/widgets/sound/sound_player.dart b/lib/views/widgets/sound/sound_player.dart index 20dd0051..1422f24e 100644 --- a/lib/views/widgets/sound/sound_player.dart +++ b/lib/views/widgets/sound/sound_player.dart @@ -81,7 +81,6 @@ class _ASoundPlayerState extends State { icon: const Icon( Icons.replay_rounded), onPressed: () async { _failedToLoad = false; - print(!Uri.parse(_audio).isAbsolute); try { _audioPlayer.seek(const Duration(milliseconds: 0)); _audioPlayer.stop(); @@ -131,7 +130,6 @@ class _ASoundPlayerState extends State { } // set up listeners _audioPlayer.onPositionChanged.listen((Duration duration) { - //print('Current position: $p'); if(!_sliderMoving){ _audioPosition = duration; rebuild(); diff --git a/lib/views/widgets/status/employee/employee_mune.dart b/lib/views/widgets/status/employee/employee_mune.dart index 5ee55ea5..5ea741d4 100644 --- a/lib/views/widgets/status/employee/employee_mune.dart +++ b/lib/views/widgets/status/employee/employee_mune.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/employee/employee_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class EmployeeMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart index 925e920a..358226b0 100644 --- a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart +++ b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart @@ -1,13 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class GasCylinderSizeMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/status/gas_refill/gas_status.dart b/lib/views/widgets/status/gas_refill/gas_status.dart index c198bd33..1dce0c71 100644 --- a/lib/views/widgets/status/gas_refill/gas_status.dart +++ b/lib/views/widgets/status/gas_refill/gas_status.dart @@ -1,13 +1,11 @@ -import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class GasStatusMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/status/gas_refill/gas_type.dart b/lib/views/widgets/status/gas_refill/gas_type.dart index 6f0c0616..8d3b9e61 100644 --- a/lib/views/widgets/status/gas_refill/gas_type.dart +++ b/lib/views/widgets/status/gas_refill/gas_type.dart @@ -1,14 +1,11 @@ -import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class GasTypeMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/status/multi_status_menu.dart b/lib/views/widgets/status/multi_status_menu.dart index 8d1d7c4c..99a52a87 100644 --- a/lib/views/widgets/status/multi_status_menu.dart +++ b/lib/views/widgets/status/multi_status_menu.dart @@ -1,10 +1,9 @@ import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; class MultiStatusMenu extends StatefulWidget { final List statuses; final List initialSelectedStatus; diff --git a/lib/views/widgets/status/report/service_report_last_call.dart b/lib/views/widgets/status/report/service_report_last_call.dart index 1e858cb9..a3f59211 100644 --- a/lib/views/widgets/status/report/service_report_last_call.dart +++ b/lib/views/widgets/status/report/service_report_last_call.dart @@ -1,10 +1,10 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; -import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceReportLastCallsMenu extends StatelessWidget { final Function(Lookup) onSelect; final ServiceReport report; diff --git a/lib/views/widgets/status/report/service_report_reasons.dart b/lib/views/widgets/status/report/service_report_reasons.dart index fc24140d..dbdd48ef 100644 --- a/lib/views/widgets/status/report/service_report_reasons.dart +++ b/lib/views/widgets/status/report/service_report_reasons.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceReportReasonsMenu extends StatelessWidget { final Lookup initialValue; final Function(Lookup) onSelect; diff --git a/lib/views/widgets/status/report/service_report_status.dart b/lib/views/widgets/status/report/service_report_status.dart index d739b1db..8a4d1c98 100644 --- a/lib/views/widgets/status/report/service_report_status.dart +++ b/lib/views/widgets/status/report/service_report_status.dart @@ -1,15 +1,15 @@ import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_status_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceReportStatusMenu extends StatefulWidget { final Function(Lookup) onSelect; final ServiceReport report; diff --git a/lib/views/widgets/status/report/service_report_type.dart b/lib/views/widgets/status/report/service_report_type.dart index b3e509b3..fb315747 100644 --- a/lib/views/widgets/status/report/service_report_type.dart +++ b/lib/views/widgets/status/report/service_report_type.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceReportTypeMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/status/report/service_status.dart b/lib/views/widgets/status/report/service_status.dart index a9bd0950..37eb554e 100644 --- a/lib/views/widgets/status/report/service_status.dart +++ b/lib/views/widgets/status/report/service_status.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class ServiceStatusMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; diff --git a/lib/views/widgets/titles/app_sub_title.dart b/lib/views/widgets/titles/app_sub_title.dart index f70559b6..f5651c65 100644 --- a/lib/views/widgets/titles/app_sub_title.dart +++ b/lib/views/widgets/titles/app_sub_title.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class ASubTitle extends StatelessWidget { final String text; final EdgeInsets padding; diff --git a/lib/views/widgets/titles/expandable_info_row.dart b/lib/views/widgets/titles/expandable_info_row.dart index c67ff85f..b5d24e62 100644 --- a/lib/views/widgets/titles/expandable_info_row.dart +++ b/lib/views/widgets/titles/expandable_info_row.dart @@ -1,6 +1,6 @@ -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class ExpandableInfoRow extends StatefulWidget { final IconData iconData; final String title; diff --git a/lib/views/widgets/visits/visit_status.dart b/lib/views/widgets/visits/visit_status.dart index 7309dcd6..871287fe 100644 --- a/lib/views/widgets/visits/visit_status.dart +++ b/lib/views/widgets/visits/visit_status.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class VisitStatusLabel extends StatelessWidget { final Visit visit; From 4fbefdf4e260a276cdcacfe74c6f9f6cba0ef9da Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 15 Jan 2023 16:45:29 +0300 Subject: [PATCH 5/6] android build name and code added. --- android/app/build.gradle | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 6edcaa35..e55e2b22 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -49,8 +49,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion 21 targetSdkVersion 33 - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + versionCode 1 + versionName '1.0.0' } signingConfigs { diff --git a/pubspec.yaml b/pubspec.yaml index 6d74f91c..d7f45c00 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.7.4+1 +version: 1.0.0+1 environment: sdk: ">=2.7.0 <3.0.0" From a9a269b2f9dffe7fe869c6c6eea8c16888ac7a80 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 17 Jan 2023 14:45:44 +0300 Subject: [PATCH 6/6] modifications. --- ios/GoogleService-Info.plist | 34 ++++++++++++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 18 ++++++++++++--- ios/Runner/AppDelegate.swift | 2 ++ ios/Runner/GoogleService-Info.plist | 34 ++++++++++++++++++++++++++++ ios/Runner/Info.plist | 27 ++++++++++++++-------- ios/Runner/Runner.entitlements | 8 +++++++ lib/views/pages/login.dart | 24 +++++++++----------- pubspec.yaml | 2 +- 8 files changed, 122 insertions(+), 27 deletions(-) create mode 100644 ios/GoogleService-Info.plist create mode 100644 ios/Runner/GoogleService-Info.plist create mode 100644 ios/Runner/Runner.entitlements diff --git a/ios/GoogleService-Info.plist b/ios/GoogleService-Info.plist new file mode 100644 index 00000000..b6a5d4ff --- /dev/null +++ b/ios/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 973582662416-3jlv0ckuiupmo20lsjv56pcqgho6ga63.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.973582662416-3jlv0ckuiupmo20lsjv56pcqgho6ga63 + API_KEY + AIzaSyACQkSleNwU1jzEKR5ho1uSfZERokwwAbc + GCM_SENDER_ID + 973582662416 + PLIST_VERSION + 1 + BUNDLE_ID + com.hmg.atoms + PROJECT_ID + atoms-fb912 + STORAGE_BUCKET + atoms-fb912.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:973582662416:ios:bc4a8061444c6a08fbc395 + + \ No newline at end of file diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 5454e4be..a5559bc2 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 00C3AFCE29769C38002E7B47 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 00C3AFCD29769C37002E7B47 /* GoogleService-Info.plist */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; @@ -30,6 +31,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 00C3AFCC297590E6002E7B47 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + 00C3AFCD29769C37002E7B47 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 21218448C05A6EE259A8A273 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; @@ -104,6 +107,8 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + 00C3AFCD29769C37002E7B47 /* GoogleService-Info.plist */, + 00C3AFCC297590E6002E7B47 /* Runner.entitlements */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -189,6 +194,7 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 00C3AFCE29769C38002E7B47 /* GoogleService-Info.plist in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); @@ -332,6 +338,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + EXCLUDED_ARCHS = arm64; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -355,6 +362,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; @@ -364,7 +372,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; + MARKETING_VERSION = 1.0.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -492,6 +500,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + EXCLUDED_ARCHS = arm64; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -548,6 +557,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + EXCLUDED_ARCHS = arm64; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -573,6 +583,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; @@ -582,7 +593,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; + MARKETING_VERSION = 1.0.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -683,6 +694,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; @@ -692,7 +704,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; + MARKETING_VERSION = 1.0.1; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 70693e4a..077fc083 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,5 +1,6 @@ import UIKit import Flutter +import Firebase @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { @@ -7,6 +8,7 @@ import Flutter _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { + FirebaseApp.configure() GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 00000000..b6a5d4ff --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 973582662416-3jlv0ckuiupmo20lsjv56pcqgho6ga63.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.973582662416-3jlv0ckuiupmo20lsjv56pcqgho6ga63 + API_KEY + AIzaSyACQkSleNwU1jzEKR5ho1uSfZERokwwAbc + GCM_SENDER_ID + 973582662416 + PLIST_VERSION + 1 + BUNDLE_ID + com.hmg.atoms + PROJECT_ID + atoms-fb912 + STORAGE_BUCKET + atoms-fb912.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:973582662416:ios:bc4a8061444c6a08fbc395 + + \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index df02890c..347cd5f4 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -22,8 +24,23 @@ ???? CFBundleVersion $(FLUTTER_BUILD_NUMBER) + FirebaseAppDelegateProxyEnabled + LSRequiresIPhoneOS + NSCameraUsageDescription + This app requires permission to access Camera to allow user to attach images + NSMicrophoneUsageDescription + This app requires permission for Record Audio for to allow user to send voice notes + NSPhotoLibraryUsageDescription + This app requires permission to access photo gallery to allow user to attach images + NSSpeechRecognitionUsageDescription + This app requires permission for Speech Recognition for speech to text functionality. + UIBackgroundModes + + fetch + remote-notification + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -43,15 +60,5 @@ UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone - - NSSpeechRecognitionUsageDescription - This app requires permission for Speech Recognition for speech to text functionality. - NSMicrophoneUsageDescription - This app requires permission for Record Audio for to allow user to send voice notes - NSPhotoLibraryUsageDescription - This app requires permission to access photo gallery to allow user to attach images - NSCameraUsageDescription - This app requires permission to access Camera to allow user to attach images diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements new file mode 100644 index 00000000..903def2a --- /dev/null +++ b/ios/Runner/Runner.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/lib/views/pages/login.dart b/lib/views/pages/login.dart index e351b9f9..33372b50 100644 --- a/lib/views/pages/login.dart +++ b/lib/views/pages/login.dart @@ -131,19 +131,17 @@ class _LoginState extends State { } }, ), - SizedBox( - height: 140 * AppStyle.getScaleFactor(context), - ), - AOutLinedButton( - text: _subtitle.signUp, - //color: AColors.cyan, - onPressed: () { - Navigator.of(context).pushNamed(Register.id); - }, - ), - SizedBox( - height: 32, - ), + // SizedBox( + // height: 140 * AppStyle.getScaleFactor(context), + // ), + // AOutLinedButton( + // text: _subtitle.signUp, + // //color: AColors.cyan, + // onPressed: () { + // Navigator.of(context).pushNamed(Register.id); + // }, + // ), + const SizedBox(height: 32), ], ), ), diff --git a/pubspec.yaml b/pubspec.yaml index d7f45c00..99885208 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 +version: 1.0.1+2 environment: sdk: ">=2.7.0 <3.0.0"