diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0e5c500..40f2b75 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 611C662010675536F855E5CA /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 964EC64D4BABF3375BEBF6DE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */; }; 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 */; }; - D31283674D2826D7EF8E56BC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */; }; + CE9CA504D8FF2965F977B16B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,24 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; }; - 12AD49A621BEBB053FD06115 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; + 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; }; + 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; 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 = ""; }; - 1F99043C7AC9BDABD8A4D41A /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; - 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; }; - 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; }; - 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2688A8D4C03F1C4585B3EFE2 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; + 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 444D77D28A8CDF32047CD0AF /* 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 = ""; }; - 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5DE3E6D1EADE3D3859FC1B69 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; + 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; }; + 54B9D4926B53AAFC49A54F19 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; 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 = ""; }; - 949637473C534E1F68B19CC0 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -67,16 +63,14 @@ 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 = ""; }; - 9B82456986D7FA25420A224F /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; - A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; }; - AAC9129FD50E64509AD1B9AF /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - BFD4DDED98208034B60B5311 /* 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 = ""; }; - C41134CD2FDFC1A2BDF49283 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; - C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; }; - D0F6245A5BF345FCC425515C /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; - DFB6BB492A265F2BF6FDC8C0 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; - F323D632CA976B68DDB0E669 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 9D1B204BC7CD29434FE9D537 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; + C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; }; + E0A467016A4C6B17ECA05534 /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; + E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; + F5E8A17F8AB7D50983179FD3 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; + FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; }; + FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FC3EFA91747319965EF91609 /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -84,7 +78,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D31283674D2826D7EF8E56BC /* Pods_Runner.framework in Frameworks */, + CE9CA504D8FF2965F977B16B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,7 +86,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 611C662010675536F855E5CA /* Pods_RunnerTests.framework in Frameworks */, + 964EC64D4BABF3375BEBF6DE /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -102,24 +96,18 @@ 2F70EB4341A83C900EB253DC /* Pods */ = { isa = PBXGroup; children = ( - BFD4DDED98208034B60B5311 /* Pods-Runner.debug.xcconfig */, - 949637473C534E1F68B19CC0 /* Pods-Runner.release.xcconfig */, - 444D77D28A8CDF32047CD0AF /* Pods-Runner.profile.xcconfig */, - DFB6BB492A265F2BF6FDC8C0 /* Pods-RunnerTests.debug.xcconfig */, - F323D632CA976B68DDB0E669 /* Pods-RunnerTests.release.xcconfig */, - AAC9129FD50E64509AD1B9AF /* Pods-RunnerTests.profile.xcconfig */, - 9B82456986D7FA25420A224F /* Pods-Runner.debug-prod.xcconfig */, - 5DE3E6D1EADE3D3859FC1B69 /* Pods-Runner.debug-dev.xcconfig */, - 12AD49A621BEBB053FD06115 /* Pods-Runner.release-prod.xcconfig */, - C41134CD2FDFC1A2BDF49283 /* Pods-Runner.release-dev.xcconfig */, - D0F6245A5BF345FCC425515C /* Pods-Runner.profile-prod.xcconfig */, - 1F99043C7AC9BDABD8A4D41A /* Pods-Runner.profile-dev.xcconfig */, - 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */, - EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */, - C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */, - A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */, - 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */, - 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */, + FC3EFA91747319965EF91609 /* Pods-Runner.debug-prod.xcconfig */, + F5E8A17F8AB7D50983179FD3 /* Pods-Runner.debug-dev.xcconfig */, + 54B9D4926B53AAFC49A54F19 /* Pods-Runner.release-prod.xcconfig */, + 2688A8D4C03F1C4585B3EFE2 /* Pods-Runner.release-dev.xcconfig */, + E0A467016A4C6B17ECA05534 /* Pods-Runner.profile-prod.xcconfig */, + 9D1B204BC7CD29434FE9D537 /* Pods-Runner.profile-dev.xcconfig */, + FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */, + E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */, + 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */, + C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */, + 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */, + 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */, ); path = Pods; sourceTree = ""; @@ -132,11 +120,11 @@ path = RunnerTests; sourceTree = ""; }; - 876D3217A8BBDAF41961161F /* Frameworks */ = { + 61B46FA3FB0932D29E3C6E47 /* Frameworks */ = { isa = PBXGroup; children = ( - 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */, - 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */, + 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */, + FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -160,7 +148,7 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 2F70EB4341A83C900EB253DC /* Pods */, - 876D3217A8BBDAF41961161F /* Frameworks */, + 61B46FA3FB0932D29E3C6E47 /* Frameworks */, ); sourceTree = ""; }; @@ -195,7 +183,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 3B971DE531245D7FD2921C30 /* [CP] Check Pods Manifest.lock */, + 73698F4EABFF3F9B7ADF4220 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, C2B33A7265AF659D80692473 /* Frameworks */, @@ -214,7 +202,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 3DC878D0674AA34AEC9695FB /* [CP] Check Pods Manifest.lock */, + BF71A0E0099ADA10FE9B580A /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, B07E4A152C9B8EA4001F6910 /* copy GoogleService.plist file to the correct location */, 97C146EA1CF9000F007C117D /* Sources */, @@ -222,9 +210,9 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 315A05630CF83C532DBBCBF2 /* [CP] Embed Pods Frameworks */, - 3724F7A126D8469D5B04D144 /* [CP] Copy Pods Resources */, 4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, + 6CF71F42A45B39E9945C8410 /* [CP] Embed Pods Frameworks */, + 14DF593CA13D27D3781140F6 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -296,24 +284,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 315A05630CF83C532DBBCBF2 /* [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; - }; - 3724F7A126D8469D5B04D144 /* [CP] Copy Pods Resources */ = { + 14DF593CA13D27D3781140F6 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -346,7 +317,42 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B971DE531245D7FD2921C30 /* [CP] Check Pods Manifest.lock */ = { + 4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; + }; + 6CF71F42A45B39E9945C8410 /* [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; + }; + 73698F4EABFF3F9B7ADF4220 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -368,46 +374,6 @@ 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; }; - 3DC878D0674AA34AEC9695FB /* [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; - }; - 4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -441,6 +407,28 @@ shellPath = /bin/sh; shellScript = "# Get a reference to the destination location for the GoogleService-Info.plist\n# This is the default location where Firebase init code expects to find GoogleServices-Info.plist file.\nPLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\n# We have named our Build Configurations as Debug-dev, Debug-prod etc.\n# Here, dev and prod are the scheme names. This kind of naming is required by Flutter for flavors to work.\n# We are using the $CONFIGURATION variable available in the XCode build environment to get the build configuration.\nif [ \"${CONFIGURATION}\" == \"Debug-prod\" ] || [ \"${CONFIGURATION}\" == \"Release-prod\" ] || [ \"${CONFIGURATION}\" == \"Profile-prod\" ] || [ \"${CONFIGURATION}\" == \"Release\" ]; then\ncp \"${PROJECT_DIR}/config/prod/GoogleService-Info.plist\" \"${PLIST_DESTINATION}/GoogleService-Info.plist\"\necho \"Production plist copied\"\nelif [ \"${CONFIGURATION}\" == \"Debug-dev\" ] || [ \"${CONFIGURATION}\" == \"Release-dev\" ] || [ \"${CONFIGURATION}\" == \"Profile-dev\" ] || [ \"${CONFIGURATION}\" == \"Debug\" ]; then\ncp \"${PROJECT_DIR}/config/dev/GoogleService-Info.plist\" \"${PLIST_DESTINATION}/GoogleService-Info.plist\"\necho \"Development plist copied\"\nfi\n"; }; + BF71A0E0099ADA10FE9B580A /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -575,7 +563,7 @@ }; 331C8088294A63A400263BE5 /* Debug-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */; + baseConfigurationReference = FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -593,7 +581,7 @@ }; 331C8089294A63A400263BE5 /* Release-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */; + baseConfigurationReference = 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -609,7 +597,7 @@ }; 331C808A294A63A400263BE5 /* Profile-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */; + baseConfigurationReference = 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -885,7 +873,7 @@ }; B07E4A0E2C9B8C45001F6910 /* Debug-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */; + baseConfigurationReference = E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -987,7 +975,7 @@ }; B07E4A112C9B8C52001F6910 /* Release-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */; + baseConfigurationReference = C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1085,7 +1073,7 @@ }; B07E4A142C9B8C5C001F6910 /* Profile-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */; + baseConfigurationReference = 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart b/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart index b2857d6..a1ff854 100644 --- a/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart +++ b/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/four_scene_bloc/four_scene_event.dart'; @@ -27,9 +26,8 @@ class FourSceneBloc extends Bloc { FourSceneBloc({ required this.fourSceneId, }) : super(const FourSceneState()) { - on(_fetchStatus); - on(fetchDeviceData); - on(fetchLogsForLastMonth); + on(_fetchDeviceStatus); + on(fetchDeviceInfo); on(saveName); on(_toggleNotification); on(_changeName); @@ -47,6 +45,8 @@ class FourSceneBloc extends Bloc { on(_fetchDeviceScene); on(_controlDevice); on(_fetchFourSceneSwitches); + on(assignScene); + on(getSceneByName); } final TextEditingController nameController = @@ -99,7 +99,7 @@ class FourSceneBloc extends Bloc { subspaceName: "", ), ); - + String sceneId = ''; Future saveName( SaveNameEvent event, Emitter emit) async { if (_validateInputs()) return; @@ -125,27 +125,36 @@ class FourSceneBloc extends Bloc { FourSceneSwitchInitial event, Emitter emit) async { emit(FourSceneLoadingState()); try { - List response = await DevicesAPI.getFourSceneInfo(fourSceneId); - fourScene = - response.map((item) => FourSceneSwitchModel.fromJson(item)).toList(); - _rankFourSceneSwitches(); + var response = await DevicesAPI.getFourSceneInfo(fourSceneId); + Map sceneTitles = { + "scene_1": '', + "scene_2": '', + "scene_3": '', + "scene_4": '' + }; + for (var item in response) { + if (item["switchName"] != null) { + sceneTitles[item["switchName"]] = item["scene"]["name"] ?? ''; + } + } + print('object======4${response}'); + FourSceneModelState deviceStatus = FourSceneModelState( + scene_1: sceneTitles["scene_1"] ?? '', + scene_2: sceneTitles["scene_2"] ?? '', + scene_3: sceneTitles["scene_3"] ?? '', + scene_4: sceneTitles["scene_4"] ?? '', + scene_id_group_id: '', + switch_backlight: '', + ); emit(UpdateState(device: deviceStatus)); } catch (e) { emit(FourSceneFailedState(errorMessage: e.toString())); + return; } } - void _rankFourSceneSwitches() { - const switchOrder = ['scene_1', 'scene_2', 'scene_3', 'scene_4']; - fourScene.sort((a, b) { - return switchOrder - .indexOf(a.switchName) - .compareTo(switchOrder.indexOf(b.switchName)); - }); - } - - void _fetchStatus( + void _fetchDeviceStatus( FourSceneInitial event, Emitter emit) async { emit(FourSceneLoadingState()); try { @@ -157,15 +166,41 @@ class FourSceneBloc extends Bloc { deviceStatus = FourSceneModelState.fromJson( statusModelList, ); - emit(UpdateState(device: deviceStatus)); - Future.delayed(const Duration(milliseconds: 500)); - // _listenToChanges(); + add(const FourSceneSwitchInitial()); } catch (e) { emit(FourSceneFailedState(errorMessage: e.toString())); return; } } + void assignScene( + AssignDeviceScene event, Emitter emit) async { + emit(FourSceneLoadingState()); + try { + final response = await DevicesAPI.postFourSceneInfo( + deviceId: fourSceneId, + sceneUuid: event.sceneUuid, + spaceUuid: event.unit!.id, + switchName: event.switchName); + emit(SaveSelectionSuccessState()); + } catch (e) { + emit(FourSceneFailedState(errorMessage: e.toString())); + } + } + + void getSceneByName( + GetSceneBySwitchName event, Emitter emit) async { + emit(FourSceneLoadingState()); + try { + final response = await DevicesAPI.getSceneBySwitchName( + deviceId: fourSceneId, switchName: event.switchName); + sceneId = response['scene']['uuid']; + emit(SaveSelectionSuccessState()); + } catch (e) { + emit(FourSceneFailedState(errorMessage: e.toString())); + } + } + void _fetchDeviceScene( FetchDeviceScene event, Emitter emit) async { emit(FourSceneLoadingState()); @@ -180,7 +215,6 @@ class FourSceneBloc extends Bloc { ); emit(UpdateState(device: deviceStatus)); Future.delayed(const Duration(milliseconds: 500)); - // _listenToChanges(); } catch (e) { emit(FourSceneFailedState(errorMessage: e.toString())); return; @@ -208,13 +242,17 @@ class FourSceneBloc extends Bloc { } } - Future fetchDeviceData( + Future fetchDeviceInfo( FourSceneInitialInfo event, Emitter emit) async { - emit(FourSceneLoadingState()); - var response = await DevicesAPI.getDeviceInfo(fourSceneId); - deviceInfo = SceneSwitch.fromJson(response); - deviceName = deviceInfo.name; - emit(LoadingDeviceInfo(deviceInfo: deviceInfo)); + try { + emit(FourSceneLoadingState()); + var response = await DevicesAPI.getDeviceInfo(fourSceneId); + deviceInfo = SceneSwitch.fromJson(response); + deviceName = deviceInfo.name; + emit(LoadingDeviceInfo(deviceInfo: deviceInfo)); + } catch (e) { + emit(FourSceneFailedState(errorMessage: e.toString())); + } } void _onSearchFaq(SearchFaqEvent event, Emitter emit) { @@ -263,29 +301,6 @@ class FourSceneBloc extends Bloc { DeviceReport recordGroups = DeviceReport(startTime: '0', endTime: '0', data: []); - Future fetchLogsForLastMonth( - ReportLogsInitial event, Emitter emit) async { - DateTime now = DateTime.now(); - DateTime lastMonth = DateTime(now.year, now.month - 1, now.day); - int startTime = lastMonth.millisecondsSinceEpoch; - int endTime = now.millisecondsSinceEpoch; - try { - emit(FourSceneLoadingState()); - var response = await DevicesAPI.getReportLogs( - startTime: startTime.toString(), - endTime: endTime.toString(), - deviceUuid: fourSceneId, - code: 'sossensor_state', - ); - recordGroups = response; - emit(UpdateState(device: deviceStatus)); - } on DioException catch (e) { - final errorData = e.response!.data; - String errorMessage = errorData['message']; - emit(FourSceneFailedState(errorMessage: e.toString())); - } - } - final List faqQuestions = [ FourSceneQuestionModel( id: 1, @@ -487,18 +502,11 @@ class FourSceneBloc extends Bloc { if (value == null) return 'name is required'; final withoutExtraSpaces = value.replaceAll(RegExp(r"\s+"), ' ').trim(); if (withoutExtraSpaces.length < 2 || withoutExtraSpaces.length > 30) { - return 'Full name must be between 2 and 30 characters long'; + return 'name must be between 2 and 30 characters long'; } - // Test if it contains anything but alphanumeric spaces and single quote if (RegExp(r"/[^ a-zA-Z0-9-\']/").hasMatch(withoutExtraSpaces)) { return 'Only alphanumeric characters, space, dash and single quote are allowed'; } - return null; } - - String scene1 = 'scene_1'; - String scene2 = 'scene_2'; - String scene3 = 'scene_3'; - String scene4 = 'scene_4'; } diff --git a/lib/features/devices/bloc/four_scene_bloc/four_scene_event.dart b/lib/features/devices/bloc/four_scene_bloc/four_scene_event.dart index f2c69b0..0571e27 100644 --- a/lib/features/devices/bloc/four_scene_bloc/four_scene_event.dart +++ b/lib/features/devices/bloc/four_scene_bloc/four_scene_event.dart @@ -212,3 +212,20 @@ class ControlDeviceScene extends FourSceneEvent { class FourSceneSwitchInitial extends FourSceneEvent { const FourSceneSwitchInitial(); } +class SaveSelectionSceneEvent extends FourSceneEvent { + const SaveSelectionSceneEvent(); +} + +class AssignDeviceScene extends FourSceneEvent { + final String? sceneUuid; + final String? switchName; + final SpaceModel? unit; + const AssignDeviceScene({this.sceneUuid, this.unit,this.switchName}); +} + + +class GetSceneBySwitchName extends FourSceneEvent { + final String? switchName; + + const GetSceneBySwitchName({this.switchName}); +} \ No newline at end of file diff --git a/lib/features/devices/bloc/four_scene_bloc/four_scene_state.dart b/lib/features/devices/bloc/four_scene_bloc/four_scene_state.dart index a0dba6b..0242034 100644 --- a/lib/features/devices/bloc/four_scene_bloc/four_scene_state.dart +++ b/lib/features/devices/bloc/four_scene_bloc/four_scene_state.dart @@ -54,7 +54,7 @@ class LoadingNewSate extends FourSceneState { class NameEditingState extends FourSceneState { final bool editName; - NameEditingState({required this.editName}); + const NameEditingState({required this.editName}); } class FaqLoadedState extends FourSceneState { @@ -97,6 +97,7 @@ class SceneLoaded extends FourSceneState { class SelectedSceneState extends FourSceneState {} class SearchResultsState extends FourSceneState {} + class SaveState extends FourSceneState {} class SaveSelectionSuccessState extends FourSceneState {} @@ -114,11 +115,10 @@ class OptionSelectedState extends FourSceneState { List get props => [selectedOption, hasSelectionChanged]; } - class LoadingDeviceInfo extends FourSceneState { final SceneSwitch deviceInfo; const LoadingDeviceInfo({required this.deviceInfo}); @override List get props => [deviceInfo]; -} \ No newline at end of file +} diff --git a/lib/features/devices/view/widgets/6_scene_switch/select_switch_dialog.dart b/lib/features/devices/view/widgets/6_scene_switch/select_switch_dialog.dart index 453722c..1195d85 100644 --- a/lib/features/devices/view/widgets/6_scene_switch/select_switch_dialog.dart +++ b/lib/features/devices/view/widgets/6_scene_switch/select_switch_dialog.dart @@ -7,19 +7,25 @@ import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; class SelectSwitchDialog extends StatefulWidget { final Function()? cancelTab; final Function()? confirmTab; - - const SelectSwitchDialog({ - super.key, - required this.cancelTab, - required this.confirmTab, - }); + String? switch1Title; + String? switch2Title; + String? switch3Title; + String? switch4Title; + SelectSwitchDialog( + {super.key, + required this.cancelTab, + required this.confirmTab, + this.switch1Title, + this.switch2Title, + this.switch3Title, + this.switch4Title}); @override State createState() => _SelectSwitchDialogState(); } class _SelectSwitchDialogState extends State { - int? selectedSwitchIndex = 0; // State variable to track selected switch + int? selectedSwitchIndex = 0; @override Widget build(BuildContext context) { @@ -44,6 +50,10 @@ class _SelectSwitchDialogState extends State { Row( children: [ SwitchsCard( + switch1Title: widget.switch1Title, + switch2Title: widget.switch2Title, + switch3Title: widget.switch3Title, + switch4Title: widget.switch4Title, switch1Down: selectedSwitchIndex == -1 ? Assets.removeSceneIcon : Assets.addSwitchIcon, @@ -56,7 +66,6 @@ class _SelectSwitchDialogState extends State { switch2Up: selectedSwitchIndex == 2 ? Assets.removeSceneIcon : Assets.addSwitchIcon, - onSwitch1UpTap: () { setState(() => selectedSwitchIndex = 1); }, @@ -69,8 +78,6 @@ class _SelectSwitchDialogState extends State { onSwitch2DownTap: () { setState(() => selectedSwitchIndex = -2); }, - - ), ], ), diff --git a/lib/features/devices/view/widgets/6_scene_switch/six_scene_screen.dart b/lib/features/devices/view/widgets/6_scene_switch/six_scene_screen.dart index f502a55..50a3034 100644 --- a/lib/features/devices/view/widgets/6_scene_switch/six_scene_screen.dart +++ b/lib/features/devices/view/widgets/6_scene_switch/six_scene_screen.dart @@ -70,6 +70,10 @@ class SixSceneScreen extends StatelessWidget { child: Column( children: [ SwitchsCard( + // switch1Title: , + // switch2Title: , + // switch3Title: , + // switch4Title: , switch1Down: sensor.switchStatus == true ? Assets.switchOn : Assets.switchOff, @@ -95,7 +99,6 @@ class SixSceneScreen extends StatelessWidget { onSwitch2DownTap: () { debugPrint("Switch 2 Down tapped"); }, - ), Flexible( child: Row( diff --git a/lib/features/devices/view/widgets/6_scene_switch/switches_card.dart b/lib/features/devices/view/widgets/6_scene_switch/switches_card.dart index de4a0a3..9c39772 100644 --- a/lib/features/devices/view/widgets/6_scene_switch/switches_card.dart +++ b/lib/features/devices/view/widgets/6_scene_switch/switches_card.dart @@ -1,8 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; class SwitchsCard extends StatelessWidget { + final String? switch1Title; + final String? switch2Title; + final String? switch3Title; + final String? switch4Title; + final String switch1Up; final String switch1Down; final String switch2Up; @@ -22,6 +28,10 @@ class SwitchsCard extends StatelessWidget { required this.onSwitch1DownTap, required this.onSwitch2UpTap, required this.onSwitch2DownTap, + this.switch1Title, + this.switch2Title, + this.switch3Title, + this.switch4Title, }); @override @@ -74,12 +84,22 @@ class SwitchsCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ // Switch 1 - _buildSwitchColumn(switch1Up, switch1Down, - onSwitch1UpTap, onSwitch1DownTap), + _buildSwitchColumn( + switchUp: switch1Up, + switchDown: switch1Down, + onUpTap: onSwitch1UpTap, + onDownTap: onSwitch1DownTap, + titleDown: switch3Title!, + titleUp: switch1Title!), _buildDivider(), // Switch 2 - _buildSwitchColumn(switch2Up, switch2Down, - onSwitch2UpTap, onSwitch2DownTap), + _buildSwitchColumn( + switchUp: switch2Up, + switchDown: switch2Down, + onDownTap: onSwitch2UpTap, + onUpTap: onSwitch2DownTap, + titleDown: switch4Title!, + titleUp: switch2Title!), ], ), ), @@ -92,33 +112,49 @@ class SwitchsCard extends StatelessWidget { ); } - Widget _buildSwitchColumn( - String switchUp, - String switchDown, - VoidCallback onUpTap, - VoidCallback onDownTap, - ) { + Widget _buildSwitchColumn({ + String switchUp = '', + String titleUp = '', + String titleDown = '', + String switchDown = '', + VoidCallback? onUpTap, + VoidCallback? onDownTap, + }) { return Expanded( child: Padding( padding: const EdgeInsets.only(top: 30, bottom: 30), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - InkWell( - onTap: onUpTap, - child: Container( - height: 20, - width: 20, - child: SvgPicture.asset(switchUp), - ), + Column( + children: [ + InkWell( + onTap: onUpTap, + child: Container( + height: 20, + width: 20, + child: SvgPicture.asset(switchUp), + ), + ), + BodySmall( + text: titleUp, + ) + ], ), - InkWell( - onTap: onDownTap, - child: Container( - height: 20, - width: 20, - child: SvgPicture.asset(switchDown), - ), + Column( + children: [ + InkWell( + onTap: onDownTap, + child: Container( + height: 20, + width: 20, + child: SvgPicture.asset(switchDown), + ), + ), + BodySmall( + text: titleDown, + ) + ], ), ], ), diff --git a/lib/features/devices/view/widgets/four_scene_switch/four_scene_screen.dart b/lib/features/devices/view/widgets/four_scene_switch/four_scene_screen.dart index 5b01828..3c96bc0 100644 --- a/lib/features/devices/view/widgets/four_scene_switch/four_scene_screen.dart +++ b/lib/features/devices/view/widgets/four_scene_switch/four_scene_screen.dart @@ -77,18 +77,10 @@ class FourSceneScreen extends StatelessWidget { child: Column( children: [ FourSwitchsCard( - title1: _bloc.fourScene.isNotEmpty - ? _bloc.fourScene[0].scene.name - : '', - title2: _bloc.fourScene.length > 1 - ? _bloc.fourScene[0].scene.name - : '', - title3: _bloc.fourScene.length > 2 - ? _bloc.fourScene[0].scene.name - : '', - title4: _bloc.fourScene.length > 3 - ? _bloc.fourScene[0].scene.name - : '', + title1: model.scene_1, + title2: model.scene_2, + title3: model.scene_3, + title4: model.scene_4, switch1: _bloc.deviceStatus.switch_backlight == true ? Assets.switchOn @@ -163,14 +155,20 @@ class FourSceneScreen extends StatelessWidget { context: context, builder: (context) { return FourSelectSwitchDialog( + switch1Title: model.scene_1, + switch2Title: model.scene_2, + switch3Title: model.scene_3, + switch4Title: model.scene_4, cancelTab: () { Navigator.of(context).pop(); }, - confirmTab: () { + confirmTab: (switchSelected) { Navigator.of(context).push( MaterialPageRoute( builder: (context) => - FourSelectSceneFourPage()), + FourSelectSceneFourPage( + switchSelected: switchSelected, + deviceId:device!.uuid)), ); }, ); @@ -219,3 +217,6 @@ class FourSceneScreen extends StatelessWidget { ); } } + + +//MohaM&&&uba1 \ No newline at end of file diff --git a/lib/features/devices/view/widgets/four_scene_switch/four_select_scene_page.dart b/lib/features/devices/view/widgets/four_scene_switch/four_select_scene_page.dart index 4d463b0..8eee620 100644 --- a/lib/features/devices/view/widgets/four_scene_switch/four_select_scene_page.dart +++ b/lib/features/devices/view/widgets/four_scene_switch/four_select_scene_page.dart @@ -17,7 +17,9 @@ import 'package:syncrow_app/navigation/routing_constants.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; class FourSelectSceneFourPage extends StatelessWidget { - FourSelectSceneFourPage({super.key}); + final String? switchSelected; + final String? deviceId; + FourSelectSceneFourPage({super.key, this.switchSelected, this.deviceId}); final TextEditingController _searchController = TextEditingController(); final int? selectedSwitchIndex = 0; @@ -26,12 +28,13 @@ class FourSelectSceneFourPage extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => FourSceneBloc(fourSceneId: '') + create: (context) => FourSceneBloc(fourSceneId: deviceId!) ..add(LoadScenes( unit: spaces!.first, unitId: spaces!.first.id, showInDevice: false, - )), + )) + ..add(GetSceneBySwitchName(switchName: switchSelected)), child: BlocBuilder( builder: (context, state) { final sensorBloc = BlocProvider.of(context); @@ -57,8 +60,10 @@ class FourSelectSceneFourPage extends StatelessWidget { return GestureDetector( onTap: canSave ? () { - print('object'); - // context.read().add(SaveSelectionEvent()); + context.read().add(AssignDeviceScene( + sceneUuid: sensorBloc.selectedSceneId, + switchName: switchSelected, + unit: spaces!.first)); } : null, child: BodyMedium( @@ -127,7 +132,6 @@ class FourSelectSceneFourPage extends StatelessWidget { // Scene grid builder Widget _buildSceneGrid(FourSceneBloc sensorBloc) { final scenes = sensorBloc.filteredScenes; - return GridView.builder( itemCount: scenes.length + 1, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( @@ -137,6 +141,7 @@ class FourSelectSceneFourPage extends StatelessWidget { mainAxisExtent: 120, ), itemBuilder: (context, index) { + // sensorBloc.sceneId; if (index == scenes.length) { return InkWell( onTap: () => Navigator.pushNamed( @@ -154,7 +159,7 @@ class FourSelectSceneFourPage extends StatelessWidget { final scene = scenes[index]; return SceneItem( id: scene.id, - value: sensorBloc.selectedSceneId == scene.id, + value: (sensorBloc.selectedSceneId == scene.id), disablePlayButton: false, onChanged: (isSelected) { sensorBloc.selectedSceneId = isSelected ? scene.id : 'null'; diff --git a/lib/features/devices/view/widgets/four_scene_switch/four_select_switch_dialog.dart b/lib/features/devices/view/widgets/four_scene_switch/four_select_switch_dialog.dart index c89fdce..28e2255 100644 --- a/lib/features/devices/view/widgets/four_scene_switch/four_select_switch_dialog.dart +++ b/lib/features/devices/view/widgets/four_scene_switch/four_select_switch_dialog.dart @@ -6,20 +6,28 @@ import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; class FourSelectSwitchDialog extends StatefulWidget { final Function()? cancelTab; - final Function()? confirmTab; + final Function(String)? confirmTab; - const FourSelectSwitchDialog({ - super.key, - required this.cancelTab, - required this.confirmTab, - }); + final String switch1Title; + final String switch2Title; + final String switch3Title; + final String switch4Title; + + const FourSelectSwitchDialog( + {super.key, + required this.cancelTab, + required this.confirmTab, + required this.switch1Title, + required this.switch2Title, + required this.switch3Title, + required this.switch4Title}); @override State createState() => _FourSelectSwitchDialogState(); } class _FourSelectSwitchDialogState extends State { - int? selectedSwitchIndex = 0; // State variable to track selected switch + String selectedSwitchName = ''; // State variable to track selected switch @override Widget build(BuildContext context) { @@ -44,33 +52,34 @@ class _FourSelectSwitchDialogState extends State { Row( children: [ SwitchsCard( - switch1Down: selectedSwitchIndex == -1 + switch1Title: widget.switch1Title, + switch2Title: widget.switch2Title, + switch3Title: widget.switch3Title, + switch4Title: widget.switch4Title, + switch1Down: selectedSwitchName == 'scene_3' ? Assets.removeSceneIcon : Assets.addSwitchIcon, - switch1Up: selectedSwitchIndex == 1 + switch1Up: selectedSwitchName == 'scene_1' ? Assets.removeSceneIcon : Assets.addSwitchIcon, - switch2Down: selectedSwitchIndex == -2 + switch2Down: selectedSwitchName == 'scene_4' ? Assets.removeSceneIcon : Assets.addSwitchIcon, - switch2Up: selectedSwitchIndex == 2 + switch2Up: selectedSwitchName == 'scene_2' ? Assets.removeSceneIcon : Assets.addSwitchIcon, - onSwitch1UpTap: () { - setState(() => selectedSwitchIndex = 1); + setState(() => selectedSwitchName = 'scene_1'); }, onSwitch1DownTap: () { - setState(() => selectedSwitchIndex = -1); + setState(() => selectedSwitchName = 'scene_3'); }, onSwitch2UpTap: () { - setState(() => selectedSwitchIndex = 2); + setState(() => selectedSwitchName = 'scene_4'); }, onSwitch2DownTap: () { - setState(() => selectedSwitchIndex = -2); - + setState(() => selectedSwitchName = 'scene_2'); }, - ), ], ), @@ -118,14 +127,16 @@ class _FourSelectSwitchDialogState extends State { top: BorderSide(color: ColorsManager.textGray, width: 1.0), )), child: InkWell( - onTap: selectedSwitchIndex == 0 ? () {} : widget.confirmTab, + onTap: selectedSwitchName == '' + ? () {} + : () => widget.confirmTab!(selectedSwitchName), child: Padding( padding: EdgeInsets.all(15), child: Center( child: Text( 'Next', style: TextStyle( - color: selectedSwitchIndex == 0 + color: selectedSwitchName == '' ? ColorsManager.textPrimaryColor .withOpacity(0.6) : ColorsManager.primaryColor, diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart index 048a364..1c954e6 100644 --- a/lib/services/api/api_links_endpoints.dart +++ b/lib/services/api/api_links_endpoints.dart @@ -213,5 +213,8 @@ abstract class ApiEndpoints { '/device/report-logs/{deviceUuid}?code={code}&startTime={startTime}&endTime={endTime}'; static const String controlBatch = '/device/control/batch'; static const String statusBatch = '/device/status/batch'; - static const String getFourScene = '/device/four-scene/{deviceUuid}'; + static const String fourScene = '/device/{deviceUuid}/scenes'; + + static const String fourSceneByName = + '/device/{deviceUuid}/scenes?switchName={switchName}'; } diff --git a/lib/services/api/devices_api.dart b/lib/services/api/devices_api.dart index b439e87..f7d5409 100644 --- a/lib/services/api/devices_api.dart +++ b/lib/services/api/devices_api.dart @@ -140,7 +140,7 @@ class DevicesAPI { static Future getFourSceneInfo(String deviceId) async { final response = await _httpService.get( - path: ApiEndpoints.getFourScene.replaceAll('{deviceUuid}', deviceId), + path: ApiEndpoints.fourScene.replaceAll('{deviceUuid}', deviceId), showServerMessage: false, expectedResponseModel: (json) { return json; @@ -148,6 +148,42 @@ class DevicesAPI { return response; } + static Future getSceneBySwitchName( + {String? deviceId, String? switchName}) async { + final response = await _httpService.get( + path: ApiEndpoints.fourSceneByName + .replaceAll('{deviceUuid}', deviceId!) + .replaceAll('{switchName}', switchName!), + showServerMessage: false, + expectedResponseModel: (json) { + return json; + }); + return response; + } + + static Future postFourSceneInfo({ + String? switchName, + String? sceneUuid, + String? deviceId, + String? spaceUuid, + }) async { + final response = await _httpService.post( + path: ApiEndpoints.fourScene.replaceAll('{deviceUuid}', deviceId!), + body: jsonEncode( + { + "switchName": switchName, + "sceneUuid": sceneUuid, + "spaceUuid": spaceUuid + }, + ), + showServerMessage: false, + expectedResponseModel: (json) { + print('postFourSceneInfo=$json'); + return json; + }); + return response; + } + static Future getDeviceInfo(String deviceId) async { final response = await _httpService.get( path: ApiEndpoints.deviceByUuid.replaceAll('{deviceUuid}', deviceId),