national_day_theme
haroon amjad 1 week ago
parent 47cce803c5
commit 89393c9b21

5
.gitignore vendored

@ -43,3 +43,8 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release
/ios/
/ios/Penguin.xcframework/
/ios/PenguinINRenderer.xcframework/
/ios/PenNavUI.xcframework/

@ -11,13 +11,34 @@
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
478CFA942E638C8E0064F3D7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 478CFA932E638C8E0064F3D7 /* GoogleService-Info.plist */; };
5D5A1F80D389375644C4D0DC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56E413AB2A2E9765749CACD1 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
7676C293308F37EA004CF793 /* PenguinViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C291308F37EA004CF793 /* PenguinViewFactory.swift */; };
7676C294308F37EA004CF793 /* PenguinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C290308F37EA004CF793 /* PenguinView.swift */; };
7676C295308F37EA004CF793 /* PenguinModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C28D308F37EA004CF793 /* PenguinModel.swift */; };
7676C296308F37EA004CF793 /* PenguinNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C28E308F37EA004CF793 /* PenguinNavigator.swift */; };
7676C297308F37EA004CF793 /* PenguinPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C28F308F37EA004CF793 /* PenguinPlugin.swift */; };
7676C2A9308F394F004CF793 /* HMGPenguinInPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A4308F394F004CF793 /* HMGPenguinInPlatformBridge.swift */; };
7676C2AA308F394F004CF793 /* HMG_Geofence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A3308F394F004CF793 /* HMG_Geofence.swift */; };
7676C2AB308F394F004CF793 /* LocalizedFromFlutter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A6308F394F004CF793 /* LocalizedFromFlutter.swift */; };
7676C2AC308F394F004CF793 /* GlobalHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A2308F394F004CF793 /* GlobalHelper.swift */; };
7676C2AD308F394F004CF793 /* HMGPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A5308F394F004CF793 /* HMGPlatformBridge.swift */; };
7676C2AE308F394F004CF793 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C29E308F394F004CF793 /* API.swift */; };
7676C2AF308F394F004CF793 /* FlutterConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A0308F394F004CF793 /* FlutterConstants.swift */; };
7676C2B0308F394F004CF793 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C29F308F394F004CF793 /* Extensions.swift */; };
7676C2B1308F394F004CF793 /* GeoZoneModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A1308F394F004CF793 /* GeoZoneModel.swift */; };
7676C2B2308F394F004CF793 /* OpenTokPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7676C2A7308F394F004CF793 /* OpenTokPlatformBridge.swift */; };
7676C2C5308F3D02004CF793 /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2BF308F3C52004CF793 /* Penguin.xcframework */; };
7676C2C6308F3D02004CF793 /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2BF308F3C52004CF793 /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
7676C2C7308F3D03004CF793 /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2C0308F3C52004CF793 /* PenguinINRenderer.xcframework */; };
7676C2C8308F3D03004CF793 /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2C0308F3C52004CF793 /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
7676C2C9308F3D04004CF793 /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2C1308F3C52004CF793 /* PenNavUI.xcframework */; };
7676C2CA308F3D04004CF793 /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7676C2C1308F3C52004CF793 /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
76AA18AE2F3B2A4D00DC8DFC /* ring_30Sec.caf in Resources */ = {isa = PBXBuildFile; fileRef = 76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */; };
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; };
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 */; };
E770DD0A01C1858ADA957540 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09A5B486A6530B3BB024E598 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -37,6 +58,9 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
7676C2C8308F3D03004CF793 /* PenguinINRenderer.xcframework in Embed Frameworks */,
7676C2C6308F3D02004CF793 /* Penguin.xcframework in Embed Frameworks */,
7676C2CA308F3D04004CF793 /* PenNavUI.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@ -54,23 +78,43 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
09A5B486A6530B3BB024E598 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
21DDD86357889D25E534D20D /* 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 = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
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 = "<group>"; };
478CFA932E638C8E0064F3D7 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
478CFA952E6E20A60064F3D7 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
56E413AB2A2E9765749CACD1 /* 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 = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7676C28D308F37EA004CF793 /* PenguinModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinModel.swift; sourceTree = "<group>"; };
7676C28E308F37EA004CF793 /* PenguinNavigator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinNavigator.swift; sourceTree = "<group>"; };
7676C28F308F37EA004CF793 /* PenguinPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinPlugin.swift; sourceTree = "<group>"; };
7676C290308F37EA004CF793 /* PenguinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinView.swift; sourceTree = "<group>"; };
7676C291308F37EA004CF793 /* PenguinViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinViewFactory.swift; sourceTree = "<group>"; };
7676C29E308F394F004CF793 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = "<group>"; };
7676C29F308F394F004CF793 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
7676C2A0308F394F004CF793 /* FlutterConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlutterConstants.swift; sourceTree = "<group>"; };
7676C2A1308F394F004CF793 /* GeoZoneModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoZoneModel.swift; sourceTree = "<group>"; };
7676C2A2308F394F004CF793 /* GlobalHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalHelper.swift; sourceTree = "<group>"; };
7676C2A3308F394F004CF793 /* HMG_Geofence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMG_Geofence.swift; sourceTree = "<group>"; };
7676C2A4308F394F004CF793 /* HMGPenguinInPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPenguinInPlatformBridge.swift; sourceTree = "<group>"; };
7676C2A5308F394F004CF793 /* HMGPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPlatformBridge.swift; sourceTree = "<group>"; };
7676C2A6308F394F004CF793 /* LocalizedFromFlutter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedFromFlutter.swift; sourceTree = "<group>"; };
7676C2A7308F394F004CF793 /* OpenTokPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokPlatformBridge.swift; sourceTree = "<group>"; };
7676C2BF308F3C52004CF793 /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Penguin.xcframework; sourceTree = "<group>"; };
7676C2C0308F3C52004CF793 /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenguinINRenderer.xcframework; sourceTree = "<group>"; };
7676C2C1308F3C52004CF793 /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenNavUI.xcframework; sourceTree = "<group>"; };
769C9BF82E6F106D009F68A9 /* RunnerDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerDebug.entitlements; sourceTree = "<group>"; };
76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ring_30Sec.caf; sourceTree = "<group>"; };
76B714CF300E58B1004DE37A /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
76B714D1300E58B1004DE37A /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7E7114E2A230EE71FB6D6D7C /* 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 = "<group>"; };
9616FEAD6BEF8328D85974DF /* 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 = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -78,9 +122,6 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BCE5BC40273DCC009E2FACB7 /* 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 = "<group>"; };
C6416282AC56269448D7DA99 /* 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 = "<group>"; };
C6FD350374F47AFA34911C58 /* 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 = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -88,10 +129,12 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7676C2C5308F3D02004CF793 /* Penguin.xcframework in Frameworks */,
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */,
5D5A1F80D389375644C4D0DC /* Pods_Runner.framework in Frameworks */,
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */,
37D27FAF2C38AC83B852680C /* Pods_Runner.framework in Frameworks */,
7676C2C7308F3D03004CF793 /* PenguinINRenderer.xcframework in Frameworks */,
E770DD0A01C1858ADA957540 /* Pods_Runner.framework in Frameworks */,
7676C2C9308F3D04004CF793 /* PenNavUI.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -113,30 +156,54 @@
path = Helper;
sourceTree = "<group>";
};
61243B472EC5FA3700D46FA0 /* Penguin */ = {
766D8CB22EC60BE600D05E07 /* Frameworks */ = {
isa = PBXGroup;
children = (
7676C2BF308F3C52004CF793 /* Penguin.xcframework */,
7676C2C0308F3C52004CF793 /* PenguinINRenderer.xcframework */,
7676C2C1308F3C52004CF793 /* PenNavUI.xcframework */,
76B714CF300E58B1004DE37A /* WidgetKit.framework */,
76B714D1300E58B1004DE37A /* SwiftUI.framework */,
09A5B486A6530B3BB024E598 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
7676C292308F37EA004CF793 /* Penguin */ = {
isa = PBXGroup;
children = (
7676C28D308F37EA004CF793 /* PenguinModel.swift */,
7676C28E308F37EA004CF793 /* PenguinNavigator.swift */,
7676C28F308F37EA004CF793 /* PenguinPlugin.swift */,
7676C290308F37EA004CF793 /* PenguinView.swift */,
7676C291308F37EA004CF793 /* PenguinViewFactory.swift */,
);
path = Penguin;
sourceTree = "<group>";
};
766D8CB22EC60BE600D05E07 /* Frameworks */ = {
7676C2A8308F394F004CF793 /* Helper */ = {
isa = PBXGroup;
children = (
76B714CF300E58B1004DE37A /* WidgetKit.framework */,
76B714D1300E58B1004DE37A /* SwiftUI.framework */,
56E413AB2A2E9765749CACD1 /* Pods_Runner.framework */,
A83C76CFF9D3F92EDE3B22B4 /* Pods_Runner.framework */,
7676C29E308F394F004CF793 /* API.swift */,
7676C29F308F394F004CF793 /* Extensions.swift */,
7676C2A0308F394F004CF793 /* FlutterConstants.swift */,
7676C2A1308F394F004CF793 /* GeoZoneModel.swift */,
7676C2A2308F394F004CF793 /* GlobalHelper.swift */,
7676C2A3308F394F004CF793 /* HMG_Geofence.swift */,
7676C2A4308F394F004CF793 /* HMGPenguinInPlatformBridge.swift */,
7676C2A5308F394F004CF793 /* HMGPlatformBridge.swift */,
7676C2A6308F394F004CF793 /* LocalizedFromFlutter.swift */,
7676C2A7308F394F004CF793 /* OpenTokPlatformBridge.swift */,
);
name = Frameworks;
path = Helper;
sourceTree = "<group>";
};
79DD2093A1D9674C94359FC8 /* Pods */ = {
isa = PBXGroup;
children = (
BCE5BC40273DCC009E2FACB7 /* Pods-Runner.debug.xcconfig */,
C6416282AC56269448D7DA99 /* Pods-Runner.release.xcconfig */,
C6FD350374F47AFA34911C58 /* Pods-Runner.profile.xcconfig */,
21DDD86357889D25E534D20D /* Pods-Runner.debug.xcconfig */,
9616FEAD6BEF8328D85974DF /* Pods-Runner.release.xcconfig */,
7E7114E2A230EE71FB6D6D7C /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@ -177,6 +244,8 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
7676C2A8308F394F004CF793 /* Helper */,
7676C292308F37EA004CF793 /* Penguin */,
76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */,
61243B412EC5FA3700D46FA0 /* Helper */,
769C9BF82E6F106D009F68A9 /* RunnerDebug.entitlements */,
@ -218,7 +287,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
511FFA76807DE636962DBF91 /* [CP] Check Pods Manifest.lock */,
E08B80DF84B0E0D872D7D950 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
@ -226,8 +295,8 @@
765A5A922F35CD8B0003FF7D /* Embed Frameworks */,
76B714E4300E58B2004DE37A /* Embed Foundation Extensions */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
C7E5B2C65EE0A4D64ECC826B /* [CP] Embed Pods Frameworks */,
DF2C78ED8C8F648520DF8C43 /* [CP] Copy Pods Resources */,
CD8EB7D84DD1FEE84642007B /* [CP] Embed Pods Frameworks */,
592872084F2202E73671D38F /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -324,27 +393,21 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n";
};
511FFA76807DE636962DBF91 /* [CP] Check Pods Manifest.lock */ = {
592872084F2202E73671D38F /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
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";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
@ -362,7 +425,7 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
C7E5B2C65EE0A4D64ECC826B /* [CP] Embed Pods Frameworks */ = {
CD8EB7D84DD1FEE84642007B /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -379,21 +442,26 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
DF2C78ED8C8F648520DF8C43 /* [CP] Copy Pods Resources */ = {
E08B80DF84B0E0D872D7D950 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
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 */
@ -413,6 +481,21 @@
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
7676C293308F37EA004CF793 /* PenguinViewFactory.swift in Sources */,
7676C294308F37EA004CF793 /* PenguinView.swift in Sources */,
7676C295308F37EA004CF793 /* PenguinModel.swift in Sources */,
7676C296308F37EA004CF793 /* PenguinNavigator.swift in Sources */,
7676C2A9308F394F004CF793 /* HMGPenguinInPlatformBridge.swift in Sources */,
7676C2AA308F394F004CF793 /* HMG_Geofence.swift in Sources */,
7676C2AB308F394F004CF793 /* LocalizedFromFlutter.swift in Sources */,
7676C2AC308F394F004CF793 /* GlobalHelper.swift in Sources */,
7676C2AD308F394F004CF793 /* HMGPlatformBridge.swift in Sources */,
7676C2AE308F394F004CF793 /* API.swift in Sources */,
7676C2AF308F394F004CF793 /* FlutterConstants.swift in Sources */,
7676C2B0308F394F004CF793 /* Extensions.swift in Sources */,
7676C2B1308F394F004CF793 /* GeoZoneModel.swift in Sources */,
7676C2B2308F394F004CF793 /* OpenTokPlatformBridge.swift in Sources */,
7676C297308F37EA004CF793 /* PenguinPlugin.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

@ -26,33 +26,33 @@ import GoogleMaps
}
func initializePlatformChannels(){
// DispatchQueue.main.async { [weak self] in
// guard let self = self else { return }
//
// // 1. Try accessing window via AppDelegate (legacy/single-window setup)
// var controller = self.window?.rootViewController as? FlutterViewController
//
// // 2. Fallback to UIWindowScene active window (modern iOS architecture)
// if controller == nil {
// controller = UIApplication.shared.connectedScenes
// .compactMap { $0 as? UIWindowScene }
// .flatMap { $0.windows }
// .first(where: { $0.isKeyWindow })?
// .rootViewController as? FlutterViewController
// }
//
// // 3. Perform initialization once FlutterViewController is available
// if let mainViewController = controller {
// HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
// } else {
// print("⚠️ FlutterViewController not ready yet for initializePlatformChannels.")
// }
// }
// if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground
// HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
// }
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
// 1. Try accessing window via AppDelegate (legacy/single-window setup)
var controller = self.window?.rootViewController as? FlutterViewController
// 2. Fallback to UIWindowScene active window (modern iOS architecture)
if controller == nil {
controller = UIApplication.shared.connectedScenes
.compactMap { $0 as? UIWindowScene }
.flatMap { $0.windows }
.first(where: { $0.isKeyWindow })?
.rootViewController as? FlutterViewController
}
// 3. Perform initialization once FlutterViewController is available
if let mainViewController = controller {
HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
} else {
print("⚠️ FlutterViewController not ready yet for initializePlatformChannels.")
}
}
if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground
HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController)
}
}

@ -5,32 +5,32 @@
// Created by ZiKambrani on 22/12/2020.
//
import UIKit
class FlutterConstants{
static var LOG_GEOFENCE_URL:String?
static var WIFI_CREDENTIALS_URL:String?
static var DEFAULT_HTTP_PARAMS:[String:Any?]?
class func set(){
// (FiX) Take a start with FlutterMethodChannel (kikstart)
/* First call to flutter method is not returning the correct value (Always returning 'NSObject') then after it wroking fine and returning correct value*/
FlutterText.with(key: "test") { (test) in
flutterMethodChannel?.invokeMethod("getDefaultHttpParameters", arguments: nil){ (response) in
if let defaultHTTPParams = response as? [String:Any?]{
DEFAULT_HTTP_PARAMS = defaultHTTPParams
}
}
flutterMethodChannel?.invokeMethod("getLogGeofenceFullUrl", arguments:nil){ (response) in
if let url = response as? String{
LOG_GEOFENCE_URL = url
}
}
}
}
}
//import UIKit
//
//class FlutterConstants{
// static var LOG_GEOFENCE_URL:String?
// static var WIFI_CREDENTIALS_URL:String?
// static var DEFAULT_HTTP_PARAMS:[String:Any?]?
//
// class func set(){
//
// // (FiX) Take a start with FlutterMethodChannel (kikstart)
// /* First call to flutter method is not returning the correct value (Always returning 'NSObject') then after it wroking fine and returning correct value*/
// FlutterText.with(key: "test") { (test) in
//
// flutterMethodChannel?.invokeMethod("getDefaultHttpParameters", arguments: nil){ (response) in
// if let defaultHTTPParams = response as? [String:Any?]{
// DEFAULT_HTTP_PARAMS = defaultHTTPParams
// }
//
// }
//
// flutterMethodChannel?.invokeMethod("getLogGeofenceFullUrl", arguments:nil){ (response) in
// if let url = response as? String{
// LOG_GEOFENCE_URL = url
// }
// }
//
// }
// }
//}

@ -5,136 +5,136 @@
// Created by ZiKambrani on 14/12/2020.
//
import UIKit
import NetworkExtension
import SystemConfiguration.CaptiveNetwork
var flutterMethodChannel:FlutterMethodChannel? = nil
fileprivate var mainViewController:MainFlutterVC!
class HMGPlatformBridge{
private let channelName = "HMG-Platform-Bridge"
private static var shared_:HMGPlatformBridge?
class func initialize(flutterViewController:MainFlutterVC){
shared_ = HMGPlatformBridge()
mainViewController = flutterViewController
shared_?.openChannel()
}
func shared() -> HMGPlatformBridge{
assert((HMGPlatformBridge.shared_ != nil), "HMGPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
return HMGPlatformBridge.shared_!
}
private func openChannel(){
flutterMethodChannel = FlutterMethodChannel(name: channelName, binaryMessenger: mainViewController.binaryMessenger)
flutterMethodChannel?.setMethodCallHandler { (methodCall, result) in
print("Called function \(methodCall.method)")
if methodCall.method == "connectHMGInternetWifi"{
self.connectHMGInternetWifi(methodCall:methodCall, result: result)
}else if methodCall.method == "connectHMGGuestWifi"{
self.connectHMGGuestWifi(methodCall:methodCall, result: result)
}else if methodCall.method == "isHMGNetworkAvailable"{
self.isHMGNetworkAvailable(methodCall:methodCall, result: result)
}else if methodCall.method == "registerHmgGeofences"{
self.registerHmgGeofences(result: result)
}else if methodCall.method == "unRegisterHmgGeofences"{
self.unRegisterHmgGeofences(result: result)
}
print("")
}
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: false) { (timer) in
FlutterConstants.set()
}
}
// Connect HMG Wifi and Internet
func connectHMGInternetWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){
guard let pateintId = (methodCall.arguments as? [Any])?.first as? String
else { return assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'") }
HMG_Internet.shared.connect(patientId: pateintId) { (status, message) in
result(status ? 1 : 0)
if status{
self.showMessage(title:"Congratulations", message:message)
}else{
self.showMessage(title:"Ooops,", message:message)
}
}
}
// Connect HMG-Guest for App Access
func connectHMGGuestWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){
HMG_GUEST.shared.connect() { (status, message) in
result(status ? 1 : 0)
if status{
self.showMessage(title:"Congratulations", message:message)
}else{
self.showMessage(title:"Ooops,", message:message)
}
}
}
func isHMGNetworkAvailable(methodCall:FlutterMethodCall ,result: @escaping FlutterResult) -> Bool{
guard let ssid = methodCall.arguments as? String else {
assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'")
return false
}
let queue = DispatchQueue.init(label: "com.hmg.wifilist")
NEHotspotHelper.register(options: nil, queue: queue) { (command) in
print(command)
if(command.commandType == NEHotspotHelperCommandType.filterScanList) {
if let networkList = command.networkList{
for network in networkList{
print(network.ssid)
}
}
}
}
return false
}
// Message Dailog
func showMessage(title:String, message:String){
DispatchQueue.main.async {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert )
alert.addAction(UIAlertAction(title: "OK", style: .destructive, handler: nil))
mainViewController.present(alert, animated: true) {
}
}
}
// Register Geofence
func registerHmgGeofences(result: @escaping FlutterResult){
flutterMethodChannel?.invokeMethod("getGeoZones", arguments: nil){ geoFencesJsonString in
if let jsonString = geoFencesJsonString as? String{
let allZones = GeoZoneModel.list(from: jsonString)
HMG_Geofence.shared().register(geoZones: allZones)
result(true)
}else{
}
}
}
// Register Geofence
func unRegisterHmgGeofences(result: @escaping FlutterResult){
HMG_Geofence.shared().unRegisterAll()
result(true)
}
}
//import UIKit
//import NetworkExtension
//import SystemConfiguration.CaptiveNetwork
//
//var flutterMethodChannel:FlutterMethodChannel? = nil
//fileprivate var mainViewController:MainFlutterVC!
//
//class HMGPlatformBridge{
// private let channelName = "HMG-Platform-Bridge"
// private static var shared_:HMGPlatformBridge?
//
// class func initialize(flutterViewController:MainFlutterVC){
// shared_ = HMGPlatformBridge()
// mainViewController = flutterViewController
// shared_?.openChannel()
// }
//
// func shared() -> HMGPlatformBridge{
// assert((HMGPlatformBridge.shared_ != nil), "HMGPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
// return HMGPlatformBridge.shared_!
// }
//
// private func openChannel(){
// flutterMethodChannel = FlutterMethodChannel(name: channelName, binaryMessenger: mainViewController.binaryMessenger)
// flutterMethodChannel?.setMethodCallHandler { (methodCall, result) in
// print("Called function \(methodCall.method)")
// if methodCall.method == "connectHMGInternetWifi"{
// self.connectHMGInternetWifi(methodCall:methodCall, result: result)
//
// }else if methodCall.method == "connectHMGGuestWifi"{
// self.connectHMGGuestWifi(methodCall:methodCall, result: result)
//
// }else if methodCall.method == "isHMGNetworkAvailable"{
// self.isHMGNetworkAvailable(methodCall:methodCall, result: result)
//
// }else if methodCall.method == "registerHmgGeofences"{
// self.registerHmgGeofences(result: result)
//
// }else if methodCall.method == "unRegisterHmgGeofences"{
// self.unRegisterHmgGeofences(result: result)
// }
//
// print("")
// }
// Timer.scheduledTimer(withTimeInterval: 0.1, repeats: false) { (timer) in
// FlutterConstants.set()
// }
// }
//
//
//
// // Connect HMG Wifi and Internet
// func connectHMGInternetWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){
//
// guard let pateintId = (methodCall.arguments as? [Any])?.first as? String
// else { return assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'") }
//
//
// HMG_Internet.shared.connect(patientId: pateintId) { (status, message) in
// result(status ? 1 : 0)
// if status{
// self.showMessage(title:"Congratulations", message:message)
// }else{
// self.showMessage(title:"Ooops,", message:message)
// }
// }
// }
//
// // Connect HMG-Guest for App Access
// func connectHMGGuestWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){
// HMG_GUEST.shared.connect() { (status, message) in
// result(status ? 1 : 0)
// if status{
// self.showMessage(title:"Congratulations", message:message)
// }else{
// self.showMessage(title:"Ooops,", message:message)
// }
// }
// }
//
// func isHMGNetworkAvailable(methodCall:FlutterMethodCall ,result: @escaping FlutterResult) -> Bool{
// guard let ssid = methodCall.arguments as? String else {
// assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'")
// return false
// }
//
// let queue = DispatchQueue.init(label: "com.hmg.wifilist")
// NEHotspotHelper.register(options: nil, queue: queue) { (command) in
// print(command)
//
// if(command.commandType == NEHotspotHelperCommandType.filterScanList) {
// if let networkList = command.networkList{
// for network in networkList{
// print(network.ssid)
// }
// }
// }
// }
// return false
//
// }
//
//
// // Message Dailog
// func showMessage(title:String, message:String){
// DispatchQueue.main.async {
// let alert = UIAlertController(title: title, message: message, preferredStyle: .alert )
// alert.addAction(UIAlertAction(title: "OK", style: .destructive, handler: nil))
// mainViewController.present(alert, animated: true) {
//
// }
// }
// }
//
// // Register Geofence
// func registerHmgGeofences(result: @escaping FlutterResult){
// flutterMethodChannel?.invokeMethod("getGeoZones", arguments: nil){ geoFencesJsonString in
// if let jsonString = geoFencesJsonString as? String{
// let allZones = GeoZoneModel.list(from: jsonString)
// HMG_Geofence.shared().register(geoZones: allZones)
// result(true)
// }else{
// }
// }
// }
//
// // Register Geofence
// func unRegisterHmgGeofences(result: @escaping FlutterResult){
// HMG_Geofence.shared().unRegisterAll()
// result(true)
// }
//
//}

@ -9,14 +9,14 @@ import UIKit
class FlutterText{
class func with(key:String,completion: @escaping (String)->Void){
flutterMethodChannel?.invokeMethod("localizedValue", arguments: key, result: { (result) in
if let localized = result as? String{
completion(localized)
}else{
completion(key)
}
})
}
// class func with(key:String,completion: @escaping (String)->Void){
// flutterMethodChannel?.invokeMethod("localizedValue", arguments: key, result: { (result) in
// if let localized = result as? String{
// completion(localized)
// }else{
// completion(key)
// }
// })
// }
}

@ -5,57 +5,57 @@
// Created by ZiKambrani on 14/12/2020.
//
import UIKit
import NetworkExtension
import SystemConfiguration.CaptiveNetwork
fileprivate var openTok:OpenTok?
class OpenTokPlatformBridge : NSObject{
private var methodChannel:FlutterMethodChannel? = nil
private var mainViewController:MainFlutterVC!
private static var shared_:OpenTokPlatformBridge?
class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
shared_ = OpenTokPlatformBridge()
shared_?.mainViewController = flutterViewController
shared_?.openChannel()
openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
}
func shared() -> OpenTokPlatformBridge{
assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
return OpenTokPlatformBridge.shared_!
}
private func openChannel(){
methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
methodChannel?.setMethodCallHandler { (call, result) in
print("Called function \(call.method)")
switch(call.method) {
case "initSession":
openTok?.initSession(call: call, result: result)
case "swapCamera":
openTok?.swapCamera(call: call, result: result)
case "toggleAudio":
openTok?.toggleAudio(call: call, result: result)
case "toggleVideo":
openTok?.toggleVideo(call: call, result: result)
case "hangupCall":
openTok?.hangupCall(call: call, result: result)
default:
result(FlutterMethodNotImplemented)
}
print("")
}
}
}
//import UIKit
//import NetworkExtension
//import SystemConfiguration.CaptiveNetwork
//
//
//fileprivate var openTok:OpenTok?
//
//class OpenTokPlatformBridge : NSObject{
// private var methodChannel:FlutterMethodChannel? = nil
// private var mainViewController:MainFlutterVC!
// private static var shared_:OpenTokPlatformBridge?
//
// class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
// shared_ = OpenTokPlatformBridge()
// shared_?.mainViewController = flutterViewController
//
// shared_?.openChannel()
// openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
// }
//
// func shared() -> OpenTokPlatformBridge{
// assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
// return OpenTokPlatformBridge.shared_!
// }
//
// private func openChannel(){
// methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
// methodChannel?.setMethodCallHandler { (call, result) in
// print("Called function \(call.method)")
//
// switch(call.method) {
// case "initSession":
// openTok?.initSession(call: call, result: result)
//
// case "swapCamera":
// openTok?.swapCamera(call: call, result: result)
//
// case "toggleAudio":
// openTok?.toggleAudio(call: call, result: result)
//
// case "toggleVideo":
// openTok?.toggleVideo(call: call, result: result)
//
// case "hangupCall":
// openTok?.hangupCall(call: call, result: result)
//
// default:
// result(FlutterMethodNotImplemented)
// }
//
// print("")
// }
// }
//}

@ -2,27 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>UIWindowScene</string>
<key>UISceneDelegateClassName</key>
<string>FlutterSceneDelegate</string>
<key>UISceneConfigurationName</key>
<string>flutter</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

Loading…
Cancel
Save