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. 47
      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. 221
      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_info": {
"project_number": "280510379185", "project_number": "280510379185",
"firebase_url": "https://teso-ghana-default-rtdb.firebaseio.com", "firebase_url": "https://teso-ghana-default-rtdb.firebaseio.com",
"project_id": "teso-ghana", "project_id": "teso-ghana",
"storage_bucket": "teso-ghana.appspot.com" "storage_bucket": "teso-ghana.appspot.com"
}, },
"client": [{ "client": [
"client_info": { {
"mobilesdk_app_id": "1:280510379185:android:b778de8dca1cf49219de90", "client_info": {
"android_client_info": { "mobilesdk_app_id": "1:280510379185:android:b778de8dca1cf49219de90",
"package_name": "com.sparentechBacware.teso" "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_id": "280510379185-87k85sksrd30mu9fjgfmacb3bkcjnmdq.apps.googleusercontent.com",
"client_type": 1, "client_type": 1,
"android_info": { "android_info": {
"package_name": "com.sparentechBacware.teso", "package_name": "com.sparentechBacware.teso",
"certificate_hash": "40b68890dd51d72454ccdc7289623c4d56273248" "certificate_hash": "4f655cf94cd94864838475611b711c2528e33601"
} }
}, },
{ {
"client_id": "280510379185-87k85sksrd30mu9fjgfmacb3bkcjnmdq.apps.googleusercontent.com", "client_id": "280510379185-ac7qjglm9cct9u0diqrns6om8t2mb9ug.apps.googleusercontent.com",
"client_type": 1, "client_type": 1,
"android_info": { "android_info": {
"package_name": "com.sparentechBacware.teso", "package_name": "com.sparentechBacware.teso",
"certificate_hash": "4f655cf94cd94864838475611b711c2528e33601" "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_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_type": 1, "client_type": 3
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "063304c2da41f90c824fad163b5ad481edf6db11"
}
}, },
{ {
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com", "client_id": "280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com",
"client_type": 3 "client_type": 2,
} "ios_info": {
], "bundle_id": "com.tesoapp",
"api_key": [{ "app_store_id": "1573175173"
"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"
}
}
]
} }
]
} }
}], }
"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> <key>CFBundleVersion</key>
<string>1.0</string> <string>1.0</string>
<key>MinimumOSVersion</key> <key>MinimumOSVersion</key>
<string>8.0</string> <string>9.0</string>
</dict> </dict>
</plist> </plist>

47
ios/Podfile

@ -1,5 +1,8 @@
# Uncomment this line to define a global platform for your project
platform :ios, '12.0' 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' ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', { project 'Runner', {
@ -13,7 +16,7 @@ def flutter_root
unless File.exist?(generated_xcode_build_settings_path) 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" raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end end
File.foreach(generated_xcode_build_settings_path) do |line| File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/) matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches return matches[1].strip if matches
@ -25,45 +28,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
flutter_ios_podfile_setup 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 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_frameworks!
use_modular_headers! use_modular_headers!
@ -75,6 +40,6 @@ post_install do |installer|
flutter_additional_ios_build_settings(target) flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config| target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end 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 */; }; 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 */; };
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 */; }; DE7D3950774AF2253178F202 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29578401A5FB3088ABB7635B /* Pods_Runner.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -45,6 +46,7 @@
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>"; };
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>"; }; 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>"; }; 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 */ /* End PBXFileReference section */
@ -112,6 +114,7 @@
97C146F01CF9000F007C117D /* Runner */ = { 97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
98FE50F7283B030D00F3547E /* GoogleService-Info.plist */,
97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -140,6 +143,7 @@
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
5E474C80B70EC554E7278F77 /* [CP] Embed Pods Frameworks */, 5E474C80B70EC554E7278F77 /* [CP] Embed Pods Frameworks */,
1065E7A3A2329C46618FAF60 /* [CP] Copy Pods Resources */, 1065E7A3A2329C46618FAF60 /* [CP] Copy Pods Resources */,
8B6BAB971734FC2758E568B5 /* [firebase_crashlytics] Crashlytics Upload Symbols */,
); );
buildRules = ( buildRules = (
); );
@ -156,7 +160,7 @@
97C146E61CF9000F007C117D /* Project object */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1240; LastUpgradeCheck = 1300;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
@ -190,6 +194,7 @@
files = ( files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
98FE50F8283B030E00F3547E /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
); );
@ -268,6 +273,26 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0; 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 */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -382,6 +407,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp; PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -514,6 +540,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp; PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -538,6 +565,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp; PRODUCT_BUNDLE_IDENTIFIER = com.tesoapp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 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"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1240" LastUpgradeVersion = "1300"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

BIN
ios/Runner/.DS_Store

Binary file not shown.

4
ios/Runner/AppDelegate.swift

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

2
ios/Runner/GoogleService-Info.plist

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

221
ios/Runner/Info.plist

@ -1,127 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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>BGTaskSchedulerPermittedIdentifiers</key> <key>BGTaskSchedulerPermittedIdentifiers</key>
<array> <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>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> </array>
<string>6.0</string> <key>CADisableMinimumFrameDurationOnPhone</key>
<key>CFBundleName</key> <true/>
<string>teso</string> <key>CFBundleDevelopmentRegion</key>
<key>CFBundlePackageType</key> <string>$(DEVELOPMENT_LANGUAGE)</string>
<string>APPL</string> <key>CFBundleDisplayName</key>
<key>CFBundleShortVersionString</key> <string>Teso</string>
<string>$(MARKETING_VERSION)</string> <key>CFBundleExecutable</key>
<key>CFBundleSignature</key> <string>$(EXECUTABLE_NAME)</string>
<string>????</string> <key>CFBundleIdentifier</key>
<key>CFBundleURLTypes</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<array> <key>CFBundleInfoDictionaryVersion</key>
<dict> <string>6.0</string>
<key>CFBundleTypeRole</key> <key>CFBundleName</key>
<string>Editor</string> <string>teso</string>
<key>CFBundleURLSchemes</key> <key>CFBundlePackageType</key>
<array> <string>APPL</string>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string> <key>CFBundleShortVersionString</key>
<string>fb1759156777594606</string> <string>$(MARKETING_VERSION)</string>
</array> <key>CFBundleSignature</key>
</dict> <string>????</string>
</array> <key>CFBundleURLTypes</key>
<key>CFBundleVersion</key> <array>
<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>
<dict> <dict>
<key>NSAllowsArbitraryLoads</key> <key>CFBundleTypeRole</key>
<true /> <string>Editor</string>
<key>NSAllowsArbitraryLoadsInWebContent</key> <key>CFBundleURLSchemes</key>
<true /> <array>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<string>fb1759156777594606</string>
</array>
</dict> </dict>
<key>NSCameraUsageDescription</key> </array>
<string>This app needs camera access to scan QR codes and capture photos</string> <key>CFBundleVersion</key>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>$(CURRENT_PROJECT_VERSION)</string>
<string>Teso needs access to location.</string> <key>FUAllFilesUploadedMessage</key>
<key>NSLocationAlwaysUsageDescription</key> <string>Posts successfully published on Teso</string>
<string>Teso needs access to location.</string> <key>FUMaximumConnectionsPerHost</key>
<key>NSLocationWhenInUseUsageDescription</key> <integer>5</integer>
<string>Teso needs access to location.</string> <key>FUMaximumUploadOperation</key>
<key>NSMicrophoneUsageDescription</key> <integer>5</integer>
<string>Allow access to microphone</string> <key>FUTimeoutInSeconds</key>
<key>NSPhotoLibraryAddUsageDescription</key> <integer>3600</integer>
<string>Teso needs permission to write videos and photos</string> <key>LSApplicationQueriesSchemes</key>
<key>NSPhotoLibraryUsageDescription</key> <array>
<string>Teso needs permission to select videos and photos</string> <string>https</string>
<key>UIBackgroundModes</key> <string>http</string>
<array> </array>
<string>fetch</string> <key>LSRequiresIPhoneOS</key>
<string>location</string> <true/>
<string>processing</string> <key>NSAppTransportSecurity</key>
<string>remote-notification</string> <dict>
</array> <key>NSAllowsArbitraryLoads</key>
<key>UILaunchStoryboardName</key> <true/>
<string>LaunchScreen</string> <key>NSAllowsArbitraryLoadsInWebContent</key>
<key>UIMainStoryboardFile</key> <true/>
<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>
</dict> </dict>
</plist> <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(); Provider.of<UserProvider>(context, listen: false).getUserInformation();
payload.loadID = "TESN000"; payload.loadID = "TESN000";
payload.load1 = data["orderID"]; payload.load1 = data["orderID"];
await closeWebView(); await closeInAppWebView();
return payload; return payload;
break; break;
default: default:

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

@ -71,7 +71,7 @@ buildHead(
Container( Container(
child: Center( child: Center(
child: Text( child: Text(
Numeral(products).value().toString(), Numeral(products).numeral.toString(),
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ),
), ),
@ -90,7 +90,7 @@ buildHead(
Container( Container(
child: Center( child: Center(
child: Text( child: Text(
Numeral(subscribers).value().toString(), Numeral(subscribers).numeral.toString(),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ),
@ -110,7 +110,7 @@ buildHead(
Container( Container(
child: Center( child: Center(
child: Text( child: Text(
Numeral(coupons).value().toString(), Numeral(coupons).numeral.toString(),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.bold), 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 { Future<Null> _cropImage() async {
File croppedFile = await ImageCropper.cropImage( ImageCropper imageCropper = new ImageCropper();
CroppedFile croppedFile = await imageCropper.cropImage(
sourcePath: _image.path, sourcePath: _image.path,
cropStyle: CropStyle.circle, cropStyle: CropStyle.circle,
aspectRatioPresets: Platform.isAndroid aspectRatioPresets: Platform.isAndroid
? [CropAspectRatioPreset.original] ? [CropAspectRatioPreset.original]
: [CropAspectRatioPreset.original], : [CropAspectRatioPreset.original]);
androidUiSettings: AndroidUiSettings( // [
toolbarTitle: 'Teso Profile Picture', // AndroidUiSettings(
toolbarColor: Theme.of(context).colorScheme.secondary, // toolbarTitle: 'Teso Profile Picture',
toolbarWidgetColor: Colors.white, // toolbarColor: Theme.of(context).colorScheme.secondary,
initAspectRatio: CropAspectRatioPreset.original, // toolbarWidgetColor: Colors.white,
lockAspectRatio: false), // initAspectRatio: CropAspectRatioPreset.original,
iosUiSettings: IOSUiSettings( // lockAspectRatio: false),
title: 'Teso Profile Picture', // iosUiSettings: IOSUiSettings(
)); // title: 'Teso Profile Picture',
// ))];
if (croppedFile != null) { if (croppedFile != null) {
setState(() { setState(() {
_image = croppedFile; // _image = croppedFile.;
state = AppState.cropped; state = AppState.cropped;
imageAvailable = true; imageAvailable = true;
}); });
@ -421,14 +423,14 @@ class _EditProfileState extends State<EditProfile> {
padding: const EdgeInsets.symmetric(horizontal: 20.0), padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Divider(), child: Divider(),
), ),
new ListTile( // new ListTile(
title: // title:
buildInputContainer(context, address, "Address", true), // buildInputContainer(context, address, "Address", true),
), // ),
Padding( // Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0), // padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Divider(), // child: Divider(),
), // ),
], ],
), ),
), ),

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

@ -64,8 +64,8 @@ class _BusinessProductsState extends State<BusinessProducts> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
child: StaggeredGridView.count( child: StaggeredGrid.count(
controller: _controller, // controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
show.elementAt(index).businessID = widget.shopName; 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.5)
: buildItems(context, show.elementAt(index), 0.35); : 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:flutter/material.dart';
import 'package:teso/Classes/TesoShop.dart'; import 'package:teso/Classes/TesoShop.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:page_transition/page_transition.dart'; import 'package:page_transition/page_transition.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'Business/BusinessProfile.dart'; import 'Business/BusinessProfile.dart';
buildShopDetails(BuildContext context, TesoShop shop, Function navigate) { buildShopDetails(BuildContext context, TesoShop shop, Function navigate) {
@ -38,8 +37,8 @@ buildShopDetails(BuildContext context, TesoShop shop, Function navigate) {
), ),
new InkWell( new InkWell(
onTap: () async { onTap: () async {
if (await canLaunch("tel:" + shop.shopPhone)) { if (await canLaunchUrlString("tel:" + shop.shopPhone)) {
await launch("tel:" + shop.shopPhone); await launchUrlString("tel:" + shop.shopPhone);
} else { } else {
throw 'call not possible'; 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/Pages/PageWidgets/CoinPurchase/PayGold.dart';
import 'package:teso/providers/pageAnimations.dart'; import 'package:teso/providers/pageAnimations.dart';
import 'package:teso/util/consts.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'; import 'PurchaseingSilver.dart';
@ -160,11 +160,10 @@ class _SilverPurchaseFixedState extends State<SilverPurchaseFixed> {
} else { } else {
String _url = paymentServer + String _url = paymentServer +
"purchasesilver/user=${widget.user.userGUID}/amount=${widget.amount}/cointype=TESCNS01"; "purchasesilver/user=${widget.user.userGUID}/amount=${widget.amount}/cointype=TESCNS01";
await canLaunch(_url) await canLaunchUrlString(_url)
? await launch( ? await launchUrlString(
_url, _url,
enableJavaScript: true, mode: LaunchMode.platformDefault,
forceWebView: true,
) )
: throw 'Could not launch $_url'; : 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, automaticallyImplyLeading: true,
title: Text("Categories"), title: Text("Categories"),
), ),
body: StaggeredGridView.count( body: StaggeredGrid.count(
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(productCategories.length, (int index) { children: List.generate(productCategories.length, (int index) {
return InkWell( return InkWell(
@ -33,12 +33,6 @@ class _CategoriesAllState extends State<CategoriesAll> {
child: buildCategory(context, productCategories.elementAt(index)), 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 { } else {
return StaggeredGridView.count( return StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return index % 2 == 0 return index % 2 == 0
? buildProducts(context, show.elementAt(index)) ? buildProducts(context, show.elementAt(index))
: 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
child: StaggeredGridView.count( child: StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return buildBusiness(context, show.elementAt(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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
child: StaggeredGridView.count( child: StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return index % 2 == 0 return index % 2 == 0
? buildProducts(context, show.elementAt(index)) ? buildProducts(context, show.elementAt(index))
: 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, automaticallyImplyLeading: true,
title: Text("New Arrivals"), title: Text("New Arrivals"),
), ),
body: StaggeredGridView.count( body: StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return index % 2 == 0 return index % 2 == 0
? buildProducts(context, show.elementAt(index)) ? buildProducts(context, show.elementAt(index))
: 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 { } else {
return StaggeredGridView.count( return StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return index % 2 == 0 return index % 2 == 0
? buildProducts(context, show.elementAt(index)) ? buildProducts(context, show.elementAt(index))
: 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, automaticallyImplyLeading: true,
title: Text("Trending Products"), title: Text("Trending Products"),
), ),
body: StaggeredGridView.count( body: StaggeredGrid.count(
controller: _controller,
crossAxisCount: 2, crossAxisCount: 2,
children: List.generate(show.length, (int index) { children: List.generate(show.length, (int index) {
return index % 2 == 0 return index % 2 == 0
? buildProducts(context, show.elementAt(index)) ? buildProducts(context, show.elementAt(index))
: 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) { if (client.statusCode == 200) {
newuser.firstname = firstname.text.trim(); newuser.firstname = firstname.text.trim();
newuser.lastname = surname.text.trim(); newuser.lastname = surname.text.trim();
newuser.address = address.text.trim(); newuser.address = "NAN";
newuser.country = countryPrefix; newuser.country = countryPrefix;
newuser.email = emailaddress.text.toString().trim(); newuser.email = emailaddress.text.toString().trim();
Navigator.push( Navigator.push(
@ -127,23 +127,14 @@ class _FinalProcessState extends State<FinalProcess> {
), ),
), ),
Container( Container(
child: new Wrap( child: fineText(context, firstname, "Firstname"),
direction: Axis.horizontal,
children: [
fineText(context, firstname, "Firstname"),
fineText(context, surname, "Lastname"),
],
),
), ),
SizedBox(height: MediaQuery.of(context).size.height * 0.02), SizedBox(height: MediaQuery.of(context).size.height * 0.02),
Container( Container(
child: new Wrap( child: fineText(context, surname, "Lastname"),
direction: Axis.horizontal, ),
children: [ Container(
fineText(context, address, "Residential Address"), child: fineText(context, emailaddress, "Email"),
fineText(context, emailaddress, "Email"),
],
),
), ),
SizedBox(height: MediaQuery.of(context).size.height * 0.02), SizedBox(height: MediaQuery.of(context).size.height * 0.02),
Container( Container(

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

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

2
lib/Pages/Sub_Pages/userProfile3P.dart

@ -414,7 +414,7 @@ class _UserProfileThirdPersonState extends State<UserProfileThirdPerson>
loading: loading, loading: loading,
user: widget.user, user: widget.user,
posts: userProfile.posts != null posts: userProfile.posts != null
? Numeral(userProfile.posts.length).value().toString() ? Numeral(userProfile.posts.length).numeral.toString()
: "0", : "0",
friends: userProfile.friends, friends: userProfile.friends,
following: userProfile.posts, 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 // 3. Register a link callback to fire if the app is opened up from the background
// using a dynamic link. // using a dynamic link.
FirebaseDynamicLinks.instance.onLink( // FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async { // onSuccess: (PendingDynamicLinkData dynamicLink) async {
// 3a. handle link that has been retrieved // // 3a. handle link that has been retrieved
_handleDeepLink(dynamicLink); // _handleDeepLink(dynamicLink);
}, onError: (OnLinkErrorException e) async { // }, onError: (OnLinkErrorException e) async {
print('Link Failed: ${e.message}'); // print('Link Failed: ${e.message}');
}); // });
} }
void _handleDeepLink(PendingDynamicLinkData data) { 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:teso/util/consts.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'Pages/splash.dart'; import 'Pages/splash.dart';
import 'firebase_options.dart';
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(); await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await FlutterLibphonenumber().init(); await FlutterLibphonenumber().init();
// Initialize Firebase. // Initialize Firebase.
setupLocator(); setupLocator();

1
lib/main_screen.dart

@ -606,6 +606,7 @@ class _MainScreensState extends State<MainScreens>
return GestureDetector( return GestureDetector(
onLongPress: () => {_scanQRCode()}, onLongPress: () => {_scanQRCode()},
child: FloatingActionButton( child: FloatingActionButton(
backgroundColor: tesoGold,
onPressed: () => print(""), onPressed: () => print(""),
child: ImageIcon( child: ImageIcon(
AssetImage("assets/images/rawLogo.png"), 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 cached_network_image: ^3.1.0+1
camera: ^0.9.4+3 camera: ^0.9.4+3
circular_countdown_timer: ^0.2.0 circular_countdown_timer: ^0.2.0
cloud_firestore: ^3.1.0 cloud_firestore: ^3.1.15
connectivity: ^3.0.6 connectivity: ^3.0.6
country_list_pick: ^1.0.1+5 country_list_pick: ^1.0.1+5
cupertino_icons: ^1.0.4 cupertino_icons: ^1.0.4
dio: ^4.0.1 dio: ^4.0.1
equatable: ^2.0.3 equatable: ^2.0.3
firebase_analytics: ^8.3.4 firebase_analytics: ^9.1.8
firebase_auth: ^3.2.0 firebase_auth: ^3.2.0
firebase_core: ^1.10.0 firebase_core: ^1.17.0
firebase_crashlytics: ^2.3.0 firebase_crashlytics: ^2.3.0
firebase_dynamic_links: ^3.0.1 firebase_dynamic_links: ^4.2.3
firebase_messaging: ^11.1.0 firebase_messaging: ^11.1.0
flutter: flutter:
sdk: flutter sdk: flutter
flutter_bloc: ^7.3.2 flutter_bloc: ^8.0.1
flutter_cache_manager: ^3.1.3 flutter_cache_manager: ^3.1.3
flutter_countdown_timer: ^4.1.0 flutter_countdown_timer: ^4.1.0
flutter_datetime_picker: ^1.5.1 flutter_datetime_picker: ^1.5.1
@ -38,40 +38,40 @@ dependencies:
flutter_polyline_points: ^1.0.0 flutter_polyline_points: ^1.0.0
flutter_qrcode_scanner: ^0.0.7 flutter_qrcode_scanner: ^0.0.7
flutter_shapes: ^0.3.0 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 flutter_webview_plugin: ^0.4.0
geolocator: ^7.7.1 geolocator: ^8.2.1
get_it: ^7.2.0 get_it: ^7.2.0
google_maps_flutter: ^2.1.0 google_maps_flutter: ^2.1.0
google_ml_vision: ^0.0.7 google_ml_vision: ^0.0.7
google_sign_in: ^5.2.1 google_sign_in: ^5.2.1
http: ^0.13.4 http: ^0.13.4
image_cropper: ^1.4.1 image_cropper: ^2.0.3
image_picker: ^0.8.4+4 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 intl_phone_number_input: ^0.7.0+2
jiffy: ^4.1.0 jiffy: ^5.0.0
loading_indicator: ^3.0.2 loading_indicator: ^3.0.2
location: ^4.3.0 location: ^4.3.0
no_context_navigation: ^2.1.2 no_context_navigation: ^2.1.2
numeral: ^1.2.5 numeral: ^2.0.1
page_transition: ^2.0.4 page_transition: ^2.0.4
path: ^1.8.0 path: ^1.8.0
path_provider: ^2.0.6 path_provider: ^2.0.6
pedantic: ^1.11.1 pedantic: ^1.11.1
percent_indicator: ^3.4.0 percent_indicator: ^4.2.2
permission_handler: ^8.2.6 permission_handler: ^9.2.0
progress_indicators: ^1.0.0 progress_indicators: ^1.0.0
provider: ^6.0.1 provider: ^6.0.1
pull_to_refresh: ^2.0.0 pull_to_refresh: ^2.0.0
rxdart: ^0.27.2 rxdart: ^0.27.2
share_plus: ^3.0.4 share_plus: ^4.0.4
shared_preferences: ^2.0.8 shared_preferences: ^2.0.8
sign_in_with_apple: ^3.0.0 sign_in_with_apple: ^4.0.0
crypto: ^3.0.1 crypto: ^3.0.1
time_elapsed: ^0.2.6 time_elapsed: ^0.2.6
url_launcher: ^6.0.12 url_launcher: ^6.0.12
webview_flutter: ^2.3.0 webview_flutter: ^3.0.4
flutter_icons: flutter_icons:
image_path: "assets/images/tesoCouponInsignia.png" image_path: "assets/images/tesoCouponInsignia.png"

Loading…
Cancel
Save