Browse Source

last stable before null-safety migration

teso_v2
Benjamin Arhen 3 years ago
parent
commit
6afe7d6b63
  1. BIN
      .DS_Store
  2. 122
      android/app/google-services.json
  3. BIN
      ios/.DS_Store
  4. 2
      ios/Flutter/AppFrameworkInfo.plist
  5. 45
      ios/Podfile
  6. 1368
      ios/Podfile.lock
  7. 30
      ios/Runner.xcodeproj/project.pbxproj
  8. 2
      ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  9. BIN
      ios/Runner/.DS_Store
  10. 4
      ios/Runner/AppDelegate.swift
  11. 2
      ios/Runner/GoogleService-Info.plist
  12. 219
      ios/Runner/Info.plist
  13. 7
      ios/firebase_app_id_file.json
  14. 2
      lib/Classes/NotificationSpliter.dart
  15. 6
      lib/Pages/PageWidgets/BusinessProfile/BusinessHead.dart
  16. 42
      lib/Pages/PageWidgets/Settings/EditProfile.dart
  17. 11
      lib/Pages/Sub_Pages/Business/BusinessProducts.dart
  18. 7
      lib/Pages/Sub_Pages/BusinessDetails.dart
  19. 9
      lib/Pages/Sub_Pages/CoinsPurchase/SilverPurchaseFixed.dart
  20. 8
      lib/Pages/Sub_Pages/Explore/Categories/AllCategories.dart
  21. 9
      lib/Pages/Sub_Pages/Explore/Categories/ExploreCategory.dart
  22. 9
      lib/Pages/Sub_Pages/Explore/ExploreBusiness.dart
  23. 10
      lib/Pages/Sub_Pages/Explore/ExploreProduct.dart
  24. 11
      lib/Pages/Sub_Pages/Explore/Latest/AllLatest.dart
  25. 10
      lib/Pages/Sub_Pages/Explore/ML/FindProduct.dart
  26. 10
      lib/Pages/Sub_Pages/Explore/Trending/AllTrending.dart
  27. 21
      lib/Pages/Sub_Pages/LandingPage/FinalProcess.dart
  28. 22
      lib/Pages/Sub_Pages/PersonalSub/Referral.dart
  29. 2
      lib/Pages/Sub_Pages/userProfile3P.dart
  30. 14
      lib/Services/DynamicLinks.dart
  31. 72
      lib/firebase_options.dart
  32. 5
      lib/main.dart
  33. 1
      lib/main_screen.dart
  34. 232
      lib/teso_fab.dart
  35. 32
      pubspec.yaml

BIN
.DS_Store

Binary file not shown.

122
android/app/google-services.json

@ -1,66 +1,72 @@
{
"project_info": {
"project_number": "280510379185",
"firebase_url": "https://teso-ghana-default-rtdb.firebaseio.com",
"project_id": "teso-ghana",
"storage_bucket": "teso-ghana.appspot.com"
},
"client": [{
"client_info": {
"mobilesdk_app_id": "1:280510379185:android:b778de8dca1cf49219de90",
"android_client_info": {
"package_name": "com.sparentechBacware.teso"
}
"project_info": {
"project_number": "280510379185",
"firebase_url": "https://teso-ghana-default-rtdb.firebaseio.com",
"project_id": "teso-ghana",
"storage_bucket": "teso-ghana.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:280510379185:android:b778de8dca1cf49219de90",
"android_client_info": {
"package_name": "com.sparentechBacware.teso"
}
},
"oauth_client": [
{
"client_id": "280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "40b68890dd51d72454ccdc7289623c4d56273248"
}
},
"oauth_client": [{
"client_id": "280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "40b68890dd51d72454ccdc7289623c4d56273248"
}
},
{
"client_id": "280510379185-87k85sksrd30mu9fjgfmacb3bkcjnmdq.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "4f655cf94cd94864838475611b711c2528e33601"
}
},
{
"client_id": "280510379185-87k85sksrd30mu9fjgfmacb3bkcjnmdq.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "4f655cf94cd94864838475611b711c2528e33601"
}
},
{
"client_id": "280510379185-ac7qjglm9cct9u0diqrns6om8t2mb9ug.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "063304c2da41f90c824fad163b5ad481edf6db11"
}
},
{
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHBguF6oqPEq7em1vLrh_NP2LoPuabe6o"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "280510379185-ac7qjglm9cct9u0diqrns6om8t2mb9ug.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "063304c2da41f90c824fad163b5ad481edf6db11"
}
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [{
"current_key": "AIzaSyAHBguF6oqPEq7em1vLrh_NP2LoPuabe6o"
}],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [{
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.tesoapp",
"app_store_id": "1573175173"
}
}
]
"client_id": "280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.tesoapp",
"app_store_id": "1573175173"
}
}
]
}
}],
"configuration_version": "1"
}
}
],
"configuration_version": "1"
}

BIN
ios/.DS_Store

Binary file not shown.

2
ios/Flutter/AppFrameworkInfo.plist

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
<string>9.0</string>
</dict>
</plist>

45
ios/Podfile

@ -1,5 +1,8 @@
# Uncomment this line to define a global platform for your project
platform :ios, '12.0'
$FirebaseSDKVersion = '7.11.0'
# Override Firebase SDK Version
$FirebaseSDKVersion = '8.15.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
@ -25,45 +28,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
flutter_ios_podfile_setup
# "fork" of method flutter_install_ios_plugin_pods (in fluttertools podhelpers.rb) to get lts version of ffmpeg
def flutter_install_ios_plugin_pods(ios_application_path = nil)
# defined_in_file is set by CocoaPods and is a Pathname to the Podfile.
ios_application_path ||= File.dirname(defined_in_file.realpath) if self.respond_to?(:defined_in_file)
raise 'Could not find iOS application path' unless ios_application_path
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
symlink_dir = File.expand_path('.symlinks', ios_application_path)
system('rm', '-rf', symlink_dir) # Avoid the complication of dependencies like FileUtils.
symlink_plugins_dir = File.expand_path('plugins', symlink_dir)
system('mkdir', '-p', symlink_plugins_dir)
plugins_file = File.join(ios_application_path, '..', '.flutter-plugins-dependencies')
plugin_pods = flutter_parse_plugins_file(plugins_file)
plugin_pods.each do |plugin_hash|
plugin_name = plugin_hash['name']
plugin_path = plugin_hash['path']
if (plugin_name && plugin_path)
symlink = File.join(symlink_plugins_dir, plugin_name)
File.symlink(plugin_path, symlink)
if plugin_name == 'flutter_ffmpeg'
pod plugin_name+'/full-gpl-lts', :path => File.join('.symlinks', 'plugins', plugin_name, 'ios')
else
pod plugin_name, :path => File.join('.symlinks', 'plugins', plugin_name, 'ios')
end
end
end
end
target 'Runner' do
# pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.33.0'
pod 'GoogleMLKit/ImageLabeling'
pod 'GoogleMLKit/TextRecognition'
use_frameworks!
use_modular_headers!
@ -75,6 +40,6 @@ post_install do |installer|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end
end
end

1368
ios/Podfile.lock

File diff suppressed because it is too large

30
ios/Runner.xcodeproj/project.pbxproj

@ -13,6 +13,7 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
98FE50F8283B030E00F3547E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 98FE50F7283B030D00F3547E /* GoogleService-Info.plist */; };
DE7D3950774AF2253178F202 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29578401A5FB3088ABB7635B /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
@ -45,6 +46,7 @@
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>"; };
98FE50F7283B030D00F3547E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../Downloads/GoogleService-Info.plist"; sourceTree = "<group>"; };
A59F426903D2E7C7F7F74FB8 /* 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>"; };
DD7F4377AC18215A9CA08DC8 /* 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 */
@ -112,6 +114,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
98FE50F7283B030D00F3547E /* GoogleService-Info.plist */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -140,6 +143,7 @@
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
5E474C80B70EC554E7278F77 /* [CP] Embed Pods Frameworks */,
1065E7A3A2329C46618FAF60 /* [CP] Copy Pods Resources */,
8B6BAB971734FC2758E568B5 /* [firebase_crashlytics] Crashlytics Upload Symbols */,
);
buildRules = (
);
@ -156,7 +160,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1240;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@ -190,6 +194,7 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
98FE50F8283B030E00F3547E /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@ -268,6 +273,26 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
8B6BAB971734FC2758E568B5 /* [firebase_crashlytics] Crashlytics Upload Symbols */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}\"",
"\"$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)\"",
);
name = "[firebase_crashlytics] Crashlytics Upload Symbols";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --flutter-project \"$PROJECT_DIR/firebase_app_id_file.json\" ";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -382,6 +407,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -514,6 +540,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -538,6 +565,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

2
ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1240"
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

BIN
ios/Runner/.DS_Store

Binary file not shown.

4
ios/Runner/AppDelegate.swift

@ -1,5 +1,7 @@
import UIKit
import Flutter
import Firebase
import GoogleMaps
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
@ -7,6 +9,8 @@ import Flutter
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
GMSServices.provideAPIKey("AIzaSyB3gbhILEzrSCFpxE509PnEb7slCkBfBQI")
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

2
ios/Runner/GoogleService-Info.plist

@ -7,7 +7,7 @@
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<key>ANDROID_CLIENT_ID</key>
<string>280510379185-ac7qjglm9cct9u0diqrns6om8t2mb9ug.apps.googleusercontent.com</string>
<string>280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com</string>
<key>API_KEY</key>
<string>AIzaSyCBDtZO2_Z5JjrNj1TocK6YAlk_wDbzZHs</string>
<key>GCM_SENDER_ID</key>

219
ios/Runner/Info.plist

@ -1,127 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Teso</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<dict>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>teso</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<string>fb1759156777594606</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true />
<key>NSAppTransportSecurity</key>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Teso</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>teso</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true />
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<string>fb1759156777594606</string>
</array>
</dict>
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes and capture photos</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allow access to microphone</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Teso needs permission to write videos and photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Teso needs permission to select videos and photos</string>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>location</string>
<string>processing</string>
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false />
<key>io.flutter.embedded_views_preview</key>
<true />
<!-- changes this number to configure the maximum number of concurrent tasks -->
<key>FUMaximumConnectionsPerHost</key>
<integer>5</integer>
<!-- changes this number to configure the maximum number of concurrent tasks -->
<key>FUMaximumUploadOperation</key>
<integer>5</integer>
<!-- changes this number to configure the request timeout -->
<key>FUTimeoutInSeconds</key>
<integer>3600</integer>
<key>FUAllFilesUploadedMessage</key>
<string>Posts successfully published on Teso</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>http</string>
</array>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>FUAllFilesUploadedMessage</key>
<string>Posts successfully published on Teso</string>
<key>FUMaximumConnectionsPerHost</key>
<integer>5</integer>
<key>FUMaximumUploadOperation</key>
<integer>5</integer>
<key>FUTimeoutInSeconds</key>
<integer>3600</integer>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>http</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes and capture photos</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Teso needs access to location.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allow access to microphone</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Teso needs permission to write videos and photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Teso needs permission to select videos and photos</string>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>location</string>
<string>processing</string>
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>io.flutter.embedded_views_preview</key>
<true/>
</dict>
</plist>

7
ios/firebase_app_id_file.json

@ -0,0 +1,7 @@
{
"file_generated_by": "FlutterFire CLI",
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
"GOOGLE_APP_ID": "1:280510379185:ios:52af12a619d5443119de90",
"FIREBASE_PROJECT_ID": "teso-ghana",
"GCM_SENDER_ID": "280510379185"
}

2
lib/Classes/NotificationSpliter.dart

@ -90,7 +90,7 @@ class NotificationSplitter {
Provider.of<UserProvider>(context, listen: false).getUserInformation();
payload.loadID = "TESN000";
payload.load1 = data["orderID"];
await closeWebView();
await closeInAppWebView();
return payload;
break;
default:

6
lib/Pages/PageWidgets/BusinessProfile/BusinessHead.dart

@ -71,7 +71,7 @@ buildHead(
Container(
child: Center(
child: Text(
Numeral(products).value().toString(),
Numeral(products).numeral.toString(),
style: TextStyle(fontWeight: FontWeight.bold),
),
),
@ -90,7 +90,7 @@ buildHead(
Container(
child: Center(
child: Text(
Numeral(subscribers).value().toString(),
Numeral(subscribers).numeral.toString(),
textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.bold),
),
@ -110,7 +110,7 @@ buildHead(
Container(
child: Center(
child: Text(
Numeral(coupons).value().toString(),
Numeral(coupons).numeral.toString(),
textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.bold),
),

42
lib/Pages/PageWidgets/Settings/EditProfile.dart

@ -67,24 +67,26 @@ class _EditProfileState extends State<EditProfile> {
}
Future<Null> _cropImage() async {
File croppedFile = await ImageCropper.cropImage(
ImageCropper imageCropper = new ImageCropper();
CroppedFile croppedFile = await imageCropper.cropImage(
sourcePath: _image.path,
cropStyle: CropStyle.circle,
aspectRatioPresets: Platform.isAndroid
? [CropAspectRatioPreset.original]
: [CropAspectRatioPreset.original],
androidUiSettings: AndroidUiSettings(
toolbarTitle: 'Teso Profile Picture',
toolbarColor: Theme.of(context).colorScheme.secondary,
toolbarWidgetColor: Colors.white,
initAspectRatio: CropAspectRatioPreset.original,
lockAspectRatio: false),
iosUiSettings: IOSUiSettings(
title: 'Teso Profile Picture',
));
: [CropAspectRatioPreset.original]);
// [
// AndroidUiSettings(
// toolbarTitle: 'Teso Profile Picture',
// toolbarColor: Theme.of(context).colorScheme.secondary,
// toolbarWidgetColor: Colors.white,
// initAspectRatio: CropAspectRatioPreset.original,
// lockAspectRatio: false),
// iosUiSettings: IOSUiSettings(
// title: 'Teso Profile Picture',
// ))];
if (croppedFile != null) {
setState(() {
_image = croppedFile;
// _image = croppedFile.;
state = AppState.cropped;
imageAvailable = true;
});
@ -421,14 +423,14 @@ class _EditProfileState extends State<EditProfile> {
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Divider(),
),
new ListTile(
title:
buildInputContainer(context, address, "Address", true),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Divider(),
),
// new ListTile(
// title:
// buildInputContainer(context, address, "Address", true),
// ),
// Padding(
// padding: const EdgeInsets.symmetric(horizontal: 20.0),
// child: Divider(),
// ),
],
),
),

11
lib/Pages/Sub_Pages/Business/BusinessProducts.dart

@ -64,8 +64,8 @@ class _BusinessProductsState extends State<BusinessProducts> {
@override
Widget build(BuildContext context) {
return Container(
child: StaggeredGridView.count(
controller: _controller,
child: StaggeredGrid.count(
// controller: _controller,
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
show.elementAt(index).businessID = widget.shopName;
@ -73,12 +73,7 @@ class _BusinessProductsState extends State<BusinessProducts> {
? buildItems(context, show.elementAt(index), 0.5)
: buildItems(context, show.elementAt(index), 0.35);
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

7
lib/Pages/Sub_Pages/BusinessDetails.dart

@ -1,8 +1,7 @@
import 'package:flutter/material.dart';
import 'package:teso/Classes/TesoShop.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:page_transition/page_transition.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'Business/BusinessProfile.dart';
buildShopDetails(BuildContext context, TesoShop shop, Function navigate) {
@ -38,8 +37,8 @@ buildShopDetails(BuildContext context, TesoShop shop, Function navigate) {
),
new InkWell(
onTap: () async {
if (await canLaunch("tel:" + shop.shopPhone)) {
await launch("tel:" + shop.shopPhone);
if (await canLaunchUrlString("tel:" + shop.shopPhone)) {
await launchUrlString("tel:" + shop.shopPhone);
} else {
throw 'call not possible';
}

9
lib/Pages/Sub_Pages/CoinsPurchase/SilverPurchaseFixed.dart

@ -4,7 +4,7 @@ import 'package:teso/Pages/PageWidgets/CoinPurchase/MomoType.dart';
import 'package:teso/Pages/PageWidgets/CoinPurchase/PayGold.dart';
import 'package:teso/providers/pageAnimations.dart';
import 'package:teso/util/consts.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'PurchaseingSilver.dart';
@ -160,11 +160,10 @@ class _SilverPurchaseFixedState extends State<SilverPurchaseFixed> {
} else {
String _url = paymentServer +
"purchasesilver/user=${widget.user.userGUID}/amount=${widget.amount}/cointype=TESCNS01";
await canLaunch(_url)
? await launch(
await canLaunchUrlString(_url)
? await launchUrlString(
_url,
enableJavaScript: true,
forceWebView: true,
mode: LaunchMode.platformDefault,
)
: throw 'Could not launch $_url';
}

8
lib/Pages/Sub_Pages/Explore/Categories/AllCategories.dart

@ -19,7 +19,7 @@ class _CategoriesAllState extends State<CategoriesAll> {
automaticallyImplyLeading: true,
title: Text("Categories"),
),
body: StaggeredGridView.count(
body: StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(productCategories.length, (int index) {
return InkWell(
@ -33,12 +33,6 @@ class _CategoriesAllState extends State<CategoriesAll> {
child: buildCategory(context, productCategories.elementAt(index)),
);
}),
staggeredTiles: List.generate(
productCategories.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

9
lib/Pages/Sub_Pages/Explore/Categories/ExploreCategory.dart

@ -117,20 +117,13 @@ class _ExploreCategoryState extends State<ExploreCategory> {
),
);
} else {
return StaggeredGridView.count(
controller: _controller,
return StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return index % 2 == 0
? buildProducts(context, show.elementAt(index))
: buildProducts(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
);
}
}),

9
lib/Pages/Sub_Pages/Explore/ExploreBusiness.dart

@ -62,18 +62,11 @@ class _ExploreBusinessState extends State<ExploreBusiness> {
@override
Widget build(BuildContext context) {
return Container(
child: StaggeredGridView.count(
controller: _controller,
child: StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return buildBusiness(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

10
lib/Pages/Sub_Pages/Explore/ExploreProduct.dart

@ -60,20 +60,14 @@ class _ExploreProductState extends State<ExploreProduct> {
@override
Widget build(BuildContext context) {
return Container(
child: StaggeredGridView.count(
controller: _controller,
child: StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return index % 2 == 0
? buildProducts(context, show.elementAt(index))
: buildProducts(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

11
lib/Pages/Sub_Pages/Explore/Latest/AllLatest.dart

@ -55,20 +55,15 @@ class _NewArrivalsState extends State<NewArrivals> {
automaticallyImplyLeading: true,
title: Text("New Arrivals"),
),
body: StaggeredGridView.count(
controller: _controller,
body: StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return index % 2 == 0
? buildProducts(context, show.elementAt(index))
: buildProducts(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

10
lib/Pages/Sub_Pages/Explore/ML/FindProduct.dart

@ -197,20 +197,14 @@ class _MLFindProductState extends State<MLFindProduct> {
),
);
} else {
return StaggeredGridView.count(
controller: _controller,
return StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return index % 2 == 0
? buildProducts(context, show.elementAt(index))
: buildProducts(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
);
}
},

10
lib/Pages/Sub_Pages/Explore/Trending/AllTrending.dart

@ -55,20 +55,14 @@ class _TrendingAllState extends State<TrendingAll> {
automaticallyImplyLeading: true,
title: Text("Trending Products"),
),
body: StaggeredGridView.count(
controller: _controller,
body: StaggeredGrid.count(
crossAxisCount: 2,
children: List.generate(show.length, (int index) {
return index % 2 == 0
? buildProducts(context, show.elementAt(index))
: buildProducts(context, show.elementAt(index));
}),
staggeredTiles: List.generate(
show.length,
(int index) {
return StaggeredTile.fit(1);
},
),
),
);
}

21
lib/Pages/Sub_Pages/LandingPage/FinalProcess.dart

@ -63,7 +63,7 @@ class _FinalProcessState extends State<FinalProcess> {
if (client.statusCode == 200) {
newuser.firstname = firstname.text.trim();
newuser.lastname = surname.text.trim();
newuser.address = address.text.trim();
newuser.address = "NAN";
newuser.country = countryPrefix;
newuser.email = emailaddress.text.toString().trim();
Navigator.push(
@ -127,23 +127,14 @@ class _FinalProcessState extends State<FinalProcess> {
),
),
Container(
child: new Wrap(
direction: Axis.horizontal,
children: [
fineText(context, firstname, "Firstname"),
fineText(context, surname, "Lastname"),
],
),
child: fineText(context, firstname, "Firstname"),
),
SizedBox(height: MediaQuery.of(context).size.height * 0.02),
Container(
child: new Wrap(
direction: Axis.horizontal,
children: [
fineText(context, address, "Residential Address"),
fineText(context, emailaddress, "Email"),
],
),
child: fineText(context, surname, "Lastname"),
),
Container(
child: fineText(context, emailaddress, "Email"),
),
SizedBox(height: MediaQuery.of(context).size.height * 0.02),
Container(

22
lib/Pages/Sub_Pages/PersonalSub/Referral.dart

@ -24,18 +24,18 @@ class _ReferralsState extends State<Referrals> {
});
if (refLink == null) {
String uid = value.getString("id");
final ShortDynamicLink shortenedLink =
await DynamicLinkParameters.shortenUrl(
Uri.parse(dynamiclinkprefix +
'https://mobile.tesoapp.com/referral?referrer=' +
uid +
dynamiclinktrailing),
DynamicLinkParametersOptions(
shortDynamicLinkPathLength:
ShortDynamicLinkPathLength.unguessable),
);
// final ShortDynamicLink shortenedLink =
// await DynamicLinkParameters.shortenUrl(
// Uri.parse(dynamiclinkprefix +
// 'https://mobile.tesoapp.com/referral?referrer=' +
// uid +
// dynamiclinktrailing),
// DynamicLinkParametersOptions(
// shortDynamicLinkPathLength:
// ShortDynamicLinkPathLength.unguessable),
// );
setState(() {
refLink = shortenedLink.shortUrl.toString();
// refLink = shortenedLink.shortUrl.toString();
});
value.setString("referral", refLink);
}

2
lib/Pages/Sub_Pages/userProfile3P.dart

@ -414,7 +414,7 @@ class _UserProfileThirdPersonState extends State<UserProfileThirdPerson>
loading: loading,
user: widget.user,
posts: userProfile.posts != null
? Numeral(userProfile.posts.length).value().toString()
? Numeral(userProfile.posts.length).numeral.toString()
: "0",
friends: userProfile.friends,
following: userProfile.posts,

14
lib/Services/DynamicLinks.dart

@ -12,13 +12,13 @@ class DynamicLinkService {
// 3. Register a link callback to fire if the app is opened up from the background
// using a dynamic link.
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
// 3a. handle link that has been retrieved
_handleDeepLink(dynamicLink);
}, onError: (OnLinkErrorException e) async {
print('Link Failed: ${e.message}');
});
// FirebaseDynamicLinks.instance.onLink(
// onSuccess: (PendingDynamicLinkData dynamicLink) async {
// // 3a. handle link that has been retrieved
// _handleDeepLink(dynamicLink);
// }, onError: (OnLinkErrorException e) async {
// print('Link Failed: ${e.message}');
// });
}
void _handleDeepLink(PendingDynamicLinkData data) {

72
lib/firebase_options.dart

@ -0,0 +1,72 @@
// File generated by FlutterFire CLI.
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for web - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for macos - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyAHBguF6oqPEq7em1vLrh_NP2LoPuabe6o',
appId: '1:280510379185:android:b778de8dca1cf49219de90',
messagingSenderId: '280510379185',
projectId: 'teso-ghana',
databaseURL: 'https://teso-ghana-default-rtdb.firebaseio.com',
storageBucket: 'teso-ghana.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyCBDtZO2_Z5JjrNj1TocK6YAlk_wDbzZHs',
appId: '1:280510379185:ios:52af12a619d5443119de90',
messagingSenderId: '280510379185',
projectId: 'teso-ghana',
databaseURL: 'https://teso-ghana-default-rtdb.firebaseio.com',
storageBucket: 'teso-ghana.appspot.com',
androidClientId: '280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com',
iosClientId: '280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com',
iosBundleId: 'com.tesoapp',
);
}

5
lib/main.dart

@ -16,10 +16,13 @@ import 'package:teso/resetpassword.dart';
import 'package:teso/util/consts.dart';
import 'package:firebase_core/firebase_core.dart';
import 'Pages/splash.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await FlutterLibphonenumber().init();
// Initialize Firebase.
setupLocator();

1
lib/main_screen.dart

@ -606,6 +606,7 @@ class _MainScreensState extends State<MainScreens>
return GestureDetector(
onLongPress: () => {_scanQRCode()},
child: FloatingActionButton(
backgroundColor: tesoGold,
onPressed: () => print(""),
child: ImageIcon(
AssetImage("assets/images/rawLogo.png"),

232
lib/teso_fab.dart

@ -0,0 +1,232 @@
// import 'dart:math' as math;
// import 'package:flutter/material.dart';
// @immutable
// class ExpandableFab extends StatefulWidget {
// const ExpandableFab({
// super.key,
// this.initialOpen,
// required this.distance,
// required this.children,
// });
// final bool? initialOpen;
// final double distance;
// final List<Widget> children;
// @override
// _ExpandableFabState createState() => _ExpandableFabState();
// }
// class _ExpandableFabState extends State<ExpandableFab>
// with SingleTickerProviderStateMixin {
// late final AnimationController _controller;
// late final Animation<double> _expandAnimation;
// bool _open = false;
// @override
// void initState() {
// super.initState();
// _open = widget.initialOpen ?? false;
// _controller = AnimationController(
// value: _open ? 1.0 : 0.0,
// duration: const Duration(milliseconds: 250),
// vsync: this,
// );
// _expandAnimation = CurvedAnimation(
// curve: Curves.fastOutSlowIn,
// reverseCurve: Curves.easeOutQuad,
// parent: _controller,
// );
// }
// @override
// void dispose() {
// _controller.dispose();
// super.dispose();
// }
// void _toggle() {
// setState(() {
// _open = !_open;
// if (_open) {
// _controller.forward();
// } else {
// _controller.reverse();
// }
// });
// }
// @override
// Widget build(BuildContext context) {
// return SizedBox.expand(
// child: Stack(
// alignment: Alignment.bottomRight,
// clipBehavior: Clip.none,
// children: [
// _buildTapToCloseFab(),
// ..._buildExpandingActionButtons(),
// _buildTapToOpenFab(),
// ],
// ),
// );
// }
// Widget _buildTapToCloseFab() {
// return SizedBox(
// width: 56.0,
// height: 56.0,
// child: Center(
// child: Material(
// shape: const CircleBorder(),
// clipBehavior: Clip.antiAlias,
// elevation: 4.0,
// child: InkWell(
// onTap: _toggle,
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Icon(
// Icons.close,
// color: Theme.of(context).primaryColor,
// ),
// ),
// ),
// ),
// ),
// );
// }
// List<Widget> _buildExpandingActionButtons() {
// final children = <Widget>[];
// final count = widget.children.length;
// final step = 90.0 / (count - 1);
// for (var i = 0, angleInDegrees = 0.0;
// i < count;
// i++, angleInDegrees += step) {
// children.add(
// _ExpandingActionButton(
// directionInDegrees: angleInDegrees,
// maxDistance: widget.distance,
// progress: _expandAnimation,
// child: widget.children[i],
// ),
// );
// }
// return children;
// }
// Widget _buildTapToOpenFab() {
// return IgnorePointer(
// ignoring: _open,
// child: AnimatedContainer(
// transformAlignment: Alignment.center,
// transform: Matrix4.diagonal3Values(
// _open ? 0.7 : 1.0,
// _open ? 0.7 : 1.0,
// 1.0,
// ),
// duration: const Duration(milliseconds: 250),
// curve: const Interval(0.0, 0.5, curve: Curves.easeOut),
// child: AnimatedOpacity(
// opacity: _open ? 0.0 : 1.0,
// curve: const Interval(0.25, 1.0, curve: Curves.easeInOut),
// duration: const Duration(milliseconds: 250),
// child: FloatingActionButton(
// onPressed: _toggle,
// child: const Icon(Icons.create),
// ),
// ),
// ),
// );
// }
// }
// @immutable
// class _ExpandingActionButton extends StatelessWidget {
// const _ExpandingActionButton({
// required this.directionInDegrees,
// required this.maxDistance,
// required this.progress,
// required this.child,
// });
// final double directionInDegrees;
// final double maxDistance;
// final Animation<double> progress;
// final Widget child;
// @override
// Widget build(BuildContext context) {
// return AnimatedBuilder(
// animation: progress,
// builder: (context, child) {
// final offset = Offset.fromDirection(
// directionInDegrees * (math.pi / 180.0),
// progress.value * maxDistance,
// );
// return Positioned(
// right: 4.0 + offset.dx,
// bottom: 4.0 + offset.dy,
// child: Transform.rotate(
// angle: (1.0 - progress.value) * math.pi / 2,
// child: child!,
// ),
// );
// },
// child: FadeTransition(
// opacity: progress,
// child: child,
// ),
// );
// }
// }
// @immutable
// class ActionButton extends StatelessWidget {
// const ActionButton({
// super.key,
// this.onPressed,
// required this.icon,
// });
// final VoidCallback? onPressed;
// final Widget icon;
// @override
// Widget build(BuildContext context) {
// final theme = Theme.of(context);
// return Material(
// shape: const CircleBorder(),
// clipBehavior: Clip.antiAlias,
// color: theme.colorScheme.secondary,
// elevation: 4.0,
// child: IconButton(
// onPressed: onPressed,
// icon: icon,
// color: theme.colorScheme.secondary,
// ),
// );
// }
// }
// @immutable
// class FakeItem extends StatelessWidget {
// const FakeItem({
// super.key,
// required this.isBig,
// });
// final bool isBig;
// @override
// Widget build(BuildContext context) {
// return Container(
// margin: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 24.0),
// height: isBig ? 128.0 : 36.0,
// decoration: BoxDecoration(
// borderRadius: const BorderRadius.all(Radius.circular(8.0)),
// color: Colors.grey.shade300,
// ),
// );
// }
// }

32
pubspec.yaml

@ -13,21 +13,21 @@ dependencies:
cached_network_image: ^3.1.0+1
camera: ^0.9.4+3
circular_countdown_timer: ^0.2.0
cloud_firestore: ^3.1.0
cloud_firestore: ^3.1.15
connectivity: ^3.0.6
country_list_pick: ^1.0.1+5
cupertino_icons: ^1.0.4
dio: ^4.0.1
equatable: ^2.0.3
firebase_analytics: ^8.3.4
firebase_analytics: ^9.1.8
firebase_auth: ^3.2.0
firebase_core: ^1.10.0
firebase_core: ^1.17.0
firebase_crashlytics: ^2.3.0
firebase_dynamic_links: ^3.0.1
firebase_dynamic_links: ^4.2.3
firebase_messaging: ^11.1.0
flutter:
sdk: flutter
flutter_bloc: ^7.3.2
flutter_bloc: ^8.0.1
flutter_cache_manager: ^3.1.3
flutter_countdown_timer: ^4.1.0
flutter_datetime_picker: ^1.5.1
@ -38,40 +38,40 @@ dependencies:
flutter_polyline_points: ^1.0.0
flutter_qrcode_scanner: ^0.0.7
flutter_shapes: ^0.3.0
flutter_staggered_grid_view: ^0.4.1
flutter_staggered_grid_view: ^0.6.1
flutter_webview_plugin: ^0.4.0
geolocator: ^7.7.1
geolocator: ^8.2.1
get_it: ^7.2.0
google_maps_flutter: ^2.1.0
google_ml_vision: ^0.0.7
google_sign_in: ^5.2.1
http: ^0.13.4
image_cropper: ^1.4.1
image_cropper: ^2.0.3
image_picker: ^0.8.4+4
inview_notifier_list: ^2.0.0
inview_notifier_list: ^3.0.0
intl_phone_number_input: ^0.7.0+2
jiffy: ^4.1.0
jiffy: ^5.0.0
loading_indicator: ^3.0.2
location: ^4.3.0
no_context_navigation: ^2.1.2
numeral: ^1.2.5
numeral: ^2.0.1
page_transition: ^2.0.4
path: ^1.8.0
path_provider: ^2.0.6
pedantic: ^1.11.1
percent_indicator: ^3.4.0
permission_handler: ^8.2.6
percent_indicator: ^4.2.2
permission_handler: ^9.2.0
progress_indicators: ^1.0.0
provider: ^6.0.1
pull_to_refresh: ^2.0.0
rxdart: ^0.27.2
share_plus: ^3.0.4
share_plus: ^4.0.4
shared_preferences: ^2.0.8
sign_in_with_apple: ^3.0.0
sign_in_with_apple: ^4.0.0
crypto: ^3.0.1
time_elapsed: ^0.2.6
url_launcher: ^6.0.12
webview_flutter: ^2.3.0
webview_flutter: ^3.0.4
flutter_icons:
image_path: "assets/images/tesoCouponInsignia.png"

Loading…
Cancel
Save