Commit 399925c8 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

Merge remote-tracking branch 'origin/main'

# Conflicts:
#	lib/Screens/AuthScreen/LoginScreen.dart
parents ee05ae8b 166fed3d
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gen_services",
"request": "launch",
"type": "dart"
},
{
"name": "gen_services (profile mode)",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "gen_services (release mode)",
"request": "launch",
"type": "dart",
"flutterMode": "release"
}
]
}
\ No newline at end of file
...@@ -21,6 +21,6 @@ ...@@ -21,6 +21,6 @@
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0</string> <string>1.0</string>
<key>MinimumOSVersion</key> <key>MinimumOSVersion</key>
<string>12.0</string> <string>13.0</string>
</dict> </dict>
</plist> </plist>
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"
# Uncomment this line to define a global platform for your project
platform :ios, '15.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
PODS:
- connectivity_plus (0.0.1):
- Flutter
- device_info_plus (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_inappwebview_ios (0.0.1):
- Flutter
- flutter_inappwebview_ios/Core (= 0.0.1)
- OrderedSet (~> 5.0.0)
- flutter_inappwebview_ios/Core (0.0.1):
- Flutter
- OrderedSet (~> 5.0.0)
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_pdfview (1.0.2):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- geocoding_ios (1.0.5):
- Flutter
- geolocator_apple (1.2.0):
- Flutter
- FlutterMacOS
- Google-Maps-iOS-Utils (6.1.0):
- GoogleMaps (~> 9.0)
- google_maps_flutter_ios (0.0.1):
- Flutter
- Google-Maps-iOS-Utils (< 7.0, >= 5.0)
- GoogleMaps (< 10.0, >= 8.4)
- GoogleMaps (9.4.0):
- GoogleMaps/Maps (= 9.4.0)
- GoogleMaps/Maps (9.4.0)
- location (0.0.1):
- Flutter
- open_filex (0.0.2):
- Flutter
- OrderedSet (5.0.0)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- razorpay-core-pod (1.0.1)
- razorpay-pod (1.5.0):
- razorpay-core-pod
- razorpay_flutter (1.1.10):
- Flutter
- razorpay-pod
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- syncfusion_flutter_pdfviewer (0.0.1):
- Flutter
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- Flutter (from `Flutter`)
- flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_pdfview (from `.symlinks/plugins/flutter_pdfview/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- geocoding_ios (from `.symlinks/plugins/geocoding_ios/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- location (from `.symlinks/plugins/location/ios`)
- open_filex (from `.symlinks/plugins/open_filex/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- razorpay_flutter (from `.symlinks/plugins/razorpay_flutter/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- syncfusion_flutter_pdfviewer (from `.symlinks/plugins/syncfusion_flutter_pdfviewer/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- Google-Maps-iOS-Utils
- GoogleMaps
- OrderedSet
- razorpay-core-pod
- razorpay-pod
EXTERNAL SOURCES:
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
Flutter:
:path: Flutter
flutter_inappwebview_ios:
:path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_pdfview:
:path: ".symlinks/plugins/flutter_pdfview/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
geocoding_ios:
:path: ".symlinks/plugins/geocoding_ios/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/darwin"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
location:
:path: ".symlinks/plugins/location/ios"
open_filex:
:path: ".symlinks/plugins/open_filex/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
razorpay_flutter:
:path: ".symlinks/plugins/razorpay_flutter/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
syncfusion_flutter_pdfviewer:
:path: ".symlinks/plugins/syncfusion_flutter_pdfviewer/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_inappwebview_ios: 8d8d2c6290a3c4787cad303603662fac9a788f75
flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f
flutter_pdfview: 2e4d13ffb774858562ffbdfdb61b40744b191adc
fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f
geocoding_ios: eafacae6ad11a1eb56681f7d11df602a5fd49416
geolocator_apple: 66b711889fd333205763b83c9dcf0a57a28c7afd
Google-Maps-iOS-Utils: 0a484b05ed21d88c9f9ebbacb007956edd508a96
google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3
GoogleMaps: 0608099d4870cac8754bdba9b6953db543432438
location: d5cf8598915965547c3f36761ae9cc4f4e87d22e
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
razorpay-core-pod: 42dadbbcef5a65abd02d7bac3e6bf76041934fdd
razorpay-pod: f634f1b8397eb54d547f25d35291f679545ddf17
razorpay_flutter: 84b3bfd206ae9c9c2a9ba585524a1b3d8102b6c1
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
syncfusion_flutter_pdfviewer: cfcf23c03816192575902e615fa50adc9f95b724
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
PODFILE CHECKSUM: 53a6aebc29ccee84c41f92f409fc20cd4ca011f1
COCOAPODS: 1.16.2
...@@ -10,10 +10,12 @@ ...@@ -10,10 +10,12 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
47ED2C95F03C18A8823804C1 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA3C70AC9614A88C2DE28A88 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
CABCF338FF451E3585D448C9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABEFC3EBFF0B7650E4FAA097 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
...@@ -40,14 +42,17 @@ ...@@ -40,14 +42,17 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0E039C6163CE7D6C12729126 /* 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>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 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>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
32C3B06040D5A243739B7A4E /* 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 = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; 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; }; 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>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 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>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
8957A2CB7E0CE87635CFDC42 /* 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>"; }; 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>"; }; 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; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -55,13 +60,27 @@ ...@@ -55,13 +60,27 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
ABEFC3EBFF0B7650E4FAA097 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BA3C70AC9614A88C2DE28A88 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C950D4300517912BEC221804 /* 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 = "<group>"; };
D2D49739FC2D6DDBA4658914 /* 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>"; };
D97AD0AE38B67FAA1C6476DB /* 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 = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
5D146B3AB0F4C47F68190048 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
47ED2C95F03C18A8823804C1 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = { 97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
CABCF338FF451E3585D448C9 /* Pods_Runner.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -76,6 +95,15 @@ ...@@ -76,6 +95,15 @@
path = RunnerTests; path = RunnerTests;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
3779F469BBABB51AE865A249 /* Frameworks */ = {
isa = PBXGroup;
children = (
ABEFC3EBFF0B7650E4FAA097 /* Pods_Runner.framework */,
BA3C70AC9614A88C2DE28A88 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = { 9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -94,6 +122,8 @@ ...@@ -94,6 +122,8 @@
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */, 331C8082294A63A400263BE5 /* RunnerTests */,
97FA775E5B3B3F7A0F5261EC /* Pods */,
3779F469BBABB51AE865A249 /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
...@@ -121,6 +151,19 @@ ...@@ -121,6 +151,19 @@
path = Runner; path = Runner;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
97FA775E5B3B3F7A0F5261EC /* Pods */ = {
isa = PBXGroup;
children = (
0E039C6163CE7D6C12729126 /* Pods-Runner.debug.xcconfig */,
8957A2CB7E0CE87635CFDC42 /* Pods-Runner.release.xcconfig */,
D2D49739FC2D6DDBA4658914 /* Pods-Runner.profile.xcconfig */,
D97AD0AE38B67FAA1C6476DB /* Pods-RunnerTests.debug.xcconfig */,
32C3B06040D5A243739B7A4E /* Pods-RunnerTests.release.xcconfig */,
C950D4300517912BEC221804 /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
...@@ -128,8 +171,10 @@ ...@@ -128,8 +171,10 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = ( buildPhases = (
D4813F842AD7CFE97AB661B3 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */, 331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */, 331C807F294A63A400263BE5 /* Resources */,
5D146B3AB0F4C47F68190048 /* Frameworks */,
); );
buildRules = ( buildRules = (
); );
...@@ -145,12 +190,15 @@ ...@@ -145,12 +190,15 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
D78FEB7382DD0BA2196F05F3 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
78D12A815D3B0D2AA035174F /* [CP] Embed Pods Frameworks */,
4B86921D761924C5FA2593A4 /* [CP] Copy Pods Resources */,
); );
buildRules = ( buildRules = (
); );
...@@ -238,6 +286,40 @@ ...@@ -238,6 +286,40 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
}; };
4B86921D761924C5FA2593A4 /* [CP] Copy Pods Resources */ = {
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";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
78D12A815D3B0D2AA035174F /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1; alwaysOutOfDate = 1;
...@@ -253,6 +335,50 @@ ...@@ -253,6 +335,50 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
}; };
D4813F842AD7CFE97AB661B3 /* [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-RunnerTests-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;
};
D78FEB7382DD0BA2196F05F3 /* [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 */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
...@@ -346,7 +472,7 @@ ...@@ -346,7 +472,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
...@@ -361,23 +487,31 @@ ...@@ -361,23 +487,31 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = 72BV93K9AR;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.genService; PRODUCT_BUNDLE_IDENTIFIER = in.webgrid.genservices;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Profile; name = Profile;
}; };
331C8088294A63A400263BE5 /* Debug */ = { 331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = D97AD0AE38B67FAA1C6476DB /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
...@@ -395,6 +529,7 @@ ...@@ -395,6 +529,7 @@
}; };
331C8089294A63A400263BE5 /* Release */ = { 331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 32C3B06040D5A243739B7A4E /* Pods-RunnerTests.release.xcconfig */;
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
...@@ -410,6 +545,7 @@ ...@@ -410,6 +545,7 @@
}; };
331C808A294A63A400263BE5 /* Profile */ = { 331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = C950D4300517912BEC221804 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
...@@ -472,7 +608,7 @@ ...@@ -472,7 +608,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
...@@ -523,7 +659,7 @@ ...@@ -523,7 +659,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
...@@ -540,18 +676,25 @@ ...@@ -540,18 +676,25 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = 72BV93K9AR;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.genService; PRODUCT_BUNDLE_IDENTIFIER = in.webgrid.genservices;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Debug; name = Debug;
...@@ -562,17 +705,24 @@ ...@@ -562,17 +705,24 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = 72BV93K9AR;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.example.genService; PRODUCT_BUNDLE_IDENTIFIER = in.webgrid.genservices;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Release; name = Release;
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
buildConfiguration = "Debug" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES"> shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion> <MacroExpansion>
<BuildableReference <BuildableReference
...@@ -51,9 +52,10 @@ ...@@ -51,9 +52,10 @@
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Debug" buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0" launchStyle = "0"
useCustomWorkingDirectory = "NO" useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO" ignoresPersistentStateOnLaunch = "NO"
......
...@@ -4,4 +4,7 @@ ...@@ -4,4 +4,7 @@
<FileRef <FileRef
location = "group:Runner.xcodeproj"> location = "group:Runner.xcodeproj">
</FileRef> </FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace> </Workspace>
import Flutter import Flutter
import UIKit import UIKit
import GoogleMaps
@main @main
@objc class AppDelegate: FlutterAppDelegate { @objc class AppDelegate: FlutterAppDelegate {
...@@ -7,6 +8,7 @@ import UIKit ...@@ -7,6 +8,7 @@ import UIKit
_ application: UIApplication, _ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool { ) -> Bool {
GMSServices.provideAPIKey("AIzaSyCA06NWEP5D-z8WpebENgd4mSOqV-uXIUE")
GeneratedPluginRegistrant.register(with: self) GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions) return super.application(application, didFinishLaunchingWithOptions: launchOptions)
} }
......
...@@ -2,10 +2,12 @@ ...@@ -2,10 +2,12 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Gen Service</string> <string>My Gen</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
...@@ -24,6 +26,16 @@ ...@@ -24,6 +26,16 @@
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs photo access to attach images to tickets</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs to access your location to show nearby service locations.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs to access location in background.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs to access your location to show nearby service locations.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <key>UIMainStoryboardFile</key>
...@@ -41,9 +53,5 @@ ...@@ -41,9 +53,5 @@
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict> </dict>
</plist> </plist>
...@@ -37,7 +37,6 @@ class MapProvider extends ChangeNotifier { ...@@ -37,7 +37,6 @@ class MapProvider extends ChangeNotifier {
Timer? _debounceTimer; Timer? _debounceTimer;
LatLng? _mapCenter; LatLng? _mapCenter;
GetInTouchListResponse? get response => _response; GetInTouchListResponse? get response => _response;
List<GetInTouchList> get locationsList => _locationsList; List<GetInTouchList> get locationsList => _locationsList;
String get googleAPIKey => _googleApikey; String get googleAPIKey => _googleApikey;
...@@ -53,8 +52,6 @@ class MapProvider extends ChangeNotifier { ...@@ -53,8 +52,6 @@ class MapProvider extends ChangeNotifier {
bool get isLoading => _isLoading; bool get isLoading => _isLoading;
Timer? get timer => _timer; Timer? get timer => _timer;
set markers(List<Marker> value) { set markers(List<Marker> value) {
_markers = value; _markers = value;
if (value.isNotEmpty) { if (value.isNotEmpty) {
...@@ -87,13 +84,16 @@ class MapProvider extends ChangeNotifier { ...@@ -87,13 +84,16 @@ class MapProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
Future<void> getLocationPermission(BuildContext context, empId, Future<void> getLocationPermission(
session,) async { BuildContext context,
empId,
session,
) async {
_isLocationEnabled = await Geolocator.isLocationServiceEnabled(); _isLocationEnabled = await Geolocator.isLocationServiceEnabled();
LocationPermission permission = await Geolocator.checkPermission(); LocationPermission permission = await Geolocator.checkPermission();
_hasLocationPermission = _hasLocationPermission =
permission == LocationPermission.always || permission == LocationPermission.always ||
permission == LocationPermission.whileInUse; permission == LocationPermission.whileInUse;
final Location.Location location = Location.Location(); final Location.Location location = Location.Location();
bool serviceEnabled; bool serviceEnabled;
...@@ -125,22 +125,24 @@ class MapProvider extends ChangeNotifier { ...@@ -125,22 +125,24 @@ class MapProvider extends ChangeNotifier {
_currentLocation!.longitude!, _currentLocation!.longitude!,
); );
_latlongs = _latlongs =
'${_currentLocation!.latitude},${_currentLocation!.longitude}'; '${_currentLocation!.latitude},${_currentLocation!.longitude}';
_mapController?.animateCamera(CameraUpdate.newLatLng(_mapCenter!)); _mapController?.animateCamera(CameraUpdate.newLatLng(_mapCenter!));
await nearbyServiceLocations(context, empId, await nearbyServiceLocations(context, empId, session);
session,);
} }
notifyListeners(); notifyListeners();
} }
void onCameraMove(BuildContext context, CameraPosition position, empId, void onCameraMove(
session) { BuildContext context,
CameraPosition position,
empId,
session,
) {
_timer?.cancel(); _timer?.cancel();
_mapCenter = position.target; _mapCenter = position.target;
_latlongs = '${_mapCenter!.latitude},${_mapCenter!.longitude}'; _latlongs = '${_mapCenter!.latitude},${_mapCenter!.longitude}';
_timer = Timer(Duration(seconds: 1), () { _timer = Timer(Duration(seconds: 1), () {
nearbyServiceLocations(context, empId, nearbyServiceLocations(context, empId, session);
session,);
}); });
notifyListeners(); notifyListeners();
} }
...@@ -150,30 +152,27 @@ class MapProvider extends ChangeNotifier { ...@@ -150,30 +152,27 @@ class MapProvider extends ChangeNotifier {
_debounceTimer = Timer(duration, callback); _debounceTimer = Timer(duration, callback);
} }
Future<void> nearbyServiceLocations( Future<void> nearbyServiceLocations(
BuildContext context, BuildContext context,
empId, empId,
session, session,
) async { ) async {
try { try {
final data = await ApiCalling.fetchGetInTouchListApi( final data = await ApiCalling.fetchGetInTouchListApi(empId, session);
empId,
session,
);
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_isLoading = false; _isLoading = false;
_response = data; _response = data;
_locationsList = data.getInTouchList ?? []; _locationsList = data.getInTouchList ?? [];
await updateMarkersFromApiResponse(context, data.getInTouchList??[]); await updateMarkersFromApiResponse(
context,
data.getInTouchList ?? [],
);
if (_locationsList.isEmpty) { if (_locationsList.isEmpty) {
// toast(context, 'No leads found within the selected radius.'); // toast(context, 'No leads found within the selected radius.');
} }
} } else {
else {
// toast(context, data.message ?? 'Failed to load leads.'); // toast(context, data.message ?? 'Failed to load leads.');
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
...@@ -192,67 +191,72 @@ class MapProvider extends ChangeNotifier { ...@@ -192,67 +191,72 @@ class MapProvider extends ChangeNotifier {
} }
Future<void> updateMarkersFromApiResponse( Future<void> updateMarkersFromApiResponse(
BuildContext context, BuildContext context,
List<GetInTouchList> locationsList, List<GetInTouchList> locationsList,
) async { ) async {
print("markers updating"); print("markers updating");
_markers = await createMarkersFromApiResponse(context, locationsList);
_addresses.clear(); try {
await Future.forEach(locationsList, (store) async { _markers = await createMarkersFromApiResponse(context, locationsList);
String address = await _getAddressFromLatLng(store.loc); _addresses.clear();
_addresses.add(address); await Future.forEach(locationsList, (store) async {
print(_addresses); String address = await _getAddressFromLatLng(store.loc);
}); _addresses.add(address);
});
} catch (e) {}
notifyListeners(); notifyListeners();
} }
Future<List<Marker>> createMarkersFromApiResponse( Future<List<Marker>> createMarkersFromApiResponse(
BuildContext context, BuildContext context,
List<GetInTouchList> locationsList, List<GetInTouchList> locationsList,
) async { ) async {
List<Marker> markers = []; List<Marker> markers = [];
ByteData data = await rootBundle.load("assets/images/maps_ic.png"); ByteData data = await rootBundle.load("assets/images/maps_ic.png");
Uint8List bytes = data.buffer.asUint8List(); Uint8List bytes = data.buffer.asUint8List();
await Future.forEach(locationsList, (leads) async { await Future.forEach(locationsList, (leads) async {
if (leads.loc == null || leads.id == null || leads.branchName == null) { try {
print( ui.Codec codec = await ui.instantiateImageCodec(bytes);
'Skipping invalid lead: id=${leads.id}, name=${leads.branchName}, loc=${leads.loc}', ui.FrameInfo fi = await codec.getNextFrame();
); Uint8List resizedBytes =
return; (await fi.image.toByteData(
} format: ui.ImageByteFormat.png,
))!.buffer.asUint8List();
ui.Codec codec = await ui.instantiateImageCodec(bytes); if (leads.loc != null) {
ui.FrameInfo fi = await codec.getNextFrame(); if (leads.loc!.isNotEmpty) {
Uint8List resizedBytes = markers.add(
(await fi.image.toByteData( Marker(
format: ui.ImageByteFormat.png, markerId: MarkerId(leads.id.toString()),
))!.buffer.asUint8List(); position: parseLatLng(leads.loc),
icon: BitmapDescriptor.fromBytes(resizedBytes),
infoWindow: InfoWindow(
title: leads.branchName ?? 'Unknown Lead',
snippet: leads.address ?? 'No address available',
markers.add( anchor: const Offset(0.5, 1.0),
Marker( ),
markerId: MarkerId(leads.id.toString()), zIndex: 100,
position: _parseLatLng(leads.loc), onTap: () {
icon: BitmapDescriptor.fromBytes(resizedBytes), _mapController?.showMarkerInfoWindow(
infoWindow: InfoWindow( MarkerId(leads.id.toString()),
title: leads.branchName ?? 'Unknown Lead', );
snippet: leads.address ?? 'No address available', print(
'Marker tapped: id=${leads.id}, name=${leads.branchName}',
anchor: const Offset(0.5, 1.0), );
), },
zIndex: 100, ),
onTap: () { );
_mapController?.showMarkerInfoWindow(MarkerId(leads.id.toString())); }
print('Marker tapped: id=${leads.id}, name=${leads.branchName}'); }
}, } catch (e) {
), print("Exception at Markers: $e");
); }
}); });
return markers; return markers;
} }
LatLng parseLatLng(String? location) {
LatLng _parseLatLng(String? location) {
if (location != null) { if (location != null) {
List<String> parts = location.split(','); List<String> parts = location.split(',');
if (parts.length == 2) { if (parts.length == 2) {
......
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:gen_service/Notifiers/AuthProvider.dart'; import 'package:gen_service/Notifiers/AuthProvider.dart';
...@@ -17,7 +19,6 @@ class LoginScreen extends StatefulWidget { ...@@ -17,7 +19,6 @@ class LoginScreen extends StatefulWidget {
} }
class _LoginScreenState extends State<LoginScreen> { class _LoginScreenState extends State<LoginScreen> {
final TextEditingController _mobileController = TextEditingController(); final TextEditingController _mobileController = TextEditingController();
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
...@@ -59,11 +60,14 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -59,11 +60,14 @@ class _LoginScreenState extends State<LoginScreen> {
await authProvider.fetchMobile(mob); await authProvider.fetchMobile(mob);
// Handle response - Check if error is "0" (string comparison) // Handle response - Check if error is "0" (string comparison)
if (authProvider.mobileResponse != null && authProvider.mobileResponse!.error == "0") { if (authProvider.mobileResponse != null &&
authProvider.mobileResponse!.error == "0") {
AnimatedSnackBar.success( AnimatedSnackBar.success(
context: context, context: context,
title: "OTP Sent", title: "OTP Sent",
message: authProvider.mobileResponse?.message ?? "OTP sent to your registered mobile number!", message:
authProvider.mobileResponse?.message ??
"OTP sent to your registered mobile number!",
); );
// Navigate to OTP screen after a short delay // Navigate to OTP screen after a short delay
...@@ -71,53 +75,56 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -71,53 +75,56 @@ class _LoginScreenState extends State<LoginScreen> {
if (mounted) { if (mounted) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(builder: (context) => OtpScreen(mob: mob)),
builder: (context) => OtpScreen(mob: mob),
),
); );
} }
}); });
} else { } else {
CustomSnackBar.showWarning( CustomSnackBar.showWarning(
context: context, context: context,
title: "Login Failed", title: "Login Failed",
message: authProvider.mobileResponse?.message.toString() ?? message:
authProvider.mobileResponse?.message.toString() ??
"Mobile number not registered or invalid", "Mobile number not registered or invalid",
); );
} }
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final authProvider = Provider.of<AuthProvider>(context); final authProvider = Provider.of<AuthProvider>(context);
final size = MediaQuery.of(context).size; final size = MediaQuery.of(context).size;
return Scaffold( return SafeArea(
resizeToAvoidBottomInset: true, top: false,
backgroundColor: Colors.blue, bottom: Platform.isAndroid,
body: Stack( child: Scaffold(
children: [ resizeToAvoidBottomInset: true,
/// 🔹 Background image backgroundColor: Colors.blue,
Container(// here is fixed same we need to do for profile here body: Stack(
width: double.infinity, children: [
height: double.infinity, /// 🔹 Background image
decoration: const BoxDecoration( Container(
image: DecorationImage( // here is fixed same we need to do for profile here
image: AssetImage("assets/images/bg_image_new.png"), width: double.infinity,
fit: BoxFit.cover, height: double.infinity,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/background_png.png"),
fit: BoxFit.cover,
),
), ),
), ),
),
/// 🔹 Main content (scrollable & keyboard-safe) /// 🔹 Main content (scrollable & keyboard-safe)
SafeArea(// here is scrollable LayoutBuilder(
child: LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
return SingleChildScrollView( return SingleChildScrollView(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom, // moves up with keyboard bottom:
MediaQuery.of(
context,
).viewInsets.bottom, // moves up with keyboard
), ),
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
...@@ -133,26 +140,28 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -133,26 +140,28 @@ class _LoginScreenState extends State<LoginScreen> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox(width: 30,), SizedBox(width: 30),
SvgPicture.asset( SvgPicture.asset(
"assets/svg/gensis_latest_logo.svg", "assets/svg/gensis_latest_logo.svg",
height: 50, height: 50,
color: Colors.white, color: Colors.white,
), ),
] ],
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
const Spacer(), const Spacer(),
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox(width: 6,), SizedBox(width: 6),
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 12), padding: const EdgeInsets.symmetric(
horizontal: 30,
vertical: 12,
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
...@@ -186,7 +195,10 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -186,7 +195,10 @@ class _LoginScreenState extends State<LoginScreen> {
/// 🔹 Bottom Sheet style area /// 🔹 Bottom Sheet style area
Container( Container(
width: double.infinity, width: double.infinity,
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 30), padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 30,
),
decoration: const BoxDecoration( decoration: const BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
...@@ -216,15 +228,27 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -216,15 +228,27 @@ class _LoginScreenState extends State<LoginScreen> {
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
onChanged: _validatePhone, onChanged: _validatePhone,
maxLength: 10, maxLength: 10,
style: const TextStyle(color: Colors.black, fontFamily: "Poppins",fontSize: 14), style: const TextStyle(
color: Colors.black,
fontFamily: "Poppins",
fontSize: 14,
),
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Mobile No.", hintText: "Enter Mobile No.",
hintStyle: const TextStyle(color: Colors.grey,fontFamily: "Poppins", fontSize: 14), hintStyle: const TextStyle(
color: Colors.grey,
fontFamily: "Poppins",
fontSize: 14,
),
filled: true, filled: true,
fillColor: AppColors.backgroundRegular, fillColor: AppColors.backgroundRegular,
counterText: "", // Remove character counter counterText:
contentPadding: const EdgeInsets.symmetric( "", // Remove character counter
vertical: 16, horizontal: 20), contentPadding:
const EdgeInsets.symmetric(
vertical: 16,
horizontal: 20,
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),
borderSide: BorderSide( borderSide: BorderSide(
...@@ -235,8 +259,11 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -235,8 +259,11 @@ class _LoginScreenState extends State<LoginScreen> {
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),
borderSide: BorderSide( borderSide: BorderSide(
color: _showError ? Colors.red : Colors.blue, color:
width: 1 _showError
? Colors.red
: Colors.blue,
width: 1,
), ),
), ),
), ),
...@@ -245,7 +272,10 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -245,7 +272,10 @@ class _LoginScreenState extends State<LoginScreen> {
// ⚠ Validation message - Only show after button press and if invalid // ⚠ Validation message - Only show after button press and if invalid
if (_showError) if (_showError)
const Padding( const Padding(
padding: EdgeInsets.only(left: 12, top: 8), padding: EdgeInsets.only(
left: 12,
top: 8,
),
child: Align( child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: Text( child: Text(
...@@ -267,14 +297,19 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -267,14 +297,19 @@ class _LoginScreenState extends State<LoginScreen> {
height: 50, height: 50,
child: ElevatedButton( child: ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFF0086F1), backgroundColor: const Color(
0xFF0086F1,
),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(
30,
),
), ),
), ),
onPressed: (authProvider.isLoading) onPressed:
? null (authProvider.isLoading)
: () => _login(context), ? null
: () => _login(context),
child: const Text( child: const Text(
"Continue", "Continue",
style: TextStyle( style: TextStyle(
...@@ -296,8 +331,8 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -296,8 +331,8 @@ class _LoginScreenState extends State<LoginScreen> {
); );
}, },
), ),
), ],
], ),
), ),
); );
} }
......
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:gen_service/Notifiers/AuthProvider.dart'; import 'package:gen_service/Notifiers/AuthProvider.dart';
...@@ -17,8 +18,10 @@ class OtpScreen extends StatefulWidget { ...@@ -17,8 +18,10 @@ class OtpScreen extends StatefulWidget {
} }
class _OtpScreenState extends State<OtpScreen> { class _OtpScreenState extends State<OtpScreen> {
final List<TextEditingController> _controllers = final List<TextEditingController> _controllers = List.generate(
List.generate(4, (_) => TextEditingController()); 4,
(_) => TextEditingController(),
);
final List<FocusNode> _focusNodes = List.generate(4, (_) => FocusNode()); final List<FocusNode> _focusNodes = List.generate(4, (_) => FocusNode());
final prefs = SharedPreferencesService.instance; final prefs = SharedPreferencesService.instance;
...@@ -78,13 +81,18 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -78,13 +81,18 @@ class _OtpScreenState extends State<OtpScreen> {
AnimatedSnackBar.success( AnimatedSnackBar.success(
context: context, context: context,
title: "Success", title: "Success",
message: authProvider.otpResponse?.message ?? "OTP Verified Successfully!", message:
authProvider.otpResponse?.message ??
"OTP Verified Successfully!",
); );
// ✅ Save session and accId // ✅ Save session and accId
if (authProvider.otpResponse?.accId != null) { if (authProvider.otpResponse?.accId != null) {
await prefs.saveString("accId", authProvider.otpResponse!.accId!); await prefs.saveString("accId", authProvider.otpResponse!.accId!);
await prefs.saveString("session_id", authProvider.otpResponse!.sessionId!); await prefs.saveString(
"session_id",
authProvider.otpResponse!.sessionId!,
);
await prefs.saveString("mob_number", widget.mob); await prefs.saveString("mob_number", widget.mob);
} }
...@@ -92,11 +100,12 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -92,11 +100,12 @@ class _OtpScreenState extends State<OtpScreen> {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
PageRouteBuilder( PageRouteBuilder(
pageBuilder: (_, __, ___) => HomeScreen( pageBuilder:
accId: authProvider.otpResponse!.accId!, (_, __, ___) => HomeScreen(
sessionId: authProvider.otpResponse!.sessionId.toString(), accId: authProvider.otpResponse!.accId!,
mobNumber: widget.mob, sessionId: authProvider.otpResponse!.sessionId.toString(),
), mobNumber: widget.mob,
),
transitionsBuilder: (_, animation, __, child) { transitionsBuilder: (_, animation, __, child) {
return FadeTransition(opacity: animation, child: child); return FadeTransition(opacity: animation, child: child);
}, },
...@@ -107,7 +116,9 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -107,7 +116,9 @@ class _OtpScreenState extends State<OtpScreen> {
CustomSnackBar.showError( CustomSnackBar.showError(
context: context, context: context,
title: "Error", title: "Error",
message: authProvider.otpResponse?.message ?? "Invalid OTP. Please try again.", message:
authProvider.otpResponse?.message ??
"Invalid OTP. Please try again.",
); );
} }
} else { } else {
...@@ -134,11 +145,13 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -134,11 +145,13 @@ class _OtpScreenState extends State<OtpScreen> {
final authProvider = Provider.of<AuthProvider>(context, listen: false); final authProvider = Provider.of<AuthProvider>(context, listen: false);
await authProvider.fetchMobile(widget.mob); await authProvider.fetchMobile(widget.mob);
if (authProvider.mobileResponse != null && authProvider.mobileResponse?.error == "0") { if (authProvider.mobileResponse != null &&
authProvider.mobileResponse?.error == "0") {
AnimatedSnackBar.success( AnimatedSnackBar.success(
context: context, context: context,
title: "OTP Sent", title: "OTP Sent",
message: authProvider.mobileResponse?.message ?? "OTP sent successfully.", message:
authProvider.mobileResponse?.message ?? "OTP sent successfully.",
); );
setState(() { setState(() {
...@@ -158,7 +171,8 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -158,7 +171,8 @@ class _OtpScreenState extends State<OtpScreen> {
CustomSnackBar.showWarning( CustomSnackBar.showWarning(
context: context, context: context,
title: "Error", title: "Error",
message: authProvider.mobileResponse?.message ?? "Failed to resend OTP", message:
authProvider.mobileResponse?.message ?? "Failed to resend OTP",
); );
} }
} catch (e) { } catch (e) {
...@@ -227,32 +241,36 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -227,32 +241,36 @@ class _OtpScreenState extends State<OtpScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return SafeArea(
backgroundColor: Colors.blue, top: false,
resizeToAvoidBottomInset: true, bottom: Platform.isAndroid,
body: Stack( child: Scaffold(
children: [ backgroundColor: Colors.blue,
/// 🔹 Background resizeToAvoidBottomInset: true,
Container( body: Stack(
width: double.infinity, children: [
height: double.infinity, /// 🔹 Background
decoration: const BoxDecoration( Container(
image: DecorationImage( width: double.infinity,
image: AssetImage("assets/images/background_png.png"), height: double.infinity,
fit: BoxFit.cover, decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/background_png.png"),
fit: BoxFit.cover,
),
), ),
), ),
),
SafeArea( LayoutBuilder(
child: LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
return SingleChildScrollView( return SingleChildScrollView(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom, bottom: MediaQuery.of(context).viewInsets.bottom,
), ),
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraints.maxHeight), constraints: BoxConstraints(
minHeight: constraints.maxHeight,
),
child: IntrinsicHeight( child: IntrinsicHeight(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
...@@ -277,9 +295,12 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -277,9 +295,12 @@ class _OtpScreenState extends State<OtpScreen> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox(width: 6,), SizedBox(width: 6),
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 12), padding: const EdgeInsets.symmetric(
horizontal: 30,
vertical: 12,
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
...@@ -307,12 +328,15 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -307,12 +328,15 @@ class _OtpScreenState extends State<OtpScreen> {
), ),
], ],
), ),
SizedBox(height: 20,), SizedBox(height: 20),
/// 🔹 Bottom sheet area /// 🔹 Bottom sheet area
Container( Container(
width: double.infinity, width: double.infinity,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 30), padding: const EdgeInsets.symmetric(
horizontal: 24,
vertical: 30,
),
decoration: const BoxDecoration( decoration: const BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
...@@ -334,41 +358,51 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -334,41 +358,51 @@ class _OtpScreenState extends State<OtpScreen> {
const SizedBox(height: 24), const SizedBox(height: 24),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment:
children: List.generate(4, (i) => _buildOtpBox(i)), MainAxisAlignment.spaceEvenly,
children: List.generate(
4,
(i) => _buildOtpBox(i),
),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
/// 🔹 Resend OTP /// 🔹 Resend OTP
TextButton( TextButton(
onPressed: _secondsRemaining == 0 && !_isResending onPressed:
? () => _resendOtp(context) _secondsRemaining == 0 && !_isResending
: null, ? () => _resendOtp(context)
child: _isResending : null,
? const SizedBox( child:
width: 20, _isResending
height: 20, ? const SizedBox(
child: CircularProgressIndicator( width: 20,
strokeWidth: 2, height: 20,
color: Colors.blue, child: CircularProgressIndicator(
), strokeWidth: 2,
) color: Colors.blue,
: Text( ),
_secondsRemaining == 0 )
? "Resend OTP" : Text(
: "Resend OTP in $_secondsRemaining s", _secondsRemaining == 0
style: TextStyle( ? "Resend OTP"
color: _secondsRemaining == 0 : "Resend OTP in $_secondsRemaining s",
? const Color(0xFF008CDE) style: TextStyle(
: Colors.black45, color:
fontSize: 14, _secondsRemaining == 0
decorationColor: const Color(0xFF008CDE), ? const Color(0xFF008CDE)
decoration: _secondsRemaining == 0 : Colors.black45,
? TextDecoration.underline fontSize: 14,
: TextDecoration.none, decorationColor: const Color(
), 0xFF008CDE,
), ),
decoration:
_secondsRemaining == 0
? TextDecoration.underline
: TextDecoration.none,
),
),
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
...@@ -385,19 +419,20 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -385,19 +419,20 @@ class _OtpScreenState extends State<OtpScreen> {
), ),
), ),
onPressed: _isVerifying ? null : _verifyOtp, onPressed: _isVerifying ? null : _verifyOtp,
child: _isVerifying child:
? const CircularProgressIndicator( _isVerifying
strokeWidth: 2, ? const CircularProgressIndicator(
color: Colors.white, strokeWidth: 2,
) color: Colors.white,
: const Text( )
"Continue", : const Text(
style: TextStyle( "Continue",
color: Colors.white, style: TextStyle(
fontSize: 16, color: Colors.white,
fontWeight: FontWeight.w600, fontSize: 16,
), fontWeight: FontWeight.w600,
), ),
),
), ),
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
...@@ -411,8 +446,8 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -411,8 +446,8 @@ class _OtpScreenState extends State<OtpScreen> {
); );
}, },
), ),
), ],
], ),
), ),
); );
} }
......
...@@ -23,30 +23,21 @@ class ContactMap extends StatefulWidget { ...@@ -23,30 +23,21 @@ class ContactMap extends StatefulWidget {
} }
class _ContactMapState extends State<ContactMap> { class _ContactMapState extends State<ContactMap> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
final provider = Provider.of<MapProvider>( final provider = Provider.of<MapProvider>(context, listen: false);
context, provider.getLocationPermission(context, widget.accId, widget.sessionId);
listen: false, provider.nearbyServiceLocations(context, widget.accId, widget.sessionId);
);
provider.getLocationPermission(context,widget.accId,widget.sessionId);
provider.nearbyServiceLocations(context,widget.accId,widget.sessionId);
}); });
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<MapProvider>( return Consumer<MapProvider>(
builder: (context, provider, child) { builder: (context, provider, child) {
final isLoading = provider.isLoading; final isLoading = provider.isLoading;
final data = provider.response?.getInTouchList; final data = provider.response?.getInTouchList;
...@@ -62,9 +53,7 @@ class _ContactMapState extends State<ContactMap> { ...@@ -62,9 +53,7 @@ class _ContactMapState extends State<ContactMap> {
if (data == null || data.isEmpty) { if (data == null || data.isEmpty) {
return const Scaffold( return const Scaffold(
backgroundColor: AppColors.backgroundRegular, backgroundColor: AppColors.backgroundRegular,
body: Center( body: Center(child: Text("No data found.")),
child: Text("No data found."),
),
); );
} }
...@@ -80,43 +69,47 @@ class _ContactMapState extends State<ContactMap> { ...@@ -80,43 +69,47 @@ class _ContactMapState extends State<ContactMap> {
stretch: true, stretch: true,
backgroundColor: AppColors.backgroundRegular, backgroundColor: AppColors.backgroundRegular,
onStretchTrigger: () async { onStretchTrigger: () async {
final provider = final provider = Provider.of<MapProvider>(
Provider.of<MapProvider>(context, listen: false); context,
provider.nearbyServiceLocations(context,widget.accId, widget.sessionId); listen: false,
);
provider.nearbyServiceLocations(
context,
widget.accId,
widget.sessionId,
);
}, },
stretchTriggerOffset: 300.0, stretchTriggerOffset: 300.0,
expandedHeight: expandedHeight: MediaQuery.of(context).size.height * 0.5,
MediaQuery.of(context).size.height*0.5,
flexibleSpace: FlexibleSpaceBar( flexibleSpace: FlexibleSpaceBar(
stretchModes: const [ // stretchModes: const [
StretchMode.zoomBackground, // StretchMode.zoomBackground,
StretchMode.blurBackground, // StretchMode.zoomBackground,
], // ],
background: Container( background: Container(
width: double.infinity, width: double.infinity,
decoration: decoration: const BoxDecoration(
const BoxDecoration(gradient: AppColors.successGradient), gradient: AppColors.successGradient,
),
child: Column( child: Column(
children: [ children: [
SizedBox( SizedBox(
height: MediaQuery.of(context).size.height*0.5, height: MediaQuery.of(context).size.height * 0.5,
child: Stack( child: Stack(
children: [ children: [
GoogleMap( GoogleMap(
myLocationEnabled: true, myLocationEnabled: true,
zoomGesturesEnabled: true, zoomGesturesEnabled: true,
zoomControlsEnabled: true, zoomControlsEnabled: true,
gestureRecognizers: { gestureRecognizers: {
Factory<OneSequenceGestureRecognizer>( Factory<OneSequenceGestureRecognizer>(
() => EagerGestureRecognizer(), () => EagerGestureRecognizer(),
), ),
Factory<PanGestureRecognizer>( Factory<PanGestureRecognizer>(
() => PanGestureRecognizer(), () => PanGestureRecognizer(),
), ),
Factory<ScaleGestureRecognizer>( Factory<ScaleGestureRecognizer>(
() => ScaleGestureRecognizer(), () => ScaleGestureRecognizer(),
), ),
}, },
initialCameraPosition: CameraPosition( initialCameraPosition: CameraPosition(
...@@ -129,25 +122,34 @@ class _ContactMapState extends State<ContactMap> { ...@@ -129,25 +122,34 @@ class _ContactMapState extends State<ContactMap> {
provider.mapController = controller; provider.mapController = controller;
}, },
onCameraMove: (position) { onCameraMove: (position) {
provider.onCameraMove(context, position,widget.accId,widget.sessionId); provider.onCameraMove(
context,
position,
widget.accId,
widget.sessionId,
);
}, },
onTap: (position) { onTap: (position) {
provider.mapController provider.mapController
?.hideMarkerInfoWindow( ?.hideMarkerInfoWindow(
provider.markers.isNotEmpty provider.markers.isNotEmpty
? provider.markers.first.markerId ? provider.markers.first.markerId
: MarkerId(''), : MarkerId(''),
); );
}, },
), ),
Container( Container(
height: 75, height: 75,
decoration: BoxDecoration( decoration: BoxDecoration(
gradient: LinearGradient(colors: [ gradient: LinearGradient(
Color(0xFFFFFFFF), colors: [
Color(0xFFFFFFFF), Color(0xFFFFFFFF),
Color(0xFFFFFFFF).withAlpha(0), Color(0xFFFFFFFF),
],begin: Alignment.topCenter,end: Alignment.bottomCenter) Color(0xFFFFFFFF).withAlpha(0),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
), ),
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 16, horizontal: 16,
...@@ -155,8 +157,10 @@ class _ContactMapState extends State<ContactMap> { ...@@ -155,8 +157,10 @@ class _ContactMapState extends State<ContactMap> {
), ),
child: SizedBox( child: SizedBox(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start, MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
InkResponse( InkResponse(
onTap: () { onTap: () {
...@@ -206,7 +210,7 @@ class _ContactMapState extends State<ContactMap> { ...@@ -206,7 +210,7 @@ class _ContactMapState extends State<ContactMap> {
SliverToBoxAdapter( SliverToBoxAdapter(
child: Container( child: Container(
decoration:BoxDecoration( decoration: BoxDecoration(
color: AppColors.backgroundRegular, color: AppColors.backgroundRegular,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(30), topLeft: Radius.circular(30),
...@@ -216,7 +220,7 @@ class _ContactMapState extends State<ContactMap> { ...@@ -216,7 +220,7 @@ class _ContactMapState extends State<ContactMap> {
BoxShadow( BoxShadow(
color: Colors.black.withOpacity(0.1), color: Colors.black.withOpacity(0.1),
blurRadius: 10, blurRadius: 10,
offset: Offset(0, -5), offset: Offset(0, -5),
), ),
], ],
), ),
...@@ -229,10 +233,12 @@ class _ContactMapState extends State<ContactMap> { ...@@ -229,10 +233,12 @@ class _ContactMapState extends State<ContactMap> {
padding: const EdgeInsets.symmetric(horizontal: 0), padding: const EdgeInsets.symmetric(horizontal: 0),
decoration: const BoxDecoration( decoration: const BoxDecoration(
color: AppColors.backgroundRegular, color: AppColors.backgroundRegular,
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 10,
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
...@@ -243,12 +249,17 @@ class _ContactMapState extends State<ContactMap> { ...@@ -243,12 +249,17 @@ class _ContactMapState extends State<ContactMap> {
Padding( Padding(
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(bottom: 8.0),
child: _buildItemRow( child: _buildItemRow(
branchName: item.branchName ?? "Unknown Branch", id: item.id ?? "",
address: item.address ?? "No address available", branchName:
item.branchName ?? "Unknown Branch",
address:
item.address ?? "No address available",
phoneNo: item.telephoneNo ?? "", phoneNo: item.telephoneNo ?? "",
mapLink: item.googleMapLink ?? "", mapLink: item.googleMapLink ?? "",
lat: item.latitude ?? "", lat: item.latitude ?? "",
long: item.longitude ?? "", long: item.longitude ?? "",
loc: item.loc ?? "",
provider: provider,
), ),
), ),
const SizedBox(height: 30), const SizedBox(height: 30),
...@@ -258,16 +269,15 @@ class _ContactMapState extends State<ContactMap> { ...@@ -258,16 +269,15 @@ class _ContactMapState extends State<ContactMap> {
), ),
), ),
), ),
) ),
], ],
) ),
), ),
); );
}, },
); );
} }
Widget _buildItemRow({ Widget _buildItemRow({
required String branchName, required String branchName,
required String address, required String address,
...@@ -275,137 +285,167 @@ class _ContactMapState extends State<ContactMap> { ...@@ -275,137 +285,167 @@ class _ContactMapState extends State<ContactMap> {
required String mapLink, required String mapLink,
required String lat, required String lat,
required String long, required String long,
required String loc,
required String id,
required MapProvider provider,
}) { }) {
return Container( final latLng = provider.parseLatLng(loc);
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14), return InkResponse(
decoration: BoxDecoration( onTap: () {
color: Colors.white, borderRadius: BorderRadius.circular(22)), HapticFeedback.lightImpact();
child: Row(
children: [ // 1. Animate camera to the branch location
const SizedBox(width: 14), provider.mapController?.animateCamera(
Expanded( CameraUpdate.newCameraPosition(
flex: 6, CameraPosition(
child: Column( target: latLng,
crossAxisAlignment: CrossAxisAlignment.start, zoom: 16.0, // Nice zoom level
children: [ ),
Text( ),
branchName, );
style: const TextStyle(
color: AppColors.normalText, Future.delayed(const Duration(milliseconds: 600), () {
fontWeight: FontWeight.w600, if (id != null) {
fontSize: 14, final markerId = MarkerId(id.toString());
overflow: TextOverflow.ellipsis, provider.mapController?.showMarkerInfoWindow(markerId);
}
});
},
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(22),
),
child: Row(
children: [
const SizedBox(width: 14),
Expanded(
flex: 6,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
branchName,
style: const TextStyle(
color: AppColors.normalText,
fontWeight: FontWeight.w600,
fontSize: 14,
overflow: TextOverflow.ellipsis,
),
), ),
), const SizedBox(height: 4),
const SizedBox(height: 4), Text(
Text( address,
address, maxLines: 4,
maxLines: 4, style: const TextStyle(
style: const TextStyle( color: AppColors.subtitleText,
color: AppColors.subtitleText, fontWeight: FontWeight.w400,
fontWeight: FontWeight.w400, fontSize: 14,
fontSize: 14, overflow: TextOverflow.ellipsis,
overflow: TextOverflow.ellipsis, ),
), ),
), ],
], ),
), ),
), const SizedBox(width: 8),
const SizedBox(width: 8), Row(
Row( children: [
children: [ InkResponse(
InkResponse( onTap: () async {
onTap: () async { // map lat & long
// map lat & long var location = "$lat, $long";
var location = "$lat, $long"; if (await canLaunch(mapLink)) {
if (await canLaunch(mapLink)) { await launchUrl(
await launchUrl(Uri.parse( Uri.parse("https://maps.google.com?q=$location"),
"https://maps.google.com?q=$location")); );
} else { } else {
throw 'Could not launch $mapLink'; throw 'Could not launch $mapLink';
} }
}, },
child: Container( child: Container(
padding: const EdgeInsets.all(1), padding: const EdgeInsets.all(1),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.transparent, color: Colors.transparent,
borderRadius: BorderRadius.circular(30)), borderRadius: BorderRadius.circular(30),
child: SvgPicture.asset( ),
"assets/svg/route_ic.svg", child: SvgPicture.asset(
height: 42, "assets/svg/route_ic.svg",
fit: BoxFit.contain, height: 42,
fit: BoxFit.contain,
),
), ),
), ),
), const SizedBox(width: 6),
const SizedBox(width: 6), InkResponse(
InkResponse( onTap: () async {
onTap: () async { final phone = phoneNo.trim();
final phone = phoneNo.trim();
if (phone.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Colors.redAccent,
content: const Text(
"Phone number not available",
style: TextStyle(color: Colors.white),
),
duration: Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
),
);
return;
}
final Uri phoneUri = Uri(scheme: 'tel', path: phone); if (phone.isEmpty) {
try {
if (await canLaunchUrl(phoneUri)) {
await launchUrl(phoneUri);
} else {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
backgroundColor: Colors.redAccent, backgroundColor: Colors.redAccent,
content: const Text( content: const Text(
"Unable to start the call", "Phone number not available",
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
duration: Duration(seconds: 2), duration: Duration(seconds: 2),
behavior: SnackBarBehavior.floating, behavior: SnackBarBehavior.floating,
), ),
); );
return;
} }
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar( final Uri phoneUri = Uri(scheme: 'tel', path: phone);
SnackBar(
backgroundColor: Colors.redAccent, try {
content: Text( if (await canLaunchUrl(phoneUri)) {
"Error while trying to call: $e", await launchUrl(phoneUri);
style: const TextStyle(color: Colors.white), } else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Colors.redAccent,
content: const Text(
"Unable to start the call",
style: TextStyle(color: Colors.white),
),
duration: Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
),
);
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Colors.redAccent,
content: Text(
"Error while trying to call: $e",
style: const TextStyle(color: Colors.white),
),
duration: const Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
), ),
duration: const Duration(seconds: 2), );
behavior: SnackBarBehavior.floating, }
), },
); child: Container(
} padding: const EdgeInsets.all(14),
}, decoration: BoxDecoration(
child: Container( color: const Color(0xFF4CAF50),
padding: const EdgeInsets.all(14), borderRadius: BorderRadius.circular(30),
decoration: BoxDecoration( ),
color: const Color(0xFF4CAF50), child: SvgPicture.asset(
borderRadius: BorderRadius.circular(30), "assets/svg/phone_ic.svg",
), height: 16,
child: SvgPicture.asset( color: Colors.white,
"assets/svg/phone_ic.svg", fit: BoxFit.contain,
height: 16, ),
color: Colors.white,
fit: BoxFit.contain,
), ),
), ),
), ],
], ),
), ],
], ),
), ),
); );
} }
......
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig"
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig"
platform :osx, '10.15'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_macos_podfile_setup
target 'Runner' do
use_frameworks!
flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_macos_build_settings(target)
end
end
...@@ -21,10 +21,10 @@ packages: ...@@ -21,10 +21,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: async name: async
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.12.0" version: "2.13.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
...@@ -189,10 +189,10 @@ packages: ...@@ -189,10 +189,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.2" version: "1.3.3"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
...@@ -588,26 +588,26 @@ packages: ...@@ -588,26 +588,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.8" version: "11.0.1"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.9" version: "3.0.10"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_testing name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
lints: lints:
dependency: transitive dependency: transitive
description: description:
...@@ -1257,10 +1257,10 @@ packages: ...@@ -1257,10 +1257,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.3.1" version: "15.0.0"
web: web:
dependency: transitive dependency: transitive
description: description:
......
...@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev ...@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 1.0.1+2 version: 1.0.1+3
environment: environment:
sdk: ^3.7.2 sdk: ^3.7.2
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment