Browse Source

After null-safety barely stable

teso_v2
Benjamin Arhen 2 years ago
parent
commit
26277765db
  1. BIN
      .DS_Store
  2. 37
      android/app/google-services.json
  3. BIN
      assets/.DS_Store
  4. BIN
      assets/images/.DS_Store
  5. 1
      assets/images/coupon.svg
  6. 1
      assets/images/search.svg
  7. 6
      ios/Podfile
  8. 217
      ios/Podfile.lock
  9. 8
      ios/Runner.xcodeproj/project.pbxproj
  10. BIN
      ios/Runner/.DS_Store
  11. 13
      ios/Runner/Base.lproj/Main.storyboard
  12. 18
      ios/Runner/GoogleService-Info.plist
  13. 1
      ios/Runner/Info.plist
  14. 38
      ios/Runner/ProdGoogleService-Info.plist
  15. 6
      ios/firebase_app_id_file.json
  16. 8
      lib/Classes/API Clasess/BusinessProfile.dart
  17. 6
      lib/Classes/API Clasess/CampAd.dart
  18. 16
      lib/Classes/API Clasess/Campaign.dart
  19. 10
      lib/Classes/API Clasess/CommentsPost.dart
  20. 32
      lib/Classes/API Clasess/CouponDetails.dart
  21. 24
      lib/Classes/API Clasess/CouponHead.dart
  22. 12
      lib/Classes/API Clasess/Desire.dart
  23. 4
      lib/Classes/API Clasess/ExploreObject.dart
  24. 20
      lib/Classes/API Clasess/FacebookUser.dart
  25. 20
      lib/Classes/API Clasess/GoogleUser.dart
  26. 18
      lib/Classes/API Clasess/Post.dart
  27. 8
      lib/Classes/API Clasess/PostFav.dart
  28. 10
      lib/Classes/API Clasess/PostUpload.dart
  29. 14
      lib/Classes/API Clasess/PostedAd.dart
  30. 4
      lib/Classes/API Clasess/PostionAP.dart
  31. 14
      lib/Classes/API Clasess/Product.dart
  32. 28
      lib/Classes/API Clasess/ProximityCoupon.dart
  33. 6
      lib/Classes/API Clasess/ReferralClass.dart
  34. 6
      lib/Classes/API Clasess/Registrar.dart
  35. 6
      lib/Classes/API Clasess/ResetClass.dart
  36. 6
      lib/Classes/API Clasess/SilverPurchaseRequest.dart
  37. 28
      lib/Classes/API Clasess/TesoBusinessDetail.dart
  38. 26
      lib/Classes/API Clasess/TesoUserDetail.dart
  39. 16
      lib/Classes/API Clasess/ThirdPerson.dart
  40. 6
      lib/Classes/API Clasess/TokenHandler.dart
  41. 20
      lib/Classes/API Clasess/TwitterUser.dart
  42. 12
      lib/Classes/API Clasess/UserAuth.dart
  43. 6
      lib/Classes/API Clasess/UserFavCategory.dart
  44. 6
      lib/Classes/API Clasess/UserFinance.dart
  45. 10
      lib/Classes/ChatMessage.dart
  46. 4
      lib/Classes/ColorFilters.dart
  47. 2
      lib/Classes/Connection.dart
  48. 14
      lib/Classes/Firebase/Comments.dart
  49. 22
      lib/Classes/Firebase/Posts.dart
  50. 14
      lib/Classes/NotificationSpliter.dart
  51. 22
      lib/Classes/Payload.dart
  52. 16
      lib/Classes/Product.dart
  53. 6
      lib/Classes/QRClass.dart
  54. 10
      lib/Classes/ReportedContent.dart
  55. 26
      lib/Classes/TesoShop.dart
  56. 34
      lib/Classes/TesoUser.dart
  57. 6
      lib/Classes/TextE.dart
  58. 6
      lib/Classes/categories.dart
  59. 14
      lib/Classes/customLoginButton.dart
  60. 12
      lib/Classes/customTesoButton.dart
  61. 18
      lib/Classes/friend.dart
  62. 18
      lib/Classes/inbox.dart
  63. 24
      lib/Notifications/NotificationPlugin.dart
  64. 76
      lib/Pages/BusinessLocator.dart
  65. 10
      lib/Pages/DesireComeTrue.dart
  66. 4
      lib/Pages/LandingPage.dart
  67. 14
      lib/Pages/PageWidgets/Alerts/AlertTile.dart
  68. 10
      lib/Pages/PageWidgets/Alerts/Redeemable.dart
  69. 2
      lib/Pages/PageWidgets/Alerts/Refund.dart
  70. 10
      lib/Pages/PageWidgets/Alerts/header.dart
  71. 14
      lib/Pages/PageWidgets/Alerts/personalizedCoupon.dart
  72. 10
      lib/Pages/PageWidgets/Alerts/post.dart
  73. 18
      lib/Pages/PageWidgets/Alerts/requestTile.dart
  74. 20
      lib/Pages/PageWidgets/BusinessProfile/BusinessHead.dart
  75. 6
      lib/Pages/PageWidgets/BusinessProfile/BusinessItems.dart
  76. 6
      lib/Pages/PageWidgets/ChatScreen/header.dart
  77. 4
      lib/Pages/PageWidgets/ChatScreen/recipient.dart
  78. 4
      lib/Pages/PageWidgets/ChatScreen/sender.dart
  79. 2
      lib/Pages/PageWidgets/CoinPurchase/AmountInput.dart
  80. 4
      lib/Pages/PageWidgets/CoinPurchase/MomoType.dart
  81. 2
      lib/Pages/PageWidgets/CoinPurchase/PayGold.dart
  82. 2
      lib/Pages/PageWidgets/CoinPurchase/SilverAmountInput.dart
  83. 10
      lib/Pages/PageWidgets/CoinPurchase/SilverPurchase.dart
  84. 2
      lib/Pages/PageWidgets/CoinPurchase/phonenumber.dart
  85. 2
      lib/Pages/PageWidgets/CoinPurchase/selector.dart
  86. 14
      lib/Pages/PageWidgets/Coupons/GiftFriend.dart
  87. 32
      lib/Pages/PageWidgets/Coupons/mycoupons.dart
  88. 22
      lib/Pages/PageWidgets/Coupons/personalizedDiscount.dart
  89. 10
      lib/Pages/PageWidgets/Coupons/personalizedFreebie.dart
  90. 48
      lib/Pages/PageWidgets/CouponsList/activeCoupon.dart
  91. 18
      lib/Pages/PageWidgets/CouponsList/activeFreebieCoupon.dart
  92. 4
      lib/Pages/PageWidgets/DesireComeTrue/DesireTile.dart
  93. 26
      lib/Pages/PageWidgets/DesireComeTrue/DesiredItem.dart
  94. 8
      lib/Pages/PageWidgets/Editors/SampleThumbnail.dart
  95. 10
      lib/Pages/PageWidgets/Explore/business.dart
  96. 4
      lib/Pages/PageWidgets/Explore/categoriesTile.dart
  97. 2
      lib/Pages/PageWidgets/Explore/popular.dart
  98. 2
      lib/Pages/PageWidgets/Explore/products.dart
  99. 2
      lib/Pages/PageWidgets/Explore/trending.dart
  100. 8
      lib/Pages/PageWidgets/Friends/friendTile.dart

BIN
.DS_Store

Binary file not shown.

37
android/app/google-services.json

@ -1,62 +1,45 @@
{
"project_info": {
"project_number": "280510379185",
"firebase_url": "https://teso-ghana-default-rtdb.firebaseio.com",
"project_id": "teso-ghana",
"storage_bucket": "teso-ghana.appspot.com"
"project_number": "675860686596",
"project_id": "teso-test-6fc81",
"storage_bucket": "teso-test-6fc81.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:280510379185:android:b778de8dca1cf49219de90",
"mobilesdk_app_id": "1:675860686596:android:8522b46df172af41cd9251",
"android_client_info": {
"package_name": "com.sparentechBacware.teso"
}
},
"oauth_client": [
{
"client_id": "280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com",
"client_id": "675860686596-in4piqob6d8nj42nguh06abpdrrhai0f.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.sparentechBacware.teso",
"certificate_hash": "40b68890dd51d72454ccdc7289623c4d56273248"
"certificate_hash": "b50b0b74dfcde0a02336f00eae49428a517551b2"
}
},
{
"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_id": "675860686596-n32ta36ndmugfm1jj61mu2p1v197a1nn.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHBguF6oqPEq7em1vLrh_NP2LoPuabe6o"
"current_key": "AIzaSyDt05opA09hr9Y1pysllCsEE_6dT4CrhRM"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "280510379185-58chj1fi4pts4p7p7sieq16miapvtepi.apps.googleusercontent.com",
"client_id": "675860686596-n32ta36ndmugfm1jj61mu2p1v197a1nn.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com",
"client_id": "675860686596-8dsd5qf42n1gej04f2m2rmt27neft8vg.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.tesoapp",

BIN
assets/.DS_Store

Binary file not shown.

BIN
assets/images/.DS_Store

Binary file not shown.

1
assets/images/coupon.svg

@ -0,0 +1 @@
<svg id="Gylph" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m28.06 39a1.14 1.14 0 0 0 -2.27 0 1.14 1.14 0 0 0 2.27 0z"/><path d="m39.23 26.75a1 1 0 0 1 1.41-1.42l2.28 2.28s4.39-4.4 4.43-4.47a5 5 0 0 0 -.13-7l-1.48-1.49a1 1 0 0 0 -1.37-.05 3.27 3.27 0 0 1 -4.62-4.6 1 1 0 0 0 0-1.37l-1.53-1.48a5.09 5.09 0 0 0 -7.16 0l-4.3 4.31 2.24 2.26a1 1 0 0 1 -1.42 1.41l-2.27-2.27-15.81 15.84h31.66c-.48-.51-1.45-1.47-1.93-1.95zm-5.81-7.22a1 1 0 0 1 -1.41 0l-1.57-1.53a1 1 0 0 1 0-1.41 1 1 0 0 1 1.42 0l1.56 1.56a1 1 0 0 1 0 1.38zm4.39 4.39a1 1 0 0 1 -1.41 0l-1.57-1.57a1 1 0 0 1 0-1.41 1 1 0 0 1 1.42 0l1.56 1.57a1 1 0 0 1 0 1.41z"/><path d="m54 30.68h-7.72v3.73a1 1 0 0 1 -2 .27c-.11-1 0-2.94 0-4h-33.94a6 6 0 0 0 -6.34 6v2.57a1 1 0 0 0 1 1 4.26 4.26 0 0 1 0 8.52 1 1 0 0 0 -1 1v2.57a6 6 0 0 0 6 6h34.28s-.06-3.83 0-4a1 1 0 0 1 1.9 0c.12.29.05 4 .05 4h7.77a6 6 0 0 0 6-6v-2.59a1 1 0 0 0 -.93-1c-5.23-.44-5.21-8 0-8.48a1 1 0 0 0 .93-1v-2.59a6 6 0 0 0 -6-6zm-24.35 8.32a2.73 2.73 0 0 1 -5.45 0 2.73 2.73 0 0 1 5.45 0zm-4.19 10.7a2.72 2.72 0 0 1 5.44 0 2.72 2.72 0 0 1 -5.44 0zm8-9.86-10 9.95a1 1 0 0 1 -1.41-1.42l9.95-9.94a1 1 0 0 1 1.42 0 1 1 0 0 1 .03 1.41zm12.82 9.86a1 1 0 0 1 -2 0v-2.7a1 1 0 0 1 2 0zm0-7.65a1 1 0 0 1 -2 0v-2.72a1 1 0 0 1 2 0z"/><path d="m27.05 49.7a1.13 1.13 0 0 0 2.26 0 1.13 1.13 0 0 0 -2.26 0z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

1
assets/images/search.svg

@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" height="512" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" viewBox="0 0 1707 1707" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Layer_x0020_1"><path d="m623 1250c-166 0-323-65-440-183-118-118-183-274-183-440 0-167 65-323 183-441 117-118 274-182 440-182s323 64 441 182c117 118 182 274 182 441 0 166-65 322-182 440-118 118-275 183-441 183zm0-140c-129 0-251-50-342-141-91-92-142-213-142-342 0-130 51-251 142-343 91-91 213-141 342-141s251 50 342 141c189 189 189 496 0 685-91 91-213 141-342 141z"/><path d="m1198 1309c-8 0-16-3-22-9l-134-134c23-18 44-36 64-57 23-22 43-46 62-71l135 135c12 12 12 31 0 43-6 5-13 8-21 8-7 0-13-2-18-6l-39 48c5 11 3 24-6 34-6 6-14 9-21 9z"/><path d="m1577 1703c-34 0-67-13-91-38l-282-281c-24-24-37-57-37-91 0-35 13-68 37-92 25-24 57-38 92-38s67 14 92 38l281 281c50 51 50 133 0 183-25 25-57 38-92 38z"/><path d="m421 829c-112-112-112-293 0-405 11-12 11-31 0-42-12-12-31-12-43 0-135 135-135 354 0 489 6 6 14 9 21 9 8 0 16-3 22-9 11-11 11-30 0-42z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

6
ios/Podfile

@ -1,7 +1,7 @@
# Uncomment this line to define a global platform for your project
platform :ios, '12.0'
platform :ios, '15.0'
# Override Firebase SDK Version
$FirebaseSDKVersion = '8.15.0'
$FirebaseSDKVersion = '9.2.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@ -39,7 +39,7 @@ post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
end
end
end

217
ios/Podfile.lock

@ -608,102 +608,105 @@ PODS:
- BoringSSL-GRPC/Implementation (0.0.24):
- BoringSSL-GRPC/Interface (= 0.0.24)
- BoringSSL-GRPC/Interface (0.0.24)
- camera (0.0.1):
- camera_avfoundation (0.0.1):
- Flutter
- cloud_firestore (3.1.15):
- Firebase/Firestore (= 8.15.0)
- cloud_firestore (3.2.0):
- Firebase/Firestore (= 9.2.0)
- firebase_core
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- Firebase/Analytics (8.15.0):
- Firebase/Analytics (9.2.0):
- Firebase/Core
- Firebase/Auth (8.15.0):
- Firebase/Auth (9.2.0):
- Firebase/CoreOnly
- FirebaseAuth (~> 8.15.0)
- Firebase/Core (8.15.0):
- FirebaseAuth (~> 9.2.0)
- Firebase/Core (9.2.0):
- Firebase/CoreOnly
- FirebaseAnalytics (~> 8.15.0)
- Firebase/CoreOnly (8.15.0):
- FirebaseCore (= 8.15.0)
- Firebase/Crashlytics (8.15.0):
- FirebaseAnalytics (~> 9.2.0)
- Firebase/CoreOnly (9.2.0):
- FirebaseCore (= 9.2.0)
- Firebase/Crashlytics (9.2.0):
- Firebase/CoreOnly
- FirebaseCrashlytics (~> 8.15.0)
- Firebase/DynamicLinks (8.15.0):
- FirebaseCrashlytics (~> 9.2.0)
- Firebase/DynamicLinks (9.2.0):
- Firebase/CoreOnly
- FirebaseDynamicLinks (~> 8.15.0)
- Firebase/Firestore (8.15.0):
- FirebaseDynamicLinks (~> 9.2.0)
- Firebase/Firestore (9.2.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 8.15.0)
- Firebase/Messaging (8.15.0):
- FirebaseFirestore (~> 9.2.0)
- Firebase/Messaging (9.2.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 8.15.0)
- firebase_analytics (9.1.8):
- Firebase/Analytics (= 8.15.0)
- FirebaseMessaging (~> 9.2.0)
- firebase_analytics (9.1.11):
- Firebase/Analytics (= 9.2.0)
- firebase_core
- Flutter
- firebase_auth (3.3.18):
- Firebase/Auth (= 8.15.0)
- firebase_auth (3.4.0):
- Firebase/Auth (= 9.2.0)
- firebase_core
- Flutter
- firebase_core (1.17.0):
- Firebase/CoreOnly (= 8.15.0)
- firebase_core (1.22.0):
- Firebase/CoreOnly (= 9.2.0)
- Flutter
- firebase_crashlytics (2.8.0):
- Firebase/Crashlytics (= 8.15.0)
- firebase_crashlytics (2.8.3):
- Firebase/Crashlytics (= 9.2.0)
- firebase_core
- Flutter
- firebase_dynamic_links (4.2.3):
- Firebase/DynamicLinks (= 8.15.0)
- firebase_dynamic_links (4.3.0):
- Firebase/DynamicLinks (= 9.2.0)
- firebase_core
- Flutter
- firebase_messaging (11.4.0):
- Firebase/Messaging (= 8.15.0)
- firebase_messaging (11.4.3):
- Firebase/Messaging (= 9.2.0)
- firebase_core
- Flutter
- FirebaseAnalytics (8.15.0):
- FirebaseAnalytics/AdIdSupport (= 8.15.0)
- FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0)
- FirebaseAnalytics (9.2.0):
- FirebaseAnalytics/AdIdSupport (= 9.2.0)
- FirebaseCore (~> 9.0)
- FirebaseInstallations (~> 9.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/MethodSwizzler (~> 7.7)
- GoogleUtilities/Network (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- nanopb (~> 2.30908.0)
- FirebaseAnalytics/AdIdSupport (8.15.0):
- FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0)
- GoogleAppMeasurement (= 8.15.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseAnalytics/AdIdSupport (9.2.0):
- FirebaseCore (~> 9.0)
- FirebaseInstallations (~> 9.0)
- GoogleAppMeasurement (= 9.2.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/MethodSwizzler (~> 7.7)
- GoogleUtilities/Network (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- nanopb (~> 2.30908.0)
- FirebaseAuth (8.15.0):
- FirebaseCore (~> 8.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseAuth (9.2.0):
- FirebaseCore (~> 9.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/Environment (~> 7.7)
- GTMSessionFetcher/Core (~> 1.5)
- FirebaseCore (8.15.0):
- FirebaseCoreDiagnostics (~> 8.0)
- GTMSessionFetcher/Core (< 3.0, >= 1.7)
- FirebaseCore (9.2.0):
- FirebaseCoreDiagnostics (~> 9.0)
- FirebaseCoreInternal (~> 9.0)
- GoogleUtilities/Environment (~> 7.7)
- GoogleUtilities/Logger (~> 7.7)
- FirebaseCoreDiagnostics (8.15.0):
- GoogleDataTransport (~> 9.1)
- FirebaseCoreDiagnostics (9.5.0):
- GoogleDataTransport (< 10.0.0, >= 9.1.4)
- GoogleUtilities/Environment (~> 7.7)
- GoogleUtilities/Logger (~> 7.7)
- nanopb (~> 2.30908.0)
- FirebaseCrashlytics (8.15.0):
- FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0)
- GoogleDataTransport (~> 9.1)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseCoreInternal (9.5.0):
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- FirebaseCrashlytics (9.2.0):
- FirebaseCore (~> 9.0)
- FirebaseInstallations (~> 9.0)
- GoogleDataTransport (< 10.0.0, >= 9.1.4)
- GoogleUtilities/Environment (~> 7.7)
- nanopb (~> 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2)
- FirebaseDynamicLinks (8.15.0):
- FirebaseCore (~> 8.0)
- FirebaseFirestore (8.15.0):
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesObjC (~> 2.1)
- FirebaseDynamicLinks (9.2.0):
- FirebaseCore (~> 9.0)
- FirebaseFirestore (9.2.0):
- abseil/algorithm (~> 1.20211102.0)
- abseil/base (~> 1.20211102.0)
- abseil/container/flat_hash_map (~> 1.20211102.0)
@ -712,24 +715,24 @@ PODS:
- abseil/strings/strings (~> 1.20211102.0)
- abseil/time (~> 1.20211102.0)
- abseil/types (~> 1.20211102.0)
- FirebaseCore (~> 8.0)
- FirebaseCore (~> 9.0)
- "gRPC-C++ (~> 1.44.0)"
- leveldb-library (~> 1.22)
- nanopb (~> 2.30908.0)
- FirebaseInstallations (8.15.0):
- FirebaseCore (~> 8.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseInstallations (9.5.0):
- FirebaseCore (~> 9.0)
- GoogleUtilities/Environment (~> 7.7)
- GoogleUtilities/UserDefaults (~> 7.7)
- PromisesObjC (< 3.0, >= 1.2)
- FirebaseMessaging (8.15.0):
- FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0)
- GoogleDataTransport (~> 9.1)
- PromisesObjC (~> 2.1)
- FirebaseMessaging (9.2.0):
- FirebaseCore (~> 9.0)
- FirebaseInstallations (~> 9.0)
- GoogleDataTransport (< 10.0.0, >= 9.1.4)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/Environment (~> 7.7)
- GoogleUtilities/Reachability (~> 7.7)
- GoogleUtilities/UserDefaults (~> 7.7)
- nanopb (~> 2.30908.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- Flutter (1.0.0)
- flutter_inappwebview (0.0.1):
- Flutter
@ -753,7 +756,7 @@ PODS:
- FMDB/standard (2.7.5)
- geolocator_apple (1.2.0):
- Flutter
- google_maps_flutter (0.0.1):
- google_maps_flutter_ios (0.0.1):
- Flutter
- GoogleMaps
- google_ml_vision (0.0.7):
@ -765,26 +768,26 @@ PODS:
- google_sign_in_ios (0.0.1):
- Flutter
- GoogleSignIn (~> 6.2)
- GoogleAppMeasurement (8.15.0):
- GoogleAppMeasurement/AdIdSupport (= 8.15.0)
- GoogleAppMeasurement (9.2.0):
- GoogleAppMeasurement/AdIdSupport (= 9.2.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/MethodSwizzler (~> 7.7)
- GoogleUtilities/Network (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- nanopb (~> 2.30908.0)
- GoogleAppMeasurement/AdIdSupport (8.15.0):
- GoogleAppMeasurement/WithoutAdIdSupport (= 8.15.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- GoogleAppMeasurement/AdIdSupport (9.2.0):
- GoogleAppMeasurement/WithoutAdIdSupport (= 9.2.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/MethodSwizzler (~> 7.7)
- GoogleUtilities/Network (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- nanopb (~> 2.30908.0)
- GoogleAppMeasurement/WithoutAdIdSupport (8.15.0):
- nanopb (< 2.30910.0, >= 2.30908.0)
- GoogleAppMeasurement/WithoutAdIdSupport (9.2.0):
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
- GoogleUtilities/MethodSwizzler (~> 7.7)
- GoogleUtilities/Network (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- nanopb (~> 2.30908.0)
- nanopb (< 2.30910.0, >= 2.30908.0)
- GoogleDataTransport (9.1.4):
- GoogleUtilities/Environment (~> 7.7)
- nanopb (< 2.30910.0, >= 2.30908.0)
@ -976,7 +979,7 @@ PODS:
- permission_handler_apple (9.0.4):
- Flutter
- PhoneNumberKit/PhoneNumberKitCore (3.3.4)
- PromisesObjC (2.1.0)
- PromisesObjC (2.1.1)
- Protobuf (3.20.1)
- Reachability (3.2)
- share_plus (0.0.1):
@ -995,7 +998,7 @@ PODS:
- Flutter
DEPENDENCIES:
- camera (from `.symlinks/plugins/camera/ios`)
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
@ -1011,7 +1014,7 @@ DEPENDENCIES:
- flutter_qrcode_scanner (from `.symlinks/plugins/flutter_qrcode_scanner/ios`)
- flutter_webview_plugin (from `.symlinks/plugins/flutter_webview_plugin/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- google_ml_vision (from `.symlinks/plugins/google_ml_vision/ios`)
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
@ -1038,6 +1041,7 @@ SPEC REPOS:
- FirebaseAuth
- FirebaseCore
- FirebaseCoreDiagnostics
- FirebaseCoreInternal
- FirebaseCrashlytics
- FirebaseDynamicLinks
- FirebaseFirestore
@ -1079,8 +1083,8 @@ SPEC REPOS:
- TOCropViewController
EXTERNAL SOURCES:
camera:
:path: ".symlinks/plugins/camera/ios"
camera_avfoundation:
:path: ".symlinks/plugins/camera_avfoundation/ios"
cloud_firestore:
:path: ".symlinks/plugins/cloud_firestore/ios"
connectivity:
@ -1111,8 +1115,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_webview_plugin/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
google_maps_flutter:
:path: ".symlinks/plugins/google_maps_flutter/ios"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
google_ml_vision:
:path: ".symlinks/plugins/google_ml_vision/ios"
google_sign_in_ios:
@ -1148,25 +1152,26 @@ SPEC CHECKSUMS:
abseil: ebe5b5529fb05d93a8bdb7951607be08b7fa71bc
AppAuth: 80317d99ac7ff2801a2f18ff86b48cd315ed465d
BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
camera: 9993f92f2c793e87b65e35f3a23c70582afb05b1
cloud_firestore: 76e73835a6ac79ac825190eefd876a1e100c7835
camera_avfoundation: 07c77549ea54ad95d8581be86617c094a46280d9
cloud_firestore: 30fe479181386bcf28579a0b4bf1654c89b88542
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
firebase_analytics: 92d27947c7516981cabdc0acbb33cd0687bcda44
firebase_auth: ace975b530600827bd901a9a18584f7cdaf6d160
firebase_core: aa1b92020533f5c23955e388c347c58fd64f8627
firebase_crashlytics: d42b108fa870b889f4c4ea22094647f2aca5f765
firebase_dynamic_links: 7263ea02f9eb9af202173d2ec093120340e38677
firebase_messaging: 8957bf304b47daf8bf12d0b111fdecc5b33e77a3
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
FirebaseAuth: 3e73bf8abf4fbb40f8b421f361f4cc48ee57388c
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb
FirebaseCrashlytics: feb07e4e9187be3c23c6a846cce4824e5ce2dd0b
FirebaseDynamicLinks: 1dc816ef789c5adac6fede0b46d11478175c70e4
FirebaseFirestore: d7023faff8e1b4fd69d0adbcf18e65129bc03842
FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd
FirebaseMessaging: 5e5118a2383b3531e730d974680954c679ca0a13
Firebase: 4ba896cb8e5105d4b9e247e1c1b6222b548df55a
firebase_analytics: ff0cb0848b62fea2c6cf93dfd08135130f194de8
firebase_auth: 4844b43012019d01268544a497b5a9757f69027b
firebase_core: 07ad4db354f9b07c54809df99dbe6dd5f7256872
firebase_crashlytics: e0040786f14b369cc717037d124ae124d40c6460
firebase_dynamic_links: e2d08d5e0cd443258a54137a61247e92d5e1a1c4
firebase_messaging: 753569fe9d79bcc694bab3526b168d248b512ce2
FirebaseAnalytics: af5a03a8dff7648c7b8486f6a78b1368e0268dd3
FirebaseAuth: 1c574ab64a051dd86dbe7fd5a3f86b58155b3482
FirebaseCore: 0e27f2a15d8f7b7ef11e7d93e23b1cbab55d748c
FirebaseCoreDiagnostics: 17cbf4e72b1dbd64bfdc33d4b1f07bce4f16f1d8
FirebaseCoreInternal: 50a8e39cae8abf72d5145d07ea34c3244f70862b
FirebaseCrashlytics: 9fff819edb2bfc9d3eff612225b207d41945a935
FirebaseDynamicLinks: f576ccfba05f2813e3679d48ccae5bcfff5714fc
FirebaseFirestore: de27d96de10596ebc114adf25c6aa7d36dd91f2f
FirebaseInstallations: 41f811b530c41dd90973d0174381cdb3fcb5e839
FirebaseMessaging: 4eaf1b8a7464b2c5e619ad66e9b20ee3e3206b24
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
flutter_libphonenumber: 6a23afdf063b34d1e53e6dbd6c6bc905d18e8e46
@ -1175,10 +1180,10 @@ SPEC CHECKSUMS:
flutter_webview_plugin: ed9e8a6a96baf0c867e90e1bce2673913eeac694
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
google_maps_flutter: c59fc576c0d0c7f4dc4bd63832c862d22d5a7c6d
google_maps_flutter_ios: 66201f392bf62d500f07670a30488a247b9bb5b9
google_ml_vision: d16cd76617b3260c4283a28843555a8c6253a171
google_sign_in_ios: 90eec6616c4c2105b9f9fe5c774773d13565b504
GoogleAppMeasurement: 4c19f031220c72464d460c9daa1fb5d1acce958e
google_sign_in_ios: 4f85eb9f937450765c8573bb85fd8cd6a5af675c
GoogleAppMeasurement: 7a33224321f975d58c166657260526775d9c6b1a
GoogleDataTransport: 5fffe35792f8b96ec8d6775f5eccd83c998d5a3b
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
GoogleMLKit: 85ffdc9641d05311c76dbba5bbf93059087be12f
@ -1214,7 +1219,7 @@ SPEC CHECKSUMS:
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
PhoneNumberKit: 441e8b26ec88d598e3591de9061eff18f5dd12e8
PromisesObjC: 99b6f43f9e1044bd87a95a60beff28c2c44ddb72
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
Protobuf: b60ec2f51ad74765f44d0c09d2e0579d7de21745
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
@ -1225,6 +1230,6 @@ SPEC CHECKSUMS:
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f
PODFILE CHECKSUM: c62121d8312d0ff0e0c4dd40334ffbc665ef58ad
PODFILE CHECKSUM: 2123a5cc771d730e237b041002bf2d3b6ae5004b
COCOAPODS: 1.11.3

8
ios/Runner.xcodeproj/project.pbxproj

@ -13,8 +13,8 @@
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 */; };
FE1744D5ADF4D39D2F573FCB /* GoogleService-Info.plist in Sources */ = {isa = PBXBuildFile; fileRef = 0B3B84CDB01189B80ADF6D47 /* GoogleService-Info.plist */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -31,6 +31,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0B3B84CDB01189B80ADF6D47 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
29578401A5FB3088ABB7635B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -46,7 +47,6 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
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 */
@ -100,6 +100,7 @@
97C146EF1CF9000F007C117D /* Products */,
4334E30C393B71F7A6E589D8 /* Pods */,
23D06BD6AD1FD965EEBFDFB4 /* Frameworks */,
0B3B84CDB01189B80ADF6D47 /* GoogleService-Info.plist */,
);
sourceTree = "<group>";
};
@ -114,7 +115,6 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
98FE50F7283B030D00F3547E /* GoogleService-Info.plist */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -194,7 +194,6 @@
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 */,
);
@ -316,6 +315,7 @@
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
FE1744D5ADF4D39D2F573FCB /* GoogleService-Info.plist in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

BIN
ios/Runner/.DS_Store

Binary file not shown.

13
ios/Runner/Base.lproj/Main.storyboard

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina6_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
@ -14,13 +16,14 @@
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="428" height="926"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-26" y="-44"/>
</scene>
</scenes>
</document>

18
ios/Runner/GoogleService-Info.plist

@ -3,23 +3,23 @@
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com</string>
<string>675860686596-8dsd5qf42n1gej04f2m2rmt27neft8vg.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<string>com.googleusercontent.apps.675860686596-8dsd5qf42n1gej04f2m2rmt27neft8vg</string>
<key>ANDROID_CLIENT_ID</key>
<string>280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com</string>
<string>675860686596-in4piqob6d8nj42nguh06abpdrrhai0f.apps.googleusercontent.com</string>
<key>API_KEY</key>
<string>AIzaSyCBDtZO2_Z5JjrNj1TocK6YAlk_wDbzZHs</string>
<string>AIzaSyDBcm0Bpx8tucyVx3Cwe48ehqcWGPWThzI</string>
<key>GCM_SENDER_ID</key>
<string>280510379185</string>
<string>675860686596</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.tesoapp</string>
<key>PROJECT_ID</key>
<string>teso-ghana</string>
<string>teso-test-6fc81</string>
<key>STORAGE_BUCKET</key>
<string>teso-ghana.appspot.com</string>
<string>teso-test-6fc81.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
@ -31,8 +31,6 @@
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:280510379185:ios:52af12a619d5443119de90</string>
<key>DATABASE_URL</key>
<string>https://teso-ghana-default-rtdb.firebaseio.com</string>
<string>1:675860686596:ios:41d840f75d89875ccd9251</string>
</dict>
</plist>

1
ios/Runner/Info.plist

@ -34,6 +34,7 @@
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<string>com.googleusercontent.apps.675860686596-8dsd5qf42n1gej04f2m2rmt27neft8vg</string>
<string>fb1759156777594606</string>
</array>
</dict>

38
ios/Runner/ProdGoogleService-Info.plist

@ -0,0 +1,38 @@
<?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>CLIENT_ID</key>
<string>280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.280510379185-67vianhh973klriv75ip2tb9cf8ibitl</string>
<key>ANDROID_CLIENT_ID</key>
<string>280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com</string>
<key>API_KEY</key>
<string>AIzaSyCBDtZO2_Z5JjrNj1TocK6YAlk_wDbzZHs</string>
<key>GCM_SENDER_ID</key>
<string>280510379185</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.tesoapp</string>
<key>PROJECT_ID</key>
<string>teso-ghana</string>
<key>STORAGE_BUCKET</key>
<string>teso-ghana.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:280510379185:ios:52af12a619d5443119de90</string>
<key>DATABASE_URL</key>
<string>https://teso-ghana-default-rtdb.firebaseio.com</string>
</dict>
</plist>

6
ios/firebase_app_id_file.json

@ -1,7 +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"
"GOOGLE_APP_ID": "1:675860686596:ios:41d840f75d89875ccd9251",
"FIREBASE_PROJECT_ID": "teso-test-6fc81",
"GCM_SENDER_ID": "675860686596"
}

8
lib/Classes/API Clasess/BusinessProfile.dart

@ -4,10 +4,10 @@ import 'package:teso/Classes/API%20Clasess/Product.dart';
import '../TesoUser.dart';
class BusinessProfileClass {
List<Product> products;
List<CouponDetails> coupons;
List<TesoUser> subscribers;
bool subscribed;
List<Product>? products;
List<CouponDetails>? coupons;
List<TesoUser>? subscribers;
bool? subscribed;
BusinessProfileClass({
this.coupons,

6
lib/Classes/API Clasess/CampAd.dart

@ -1,7 +1,7 @@
class CampAd {
String postId;
String campaignId;
bool approved;
String? postId;
String? campaignId;
bool? approved;
CampAd({
this.approved,

16
lib/Classes/API Clasess/Campaign.dart

@ -1,12 +1,12 @@
class Campaign {
String campaignID;
String description;
String businessID;
String status;
String title;
DateTime startDate;
String targetProduct;
int rewards;
String? campaignID;
String? description;
String? businessID;
String? status;
String? title;
DateTime? startDate;
String? targetProduct;
int? rewards;
Campaign({
this.businessID,

10
lib/Classes/API Clasess/CommentsPost.dart

@ -1,9 +1,9 @@
class CommentsPost {
String postId;
String commentId;
String comment;
String timestamp;
String commenterId;
String? postId;
String? commentId;
String? comment;
String? timestamp;
String? commenterId;
CommentsPost({
this.postId,

32
lib/Classes/API Clasess/CouponDetails.dart

@ -2,20 +2,20 @@ import 'TesoBusinessDetail.dart';
import 'Product.dart';
class CouponDetails {
String couponId;
String businessId;
Product targetProduct;
String type;
int quantity;
DateTime expiration;
double worth;
String state;
TesoBusinessDetail issuer;
double productCost;
double lowerLimit;
double upperLimit;
String countID;
String condition;
String? couponId;
String? businessId;
Product? targetProduct;
String? type;
int? quantity;
DateTime? expiration;
double? worth;
String? state;
TesoBusinessDetail? issuer;
double? productCost;
double? lowerLimit;
double? upperLimit;
String? countID;
String? condition;
CouponDetails(
{this.businessId,
@ -54,7 +54,7 @@ class CouponDetails {
condition: json['condition'].toString());
} catch (e) {
print(e);
return null;
return CouponDetails();
}
}
@ -83,7 +83,7 @@ class CouponDetails {
data['businessId'] = this.businessId;
data['couponId'] = this.couponId;
data['target'] = this.targetProduct;
data['expiration'] = this.expiration.toIso8601String();
data['expiration'] = this.expiration!.toIso8601String();
data['issuer'] = this.issuer;
data['productCost'] = this.productCost.toString();
data['quantity'] = this.quantity;

24
lib/Classes/API Clasess/CouponHead.dart

@ -1,14 +1,14 @@
class CouponsHead {
String couponId;
String businessId;
String targetProduct;
String type;
int quantity;
DateTime expiration;
double lower;
double upper;
String state;
DateTime generated;
String? couponId;
String? businessId;
String? targetProduct;
String? type;
int? quantity;
DateTime? expiration;
double? lower;
double? upper;
String? state;
DateTime? generated;
CouponsHead(
{this.businessId,
@ -38,9 +38,9 @@ class CouponsHead {
final Map<dynamic, dynamic> data = Map<dynamic, dynamic>();
data['businessID'] = this.businessId;
data['couponID'] = this.couponId;
data['expiration'] = this.expiration.toIso8601String();
data['expiration'] = this.expiration!.toIso8601String();
data['generated'] = this.generated != null
? this.generated.toIso8601String()
? this.generated!.toIso8601String()
: DateTime.now().toIso8601String();
data['quantity'] = this.quantity;
data['state'] = this.state;

12
lib/Classes/API Clasess/Desire.dart

@ -1,10 +1,10 @@
class Desire {
String productName;
String productID;
String productImage;
String enlisted;
double price;
String category;
String? productName;
String? productID;
String? productImage;
String? enlisted;
double? price;
String? category;
Desire(
{this.productName,

4
lib/Classes/API Clasess/ExploreObject.dart

@ -1,8 +1,8 @@
import 'package:teso/Classes/API%20Clasess/Product.dart';
class ExploreClass {
List<Product> trending;
List<Product> latest;
List<Product>? trending;
List<Product>? latest;
ExploreClass({
this.trending,

20
lib/Classes/API Clasess/FacebookUser.dart

@ -1,14 +1,14 @@
class FacebookUser {
String firstname;
String surname;
String email;
String gender;
String username;
String userGUID;
String country;
String pictureUri;
String deviceToken;
String referralCode;
String? firstname;
String? surname;
String? email;
String? gender;
String? username;
String? userGUID;
String? country;
String? pictureUri;
String? deviceToken;
String? referralCode;
FacebookUser(
{this.firstname,

20
lib/Classes/API Clasess/GoogleUser.dart

@ -1,14 +1,14 @@
class GoogleUser {
String firstname;
String surname;
String email;
String gender;
String username;
String userGUID;
String country;
String pictureUri;
String deviceToken;
String referralCode;
String? firstname;
String? surname;
String? email;
String? gender;
String? username;
String? userGUID;
String? country;
String? pictureUri;
String? deviceToken;
String? referralCode;
GoogleUser({
this.firstname,

18
lib/Classes/API Clasess/Post.dart

@ -1,12 +1,12 @@
class Post {
String postID;
DateTime timestamp;
String playbackID;
String publisherID;
String title;
String assetID;
String aspect;
String rendition;
String? postID;
DateTime? timestamp;
String? playbackID;
String? publisherID;
String? title;
String? assetID;
String? aspect;
String? rendition;
Post({
this.postID,
@ -36,7 +36,7 @@ class Post {
data['postId'] = this.postID;
data['playbackID'] = this.playbackID;
data['title'] = this.title;
data['timestamp'] = this.timestamp.toIso8601String();
data['timestamp'] = this.timestamp!.toIso8601String();
data['assetID'] = this.assetID;
data['aspect'] = this.aspect;
data['rendition'] = this.rendition;

8
lib/Classes/API Clasess/PostFav.dart

@ -1,8 +1,8 @@
class PostFav {
String postId;
String admirerId;
String timestamp;
String countId;
String? postId;
String? admirerId;
String? timestamp;
String? countId;
PostFav({
this.postId,

10
lib/Classes/API Clasess/PostUpload.dart

@ -1,9 +1,9 @@
class PostUpload {
String title;
String thumbnail;
String aspect;
String campaignID;
String path;
String? title;
String? thumbnail;
String? aspect;
String? campaignID;
String? path;
PostUpload({
this.title,

14
lib/Classes/API Clasess/PostedAd.dart

@ -5,18 +5,18 @@ import 'package:teso/Classes/API%20Clasess/PostFav.dart';
import 'package:teso/Classes/TesoUser.dart';
class PostedAd {
Post post;
List<PostFav> likes;
List<CommentsPost> comments;
bool campaignAd;
CampAd campAdvert;
TesoUser publisher;
Post? post;
List<PostFav>? likes;
List<CommentsPost>? comments;
bool? campaignAd;
CampAd? campAdvert;
TesoUser? publisher;
PostedAd({
this.post,
this.likes,
this.comments,
List<TesoUser> friends,
List<TesoUser>? friends,
this.campaignAd,
this.campAdvert,
this.publisher,

4
lib/Classes/API Clasess/PostionAP.dart

@ -1,6 +1,6 @@
class Position1 {
double latitude;
double longitude;
double? latitude;
double? longitude;
Position1({
this.latitude,

14
lib/Classes/API Clasess/Product.dart

@ -1,11 +1,11 @@
class Product {
String productName;
String businessID;
String productDesc;
String productID;
String categoryID;
double unitPrice;
String productImage;
String? productName;
String? businessID;
String? productDesc;
String? productID;
String? categoryID;
double? unitPrice;
String? productImage;
Product(
{this.businessID,

28
lib/Classes/API Clasess/ProximityCoupon.dart

@ -1,20 +1,20 @@
import 'TesoBusinessDetail.dart';
class ProximityCoupon {
String couponId;
TesoBusinessDetail business;
String targetName;
String targetID;
String targetImage;
double targetCost;
String tagretDescription;
String type;
int quantity;
DateTime expiration;
double lowerLimit;
double upperLimit;
String state;
String condition;
String? couponId;
TesoBusinessDetail? business;
String? targetName;
String? targetID;
String? targetImage;
double? targetCost;
String? tagretDescription;
String? type;
int? quantity;
DateTime? expiration;
double? lowerLimit;
double? upperLimit;
String? state;
String? condition;
ProximityCoupon({
this.business,

6
lib/Classes/API Clasess/ReferralClass.dart

@ -1,7 +1,7 @@
class ReferralClass {
String referrer;
String referred;
bool reward;
String? referrer;
String? referred;
bool? reward;
ReferralClass({
this.referred,

6
lib/Classes/API Clasess/Registrar.dart

@ -2,9 +2,9 @@ import 'package:teso/Classes/API%20Clasess/TesoUserDetail.dart';
import 'package:teso/Classes/API%20Clasess/UserAuth.dart';
class Registrar {
UserAuth authentication;
TesoUserDetail user;
String referral;
UserAuth? authentication;
TesoUserDetail? user;
String? referral;
Registrar({
this.authentication,
this.user,

6
lib/Classes/API Clasess/ResetClass.dart

@ -1,7 +1,7 @@
class ResetClass {
String password;
String resetGuid;
String resetcode;
String? password;
String? resetGuid;
String? resetcode;
ResetClass({
this.password,

6
lib/Classes/API Clasess/SilverPurchaseRequest.dart

@ -1,7 +1,7 @@
class SilverPurchaseRequest {
int coinamount;
String method;
double amount;
int? coinamount;
String? method;
double? amount;
SilverPurchaseRequest({
this.coinamount,

28
lib/Classes/API Clasess/TesoBusinessDetail.dart

@ -1,17 +1,17 @@
class TesoBusinessDetail {
String businessId;
String handle;
String businessName;
String businessTin;
String businessDescription;
String businessCategory;
String businessAddress;
String businessContact;
String businessLogo;
DateTime dateOfEst;
String businessEmail;
String businessLat;
String businessLng;
String? businessId;
String? handle;
String? businessName;
String? businessTin;
String? businessDescription;
String? businessCategory;
String? businessAddress;
String? businessContact;
String? businessLogo;
DateTime? dateOfEst;
String? businessEmail;
String? businessLat;
String? businessLng;
TesoBusinessDetail(
{this.businessId,
@ -56,7 +56,7 @@ class TesoBusinessDetail {
data['businessLogo'] = this.businessLogo;
data['businessName'] = this.businessName;
data['businessTin'] = this.businessTin;
data['dateOfEst'] = this.dateOfEst.toIso8601String();
data['dateOfEst'] = this.dateOfEst!.toIso8601String();
data['handle'] = this.handle;
return data;
}

26
lib/Classes/API Clasess/TesoUserDetail.dart

@ -1,18 +1,18 @@
import 'package:teso/Classes/TesoUser.dart';
class TesoUserDetail {
String userGUID;
String username;
String firstname;
String surname;
String description;
String address;
String email;
String thumbnailDp;
String phonenumber;
String country;
String gender;
DateTime dateOfBirth;
String? userGUID;
String? username;
String? firstname;
String? surname;
String? description;
String? address;
String? email;
String? thumbnailDp;
String? phonenumber;
String? country;
String? gender;
DateTime? dateOfBirth;
TesoUserDetail(
{this.username,
@ -65,7 +65,7 @@ class TesoUserDetail {
data['description'] = this.description;
data['address'] = this.address;
data['phonenumber'] = this.phonenumber;
data['dateOfBirth'] = this.dateOfBirth.toIso8601String();
data['dateOfBirth'] = this.dateOfBirth!.toIso8601String();
data['thumbnailDp'] = this.thumbnailDp;
data['email'] = this.email;
data['gender'] = this.gender;

16
lib/Classes/API Clasess/ThirdPerson.dart

@ -1,12 +1,14 @@
// ignore_for_file: unnecessary_null_comparison
import 'package:teso/Classes/TesoUser.dart';
import 'Post.dart';
class ThirdPerson {
TesoUser user;
List<Post> posts = <Post>[];
List following = [];
List friends = [];
String relation;
TesoUser? user;
List<Post>? posts = <Post>[];
List? following = [];
List? friends = [];
String? relation;
ThirdPerson({
this.user,
@ -22,8 +24,8 @@ class ThirdPerson {
return ThirdPerson(
user: json["user"] != null ? TesoUser.fromJSON(json["user"]) : null,
posts: adverts != null ? adverts : <Post>[],
following: json["following"] as List,
friends: json["friends"] as List,
following: json["following"] as List?,
friends: json["friends"] as List?,
relation: json["relation"],
);
}

6
lib/Classes/API Clasess/TokenHandler.dart

@ -1,9 +1,9 @@
import 'package:teso/Classes/TesoUser.dart';
class TokenHandler {
String tokenTeso;
String tokenFirebase;
TesoUser user;
String? tokenTeso;
String? tokenFirebase;
TesoUser? user;
TokenHandler({this.tokenTeso, this.user, this.tokenFirebase});

20
lib/Classes/API Clasess/TwitterUser.dart

@ -1,14 +1,14 @@
class TwitterUser {
String firstname;
String surname;
String email;
String gender;
String username;
String userGUID;
String country;
String pictureUri;
String deviceToken;
String referralCode;
String? firstname;
String? surname;
String? email;
String? gender;
String? username;
String? userGUID;
String? country;
String? pictureUri;
String? deviceToken;
String? referralCode;
TwitterUser(
{this.firstname,

12
lib/Classes/API Clasess/UserAuth.dart

@ -1,10 +1,10 @@
class UserAuth {
String username;
String password;
String accountType;
String status;
String deviceToken;
String referralCode;
String? username;
String? password;
String? accountType;
String? status;
String? deviceToken;
String? referralCode;
UserAuth({
this.username,
this.password,

6
lib/Classes/API Clasess/UserFavCategory.dart

@ -1,7 +1,7 @@
class UserFavCategory {
String userGuid;
String categoryCode;
String countID;
String? userGuid;
String? categoryCode;
String? countID;
UserFavCategory({
this.userGuid,

6
lib/Classes/API Clasess/UserFinance.dart

@ -1,7 +1,7 @@
class UserFinance {
String userGUID;
int gold;
int silver;
String? userGUID;
int? gold;
int? silver;
UserFinance({
this.userGUID,

10
lib/Classes/ChatMessage.dart

@ -1,9 +1,9 @@
class ChatMessage {
String idFrom;
String idTo;
String content;
int type;
DateTime timestamp;
String? idFrom;
String? idTo;
String? content;
int? type;
DateTime? timestamp;
ChatMessage({
this.idFrom,

4
lib/Classes/ColorFilters.dart

@ -1,8 +1,8 @@
import 'package:flutter/painting.dart';
class ColorFilter {
Color code;
String name;
Color? code;
String? name;
ColorFilter({
this.code,
this.name,

2
lib/Classes/Connection.dart

@ -31,7 +31,7 @@ class MyConnectivity {
SharedPreferences prefs = await SharedPreferences.getInstance();
Map<String, String> requestHeaders = {
// 'Content-type': 'application/json',
'Authorization': prefs.getString("tokensTeso")
'Authorization': prefs.getString("tokensTeso")!
};
var register2 = serverLocation + 'serverstatus';
var client1 = await http

14
lib/Classes/Firebase/Comments.dart

@ -1,11 +1,11 @@
class FBComments {
String postID;
DateTime timestamp;
String thumbnail;
String commenterID;
String commenter;
String commentID;
String comment;
String? postID;
DateTime? timestamp;
String? thumbnail;
String? commenterID;
String? commenter;
String? commentID;
String? comment;
FBComments(
{this.postID,

22
lib/Classes/Firebase/Posts.dart

@ -1,15 +1,15 @@
class FBPosts {
String postID;
DateTime timestamp;
String playbackID;
String publisherID;
String title;
String assetID;
String rendition;
String aspect;
String campaignID;
int likes;
int comments;
String? postID;
DateTime? timestamp;
String? playbackID;
String? publisherID;
String? title;
String? assetID;
String? rendition;
String? aspect;
String? campaignID;
int? likes;
int? comments;
FBPosts(
{this.postID,

14
lib/Classes/NotificationSpliter.dart

@ -14,38 +14,31 @@ class NotificationSplitter {
payload.load2 = data["firstname"];
payload.load3 = data["surname"];
return payload;
break;
case "likes":
payload.loadID = "TESN000";
payload.load1 = data["post"];
return payload;
break;
case "comments":
payload.loadID = "TESN000";
payload.load1 = data["post"];
return payload;
break;
case "friendapproval":
Provider.of<UserProvider>(context, listen: false).loadFriends();
payload.loadID = "TESN000";
return payload;
break;
case "friendrequest":
payload.loadID = "TESN000";
return payload;
break;
case "gifted":
Provider.of<UserProvider>(context, listen: false).getCoupons();
payload.loadID = "TESN000";
payload.load1 = data["couponID"];
return payload;
break;
case "cancellation":
Provider.of<UserProvider>(context, listen: false).getCoupons();
payload.loadID = "TESN000";
payload.load1 = data["couponID"];
return payload;
break;
case "personalized":
payload.loadID = "TESN000";
payload.load1 = data["coupon"];
@ -56,7 +49,6 @@ class NotificationSplitter {
payload.load6 = data["originalPrice"];
payload.load7 = data["productName"];
return payload;
break;
case "campaign":
var coup = jsonDecode(data["campaign"]);
payload.loadID = "TESN005";
@ -69,33 +61,27 @@ class NotificationSplitter {
payload.load7 = coup["goldReward"].toString();
payload.load8 = coup["startDate"].toString();
return payload;
break;
case "reward":
payload.loadID = "TESN0R0";
return payload;
break;
case "expired":
Provider.of<UserProvider>(context, listen: false).getCoupons();
payload.loadID = "TESN000";
payload.load1 = data["couponID"];
return payload;
break;
case "refund":
Provider.of<UserProvider>(context, listen: false).getUserInformation();
payload.loadID = "TESN000";
payload.load1 = data["couponID"];
return payload;
break;
case "coinpurchase":
Provider.of<UserProvider>(context, listen: false).getUserInformation();
payload.loadID = "TESN000";
payload.load1 = data["orderID"];
await closeInAppWebView();
return payload;
break;
default:
return payload;
break;
}
}
}

22
lib/Classes/Payload.dart

@ -1,15 +1,15 @@
class Payload {
String loadID;
String load1;
String load2;
String load3;
String load4;
String load5;
String load6;
String load7;
String load8;
String load9;
String load10;
String? loadID;
String? load1;
String? load2;
String? load3;
String? load4;
String? load5;
String? load6;
String? load7;
String? load8;
String? load9;
String? load10;
Payload({
this.load1,

16
lib/Classes/Product.dart

@ -1,12 +1,12 @@
class Product {
String itemID;
String name;
String shopName;
String shopLocation;
String country;
String duration;
String adShort;
String adFull;
String? itemID;
String? name;
String? shopName;
String? shopLocation;
String? country;
String? duration;
String? adShort;
String? adFull;
Product(
{this.itemID,

6
lib/Classes/QRClass.dart

@ -1,7 +1,7 @@
class QRClass {
String code;
String type;
List rawBytes;
String? code;
String? type;
List? rawBytes;
QRClass({
this.code,

10
lib/Classes/ReportedContent.dart

@ -1,11 +1,11 @@
import 'dart:core';
class ReportedContent {
String userGuid;
String postID;
String publisherID;
DateTime timestamp;
int report;
String? userGuid;
String? postID;
String? publisherID;
DateTime? timestamp;
int? report;
ReportedContent(
{this.postID,

26
lib/Classes/TesoShop.dart

@ -1,17 +1,17 @@
class TesoShop {
String shopID;
String shopName;
String shopTin;
String shopAddress;
double latitude;
double longitude;
String shopPhone;
DateTime dateEst;
String handle;
String categoryShop;
String shopDescription;
String logo;
String email;
String? shopID;
String? shopName;
String? shopTin;
String? shopAddress;
double? latitude;
double? longitude;
String? shopPhone;
DateTime? dateEst;
String? handle;
String? categoryShop;
String? shopDescription;
String? logo;
String? email;
TesoShop(
{this.shopID,

34
lib/Classes/TesoUser.dart

@ -1,23 +1,23 @@
import 'API Clasess/TesoUserDetail.dart';
class TesoUser {
String userGUID;
String username;
String firstname;
String lastname;
String description;
String email;
String phonenumber;
String address;
String displaypicture;
DateTime dateOfBirth;
String? userGUID;
String? username;
String? firstname;
String? lastname;
String? description;
String? email;
String? phonenumber;
String? address;
String? displaypicture;
DateTime? dateOfBirth;
// ignore: non_constant_identifier_names
String thumbnail_dp;
String gold;
String silver;
String friends;
String gender;
String country;
String? thumbnail_dp;
String? gold;
String? silver;
String? friends;
String? gender;
String? country;
TesoUser(
{this.userGUID,
@ -66,7 +66,7 @@ class TesoUser {
data['lastname'] = this.lastname;
data['description'] = this.description;
data['address'] = this.address;
data["dateOfBirth"] = this.dateOfBirth.toIso8601String();
data["dateOfBirth"] = this.dateOfBirth!.toIso8601String();
data['phonenumber'] = this.phonenumber;
data['thumbnail_dp'] = this.thumbnail_dp;
data['email'] = this.email;

6
lib/Classes/TextE.dart

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
class Textted {
String text;
TextStyle textStyle;
TextAlign textAlign;
String? text;
TextStyle? textStyle;
TextAlign? textAlign;
Textted({
this.text,

6
lib/Classes/categories.dart

@ -1,7 +1,7 @@
class Category {
String id;
String name;
String image;
String? id;
String? name;
String? image;
Category({this.id, this.name, this.image});
Category.fromJson(Map<String, dynamic> json)
: id = json['catid'],

14
lib/Classes/customLoginButton.dart

@ -4,13 +4,13 @@ class CustomLoginButton extends StatelessWidget {
final Widget child;
final double width;
final double height;
final Function onPressed;
final String icon;
final Color color;
final Function? onPressed;
final String? icon;
final Color? color;
const CustomLoginButton({
Key key,
@required this.child,
Key? key,
required this.child,
this.width = double.infinity,
this.height = 50.0,
this.onPressed,
@ -67,12 +67,12 @@ class CustomLoginButton extends StatelessWidget {
),
),
child: InkWell(
onTap: onPressed,
onTap: onPressed as void Function()?,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Image(
image: AssetImage(icon),
image: AssetImage(icon!),
height: 20,
),
child

12
lib/Classes/customTesoButton.dart

@ -2,14 +2,14 @@ import 'package:flutter/material.dart';
class RaisedGradientButton extends StatelessWidget {
final Widget child;
final Gradient gradient;
final Gradient? gradient;
final double width;
final double height;
final Function onPressed;
final Function? onPressed;
const RaisedGradientButton({
Key key,
@required this.child,
Key? key,
required this.child,
this.gradient,
this.width = double.infinity,
this.height = 50.0,
@ -30,7 +30,7 @@ class RaisedGradientButton extends StatelessWidget {
height: 40.0,
decoration: BoxDecoration(gradient: gradient, boxShadow: [
BoxShadow(
color: Colors.grey[500],
color: Colors.grey[500]!,
offset: Offset(0.0, 1.5),
blurRadius: 1.5,
),
@ -43,7 +43,7 @@ class RaisedGradientButton extends StatelessWidget {
),
color: Colors.transparent,
child: InkWell(
onTap: onPressed,
onTap: onPressed as void Function()?,
child: Center(
child: child,
)),

18
lib/Classes/friend.dart

@ -1,13 +1,13 @@
class Friend {
String userID;
String firstname;
String surname;
String dateOfBirth;
String thumbnail;
String description;
String posts;
String following;
String friendsNum;
String? userID;
String? firstname;
String? surname;
String? dateOfBirth;
String? thumbnail;
String? description;
String? posts;
String? following;
String? friendsNum;
Friend(
{this.userID,

18
lib/Classes/inbox.dart

@ -1,13 +1,13 @@
class InboxMessage {
String userID;
String firstname;
String surname;
String messageID;
String message;
String thumbnail;
String bio;
DateTime timestamp;
int unread;
String? userID;
String? firstname;
String? surname;
String? messageID;
String? message;
String? thumbnail;
String? bio;
DateTime? timestamp;
int? unread;
InboxMessage(
{this.userID,

24
lib/Notifications/NotificationPlugin.dart

@ -8,11 +8,11 @@ import 'package:rxdart/subjects.dart';
class NotificationPlugin {
//
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
final BehaviorSubject<ReceivedNotification>
didReceivedLocalNotificationSubject =
BehaviorSubject<ReceivedNotification>();
var initializationSettings;
late var initializationSettings;
NotificationPlugin._() {
init();
@ -48,7 +48,7 @@ class NotificationPlugin {
_requestIOSPermission() {
flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
IOSFlutterLocalNotificationsPlugin>()
IOSFlutterLocalNotificationsPlugin>()!
.requestPermissions(
alert: true,
badge: true,
@ -64,13 +64,13 @@ class NotificationPlugin {
setOnNotificationClick(Function onNotificationClick) async {
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: (String payload) async {
onSelectNotification: (String? payload) async {
onNotificationClick(payload);
});
}
Future<void> showNotification(
String title, String body, String payload) async {
String? title, String? body, String payload) async {
var androidChannelSpecifics = AndroidNotificationDetails(
'CHANNEL_ID',
'CHANNEL_NAME',
@ -258,14 +258,14 @@ NotificationPlugin notificationPlugin = NotificationPlugin._();
class ReceivedNotification {
final int id;
final String title;
final String body;
final String payload;
final String? title;
final String? body;
final String? payload;
ReceivedNotification({
@required this.id,
@required this.title,
@required this.body,
@required this.payload,
required this.id,
required this.title,
required this.body,
required this.payload,
});
}

76
lib/Pages/BusinessLocator.dart

@ -23,27 +23,27 @@ class BusinessLocator extends StatefulWidget {
}
class _BusinessLocatorState extends State<BusinessLocator> {
String mapstyle;
String? mapstyle;
var _future;
static LatLng _initialPosition;
static LatLng? _initialPosition;
Set<Marker> markers = {};
List<TesoShop> shops;
GoogleMapController mapController;
List<TesoShop>? shops;
GoogleMapController? mapController;
static const double CAMERA_ZOOM = 13.499910354614258;
bool routing = false;
List<LatLng> polylineCoordinates = [];
Map<PolylineId, Polyline> polylines = {};
String selectedshop = "";
String? selectedshop = "";
Location location = Location();
String routingMessage = "Finding shops....";
LocationData _location;
String _error;
String _placeDistance;
late LocationData _location;
String? _error;
String? _placeDistance;
final startAddressController = TextEditingController();
final destinationAddressController = TextEditingController();
bool ios = false;
Future<LatLng> _determinePosition(context) async {
Future<LatLng?> _determinePosition(context) async {
setState(() {
_error = null;
});
@ -51,7 +51,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
final LocationData _locationResult = await location.getLocation();
setState(() {
_location = _locationResult;
_initialPosition = LatLng(_location.latitude, _location.longitude);
_initialPosition = LatLng(_location.latitude!, _location.longitude!);
});
await getLocations();
@ -68,7 +68,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
SharedPreferences prefs = await SharedPreferences.getInstance();
Map<String, String> requestHeaders = {
'Content-type': 'application/json',
'Authorization': prefs.getString('tokensTeso')
'Authorization': prefs.getString('tokensTeso')!
};
var register2 = serverLocation + 'tesobusiness/available';
@ -84,12 +84,12 @@ class _BusinessLocatorState extends State<BusinessLocator> {
}
}
if (shops.length > 0 && shops != null)
shops.forEach((element) {
MarkerId markerId = MarkerId(element.shopID);
if (shops!.length > 0 && shops != null)
shops!.forEach((element) {
MarkerId markerId = MarkerId(element.shopID!);
Marker marker = Marker(
markerId: markerId,
position: LatLng(element.latitude, element.longitude),
position: LatLng(element.latitude!, element.longitude!),
icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueCyan),
infoWindow: InfoWindow(
title: element.shopName,
@ -118,7 +118,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
super.initState();
ios = Platform.isIOS;
SharedPreferences.getInstance().then((prefs) {
String currentTheme = prefs.getString("theme");
String? currentTheme = prefs.getString("theme");
if (currentTheme == "light") {
rootBundle.loadString('assets/styles/light.txt').then((string) {
mapstyle = string;
@ -132,7 +132,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
_future = _determinePosition(context);
location.onLocationChanged.listen((LocationData cLoc) {
_initialPosition = LatLng(cLoc.latitude, cLoc.longitude);
_initialPosition = LatLng(cLoc.latitude!, cLoc.longitude!);
});
}
@ -140,10 +140,10 @@ class _BusinessLocatorState extends State<BusinessLocator> {
Position _northeastCoordinates;
Position _southwestCoordinates;
MarkerId markerId = MarkerId(tesoShop.shopName + " Location");
MarkerId markerId = MarkerId(tesoShop.shopName! + " Location");
Marker marker = Marker(
markerId: markerId,
position: LatLng(tesoShop.latitude, tesoShop.longitude),
position: LatLng(tesoShop.latitude!, tesoShop.longitude!),
icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueGreen),
infoWindow: InfoWindow(
title: tesoShop.shopName,
@ -155,12 +155,12 @@ class _BusinessLocatorState extends State<BusinessLocator> {
markers.clear();
markers.add(marker);
selectedshop = tesoShop.shopName;
destinationAddressController.text = selectedshop;
destinationAddressController.text = selectedshop!;
});
Position user = Position(
latitude: _initialPosition.latitude,
longitude: _initialPosition.longitude,
latitude: _initialPosition!.latitude,
longitude: _initialPosition!.longitude,
accuracy: 100,
altitude: 100,
heading: 100,
@ -168,8 +168,8 @@ class _BusinessLocatorState extends State<BusinessLocator> {
speedAccuracy: 100,
timestamp: DateTime.now());
Position shopLoc = Position(
latitude: tesoShop.latitude,
longitude: tesoShop.longitude,
latitude: tesoShop.latitude!,
longitude: tesoShop.longitude!,
accuracy: 100,
altitude: 100,
heading: 100,
@ -177,7 +177,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
speedAccuracy: 100,
timestamp: DateTime.now());
if (_initialPosition.latitude <= tesoShop.latitude) {
if (_initialPosition!.latitude <= tesoShop.latitude!) {
_southwestCoordinates = user;
_northeastCoordinates = shopLoc;
} else {
@ -187,7 +187,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
await createPolylines(user, shopLoc);
_calculateDistance(user, shopLoc);
mapController.animateCamera(
mapController!.animateCamera(
CameraUpdate.newLatLngBounds(
LatLngBounds(
northeast: LatLng(
@ -248,7 +248,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
@override
void dispose() {
if (mapController != null) mapController.dispose();
if (mapController != null) mapController!.dispose();
super.dispose();
}
@ -329,7 +329,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
myLocationEnabled: true,
markers: markers,
initialCameraPosition: CameraPosition(
target: _initialPosition,
target: _initialPosition!,
zoom: CAMERA_ZOOM,
//bearing: CAMERA_BEARING,
),
@ -377,7 +377,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
),
),
Visibility(
visible: selectedshop == null || selectedshop.isEmpty
visible: selectedshop == null || selectedshop!.isEmpty
? false
: true,
child: Align(
@ -489,7 +489,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
double _coordinateDistance(lat1, lon1, lat2, lon2) {
var p = 0.017453292519943295;
var c = cos;
var c = cos as double Function(num?);
var a = 0.5 -
c((lat2 - lat1) * p) / 2 +
c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p)) / 2;
@ -522,7 +522,7 @@ class _BusinessLocatorState extends State<BusinessLocator> {
// Accommodate the two locations within the
// camera view of the map
mapController.animateCamera(
mapController!.animateCamera(
CameraUpdate.newLatLngBounds(
LatLngBounds(
northeast: LatLng(northEastLatitude, northEastLongitude),
@ -569,13 +569,13 @@ class _BusinessLocatorState extends State<BusinessLocator> {
}
Widget _textField({
TextEditingController controller,
FocusNode focusNode,
String label,
String hint,
double width,
Icon prefixIcon,
Widget suffixIcon,
TextEditingController? controller,
FocusNode? focusNode,
String? label,
String? hint,
required double width,
Icon? prefixIcon,
Widget? suffixIcon,
}) {
return Container(
width: width * 0.8,

10
lib/Pages/DesireComeTrue.dart

@ -17,8 +17,8 @@ class DesireComeTrue extends StatefulWidget {
class _DesireComeTrueState extends State<DesireComeTrue>
with TickerProviderStateMixin {
AnimationController _controller;
Animation<double> _fabScale;
late AnimationController _controller;
late Animation<double> _fabScale;
List<Desire> desires = <Desire>[];
@override
@ -35,9 +35,9 @@ class _DesireComeTrueState extends State<DesireComeTrue>
});
SharedPreferences.getInstance().then((value) {
var jiffy = Jiffy()..add(months: 1);
if (value.getString("desire" + jiffy.format("MMMM, yyyy")).isNotEmpty) {
if (value.getString("desire" + jiffy.format("MMMM, yyyy"))!.isNotEmpty) {
var desired =
jsonDecode(value.getString("desire" + jiffy.format("MMMM, yyyy")));
jsonDecode(value.getString("desire" + jiffy.format("MMMM, yyyy"))!);
setState(() {
desires = List<Desire>.from(
desired.map((model) => Desire.fromJSON(model)).toList());
@ -53,7 +53,7 @@ class _DesireComeTrueState extends State<DesireComeTrue>
SharedPreferences prefs = await SharedPreferences.getInstance();
Map<String, String> requestHeaders = {
'Content-type': 'application/json',
'Authorization': prefs.getString('tokensTeso')
'Authorization': prefs.getString('tokensTeso')!
};
var register2 = serverLocation + 'monthly-desires/submit-newdesire';

4
lib/Pages/LandingPage.dart

@ -14,9 +14,9 @@ import 'package:teso/util/consts.dart';
import 'PageWidgets/Settings/terms.dart';
class LandingPage extends StatefulWidget {
final List<CameraDescription> connectedCameras;
final List<CameraDescription>? connectedCameras;
const LandingPage({Key key, this.connectedCameras}) : super(key: key);
const LandingPage({Key? key, this.connectedCameras}) : super(key: key);
@override
_LandingPageState createState() => _LandingPageState();
}

14
lib/Pages/PageWidgets/Alerts/AlertTile.dart

@ -4,12 +4,12 @@ import 'package:teso/util/consts.dart';
import 'package:time_elapsed/time_elapsed.dart';
buildAlert(
{BuildContext context,
DateTime timestamp,
String description,
Icon icons,
String thumbnail,
String username}) {
{required BuildContext context,
required DateTime timestamp,
required String description,
Icon? icons,
String? thumbnail,
String? username}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 25.0),
child: Material(
@ -85,7 +85,7 @@ buildAlert(
color: Color.fromRGBO(0, 0, 0, 0.4),
child: Center(
child: Text(
username.characters
username!.characters
.characterAt(0)
.toString()
.toUpperCase(),

10
lib/Pages/PageWidgets/Alerts/Redeemable.dart

@ -6,11 +6,11 @@ import 'package:teso/util/consts.dart';
import 'package:time_elapsed/time_elapsed.dart';
buildRedeemableAlert(
{BuildContext context,
DateTime timestamp,
Icon icons,
String thumbnail,
String message}) {
{required BuildContext context,
required DateTime timestamp,
Icon? icons,
required String thumbnail,
required String message}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0),
child: Material(

2
lib/Pages/PageWidgets/Alerts/Refund.dart

@ -5,7 +5,7 @@ import 'package:teso/util/consts.dart';
import 'package:time_elapsed/time_elapsed.dart';
buildRefundAlert(
{BuildContext context, DateTime timestamp, Icon icons, String message}) {
{required BuildContext context, required DateTime timestamp, Icon? icons, required String message}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0),
child: Material(

10
lib/Pages/PageWidgets/Alerts/header.dart

@ -7,10 +7,10 @@ import 'package:flutter/material.dart';
buildNotficationHeader(
BuildContext context,
Color fcurrentColor,
Color fcurrentColor1,
Color? fcurrentColor,
Color? fcurrentColor1,
Color fTextColor1,
Color fTextColor2,
Color? fTextColor2,
Function navigationTapped,
bool status,
TesoUser user) {
@ -40,14 +40,14 @@ buildNotficationHeader(
child: user.thumbnail_dp == null
? Center(
child: Text(
user.username.characters
user.username!.characters
.characterAt(0)
.toString()
.toUpperCase(),
),
)
: CachedNetworkImage(
imageUrl: userdpURL + user.thumbnail_dp,
imageUrl: userdpURL + user.thumbnail_dp!,
imageBuilder: (context, imageProvider) => FadeInImage(
height: 90,
width: 90,

14
lib/Pages/PageWidgets/Alerts/personalizedCoupon.dart

@ -6,13 +6,13 @@ import 'package:teso/util/consts.dart';
import 'package:time_elapsed/time_elapsed.dart';
buildPersonalizedAlert(
{BuildContext context,
DateTime timestamp,
Icon icons,
String thumbnail,
String message,
Function accept,
Function decline}) {
{required BuildContext context,
required DateTime timestamp,
Icon? icons,
required String thumbnail,
required String message,
Function? accept,
Function? decline}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0),
child: Material(

10
lib/Pages/PageWidgets/Alerts/post.dart

@ -4,11 +4,11 @@ import 'package:teso/util/consts.dart';
import 'package:time_elapsed/time_elapsed.dart';
buildPostAlert(
{BuildContext context,
DateTime timestamp,
Icon icons,
String thumbnail,
String message}) {
{required BuildContext context,
required DateTime timestamp,
Icon? icons,
String? thumbnail,
required String message}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0),
child: Material(

18
lib/Pages/PageWidgets/Alerts/requestTile.dart

@ -5,14 +5,14 @@ import 'package:teso/util/consts.dart';
import 'package:teso/Classes/customTesoButton.dart';
buildRequest(
{BuildContext context,
DateTime timestamp,
String description,
Icon icons,
String thumbnail,
String username,
Function approve,
Function decline}) {
{required BuildContext context,
required DateTime timestamp,
required String description,
Icon? icons,
String? thumbnail,
String? username,
Function? approve,
Function? decline}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30.0, vertical: 8.0),
child: Material(
@ -159,7 +159,7 @@ buildRequest(
color: Color.fromRGBO(0, 0, 0, 0.4),
child: Center(
child: Text(
username.characters
username!.characters
.characterAt(0)
.toString()
.toUpperCase(),

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

@ -5,11 +5,11 @@ import 'package:flutter/material.dart';
import 'package:teso/Classes/TesoShop.dart';
buildHead(
{BuildContext context,
TesoShop shopSelected,
int products,
int subscribers,
int coupons}) {
{required BuildContext context,
required TesoShop shopSelected,
required int products,
required int subscribers,
required int coupons}) {
return Container(
// height: MediaQuery.of(context).size.width -
// (MediaQuery.of(context).size.width * 0.40),
@ -46,7 +46,7 @@ buildHead(
),
child: shopSelected.logo != "null"
? CachedNetworkImage(
imageUrl: businessLogoURL + shopSelected.logo,
imageUrl: businessLogoURL + shopSelected.logo!,
imageBuilder: (context, imageProvider) =>
FadeInImage(
height: 90,
@ -133,7 +133,7 @@ buildHead(
left: MediaQuery.of(context).size.width * 0.09,
),
child: Text(
shopSelected.shopAddress,
shopSelected.shopAddress!,
style: TextStyle(
fontWeight: FontWeight.w400,
//color: Colors.grey,
@ -147,7 +147,7 @@ buildHead(
left: MediaQuery.of(context).size.width * 0.09,
),
child: Text(
shopSelected.categoryShop,
shopSelected.categoryShop!,
textAlign: TextAlign.left,
style: TextStyle(
fontSize: 12,
@ -163,8 +163,8 @@ buildHead(
left: MediaQuery.of(context).size.width * 0.09,
),
child: Text(
shopSelected.shopDescription.toLowerCase() != "null"
? shopSelected.shopDescription
shopSelected.shopDescription!.toLowerCase() != "null"
? shopSelected.shopDescription!
: "",
style: TextStyle(
fontSize: 13,

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

@ -14,7 +14,7 @@ buildItems(BuildContext context, Product product, double height) {
// borderRadius: BorderRadius.circular(30.0),
// ),
child: Hero(
tag: product.productID,
tag: product.productID!,
child: GestureDetector(
onTap: () => Navigator.push(
context,
@ -34,7 +34,7 @@ buildItems(BuildContext context, Product product, double height) {
width: double.infinity,
height: double.infinity,
fit: BoxFit.fill,
image: NetworkImage(productURL + product.productImage),
image: NetworkImage(productURL + product.productImage!),
placeholder: AssetImage("assets/images/loading.png"),
),
Container(
@ -49,7 +49,7 @@ buildItems(BuildContext context, Product product, double height) {
width: double.infinity,
margin: EdgeInsets.only(bottom: 40),
child: Text(
product.productName.toUpperCase(),
product.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,

6
lib/Pages/PageWidgets/ChatScreen/header.dart

@ -53,14 +53,14 @@ buildChatHead(BuildContext context, TesoUser user) {
child: user.thumbnail_dp == null
? Center(
child: Text(
user.firstname.characters
user.firstname!.characters
.characterAt(0)
.toString()
.toUpperCase(),
),
)
: CachedNetworkImage(
imageUrl: userdpURL + user.thumbnail_dp,
imageUrl: userdpURL + user.thumbnail_dp!,
imageBuilder: (context, imageProvider) => FadeInImage(
height: 90,
width: 90,
@ -86,7 +86,7 @@ buildChatHead(BuildContext context, TesoUser user) {
direction: Axis.vertical,
children: [
Text(
user.firstname + " " + user.lastname,
user.firstname! + " " + user.lastname!,
style: TextStyle(fontSize: 15),
textAlign: TextAlign.left,
),

4
lib/Pages/PageWidgets/ChatScreen/recipient.dart

@ -25,12 +25,12 @@ buildRecipient(BuildContext context, ChatMessage message) {
spacing: 10.0,
direction: Axis.horizontal,
children: [
Text(message.content),
Text(message.content!),
Container(
child: Align(
alignment: Alignment.bottomRight,
child: Text(
TimeElapsed.fromDateTime(message.timestamp),
TimeElapsed.fromDateTime(message.timestamp!),
textAlign: TextAlign.right,
style: TextStyle(
fontSize: 10,

4
lib/Pages/PageWidgets/ChatScreen/sender.dart

@ -25,12 +25,12 @@ buildSender(BuildContext context, ChatMessage document) {
spacing: 10.0,
direction: Axis.horizontal,
children: [
Text(document.content),
Text(document.content!),
Container(
child: Align(
alignment: Alignment.bottomRight,
child: Text(
TimeElapsed.fromDateTime(document.timestamp),
TimeElapsed.fromDateTime(document.timestamp!),
textAlign: TextAlign.right,
style: TextStyle(
fontSize: 10,

2
lib/Pages/PageWidgets/CoinPurchase/AmountInput.dart

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:teso/util/consts.dart';
buildAmount(BuildContext context, TextEditingController user) {
buildAmount(BuildContext context, TextEditingController? user) {
return Container(
width: double.infinity,
height: 45,

4
lib/Pages/PageWidgets/CoinPurchase/MomoType.dart

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:teso/util/consts.dart';
buildType(BuildContext context, String image, String type, Function selected,
String tapped) {
buildType(BuildContext context, String image, String? type, Function selected,
String? tapped) {
return Container(
margin: EdgeInsets.all(5),
width: 100,

2
lib/Pages/PageWidgets/CoinPurchase/PayGold.dart

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
payWithGold(
BuildContext context, String type, Function selected, String tapped) {
BuildContext context, String type, Function selected, String? tapped) {
return Container(
margin: EdgeInsets.all(5),
width: 90,

2
lib/Pages/PageWidgets/CoinPurchase/SilverAmountInput.dart

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:teso/util/consts.dart';
buildAmount(BuildContext context, TextEditingController user) {
buildAmount(BuildContext context, TextEditingController? user) {
return Container(
width: 100,
height: 65,

10
lib/Pages/PageWidgets/CoinPurchase/SilverPurchase.dart

@ -4,11 +4,11 @@ import 'package:flutter/material.dart';
import 'package:teso/Pages/Sub_Pages/CoinsPurchase/SilverPurchaseFixed.dart';
buildSilverCard({
BuildContext context,
String goldEquivalent,
String cashEquivalent,
String funds,
TesoUser user,
required BuildContext context,
required String goldEquivalent,
required String cashEquivalent,
required String funds,
TesoUser? user,
}) {
return Container(
margin: EdgeInsets.all(10),

2
lib/Pages/PageWidgets/CoinPurchase/phonenumber.dart

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:teso/util/consts.dart';
inputTelNumber(BuildContext context, TextEditingController user) {
inputTelNumber(BuildContext context, TextEditingController? user) {
return Container(
width: double.infinity,
height: 45,

2
lib/Pages/PageWidgets/CoinPurchase/selector.dart

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
buildSelector(BuildContext context, String title, double size,
List<Color> color, Function tapped, Color textColor) {
return InkWell(
onTap: tapped,
onTap: tapped as void Function()?,
child: Container(
width: size - size * 0.55,
height: 42.5,

14
lib/Pages/PageWidgets/Coupons/GiftFriend.dart

@ -3,10 +3,10 @@ import 'package:teso/util/consts.dart';
import 'package:teso/Classes/TesoUser.dart';
buildGiftRecipient(
{BuildContext context,
TextEditingController searchkey,
TesoUser friend,
Function loadFriend}) {
{required BuildContext context,
TextEditingController? searchkey,
TesoUser? friend,
Function? loadFriend}) {
return Container(
height: 60.0,
padding: EdgeInsets.all(10.0),
@ -35,7 +35,7 @@ buildGiftRecipient(
: friend.thumbnail_dp == null
? Center(
child: Text(
friend.username.characters
friend.username!.characters
.characterAt(0)
.toString()
.toUpperCase(),
@ -45,7 +45,7 @@ buildGiftRecipient(
height: 45,
width: 45,
fit: BoxFit.fill,
image: NetworkImage(userdpURL + friend.thumbnail_dp),
image: NetworkImage(userdpURL + friend.thumbnail_dp!),
placeholder:
AssetImage("assets/images/tesoDP/dp1.png"),
),
@ -53,7 +53,7 @@ buildGiftRecipient(
),
new Expanded(
child: InkWell(
onTap: loadFriend,
onTap: loadFriend as void Function()?,
child: TextField(
autofocus: false,
enabled: false,

32
lib/Pages/PageWidgets/Coupons/mycoupons.dart

@ -1,3 +1,7 @@
// ignore_for_file: unnecessary_null_comparison
import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:location/location.dart';
@ -44,7 +48,7 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
bottomRight: Radius.circular(30),
),
child: CachedNetworkImage(
imageUrl: productURL + coupon.targetProduct.productImage,
imageUrl: productURL + coupon.targetProduct!.productImage!,
imageBuilder: (context, imageProvider) => Image(
width: MediaQuery.of(context).size.width * 0.28,
height: 110,
@ -64,7 +68,7 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
Container(
width: double.infinity,
child: Text(
"Item Name : " + coupon.targetProduct.productName,
"Item Name : " + coupon.targetProduct!.productName!,
style: TextStyle(
fontSize: SizeConfig.safeBlockHorizontal * 2.8,
),
@ -73,7 +77,7 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
Container(
width: double.infinity,
child: Text(
"Shop Name : " + coupon.issuer.businessName,
"Shop Name : " + coupon.issuer!.businessName!,
style: TextStyle(
fontSize: SizeConfig.safeBlockHorizontal * 2.8,
),
@ -82,19 +86,19 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
Container(
width: double.infinity,
child: CountdownTimer(
endTime: coupon.expiration.millisecondsSinceEpoch,
endTime: coupon.expiration!.millisecondsSinceEpoch,
widgetBuilder: (context, time) {
int day = time.days;
int hours = time.hours;
int min = time.min;
int sec = time.sec;
int? day = time!.days;
int? hours = time.hours;
int? min = time.min;
int? sec = time.sec;
if (time.min == null) min = 0;
if (time.days == null) day = 0;
if (time.hours == null) hours = 0;
if (time.sec == null) sec = 0;
if (time == null) {
return Text('Calculating..');
} else if (time.days == null || time.days < 1) {
} else if (time.days == null || time.days! < 1) {
return Text(
"Expires in : ${hours}h : ${min}m : ${sec}s",
style: TextStyle(
@ -130,9 +134,9 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
width: double.infinity,
child: Text(
"Pay only : GH¢ " +
(coupon.targetProduct.unitPrice -
(coupon.targetProduct.unitPrice *
(coupon.lowerLimit / 100)))
(coupon.targetProduct!.unitPrice! -
(coupon.targetProduct!.unitPrice! *
(coupon.lowerLimit! / 100)))
.toStringAsFixed(2),
style: TextStyle(
color: Colors.red,
@ -162,11 +166,11 @@ buildMyCoupons(BuildContext context, CouponDetails coupon, Function dialog,
PermissionStatus alreadyConsent =
await Location.instance.hasPermission();
if (alreadyConsent != PermissionStatus.granted) {
bool results = await Navigator.push(
bool results = await (Navigator.push(
context,
PageTransition(
child: ProminentDisclosure(),
type: PageTransitionType.leftToRight));
type: PageTransitionType.leftToRight)) as FutureOr<bool>);
if (results) {
await Location.instance.requestPermission();
Navigator.push(

22
lib/Pages/PageWidgets/Coupons/personalizedDiscount.dart

@ -39,7 +39,7 @@ buildPersonalizedDiscountCoupon(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
image: coupon.upperLimit < 50.1
image: coupon.upperLimit! < 50.1
? DecorationImage(
fit: BoxFit.fill,
image: AssetImage("assets/images/blue.png"),
@ -89,7 +89,7 @@ buildPersonalizedDiscountCoupon(
child: Column(
children: [
Text(
coupon.issuer.businessName.toUpperCase(),
coupon.issuer!.businessName!.toUpperCase(),
style: TextStyle(
color: Colors.white,
fontSize: 18,
@ -128,7 +128,7 @@ buildPersonalizedDiscountCoupon(
children: [
Text(
"ORIGINAL PRICE : GH¢ " +
coupon.targetProduct.unitPrice.toString(),
coupon.targetProduct!.unitPrice.toString(),
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
@ -136,8 +136,8 @@ buildPersonalizedDiscountCoupon(
),
Text(
"DISCOUNTED PRICE : GH¢ " +
(coupon.targetProduct.unitPrice- (coupon.targetProduct.unitPrice *
(coupon.lowerLimit / 100)))
(coupon.targetProduct!.unitPrice!- (coupon.targetProduct!.unitPrice! *
(coupon.lowerLimit! / 100)))
.toStringAsFixed(2),
style: TextStyle(
color: Colors.white,
@ -155,7 +155,7 @@ buildPersonalizedDiscountCoupon(
vertical:
MediaQuery.of(context).size.width * 0.15),
child: Text(
coupon.targetProduct.productName.toUpperCase(),
coupon.targetProduct!.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
@ -188,8 +188,8 @@ buildPersonalizedDiscountCoupon(
Container(
child: Text(
"Pay : GH¢ " +
(coupon.targetProduct.unitPrice- (coupon.targetProduct.unitPrice *
(coupon.lowerLimit / 100)))
(coupon.targetProduct!.unitPrice!- (coupon.targetProduct!.unitPrice! *
(coupon.lowerLimit! / 100)))
.toStringAsFixed(2) +
" only",
style: TextStyle(
@ -202,7 +202,7 @@ buildPersonalizedDiscountCoupon(
? Container()
: Container(
child: Text(
"Condition : " + coupon.condition,
"Condition : " + coupon.condition!,
),
),
],
@ -281,9 +281,9 @@ buildPersonalizedDiscountCoupon(
),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: coupon.upperLimit < 50.1 ? tesoBlue : Colors.red,
primary: coupon.upperLimit! < 50.1 ? tesoBlue : Colors.red,
),
onPressed: acquiring,
onPressed: acquiring as void Function()?,
child: Text(
"Accept Coupon",
style: TextStyle(color: Colors.white),

10
lib/Pages/PageWidgets/Coupons/personalizedFreebie.dart

@ -83,7 +83,7 @@ buildPersonalizedFreebieCoupon(
child: Column(
children: [
Text(
coupon.issuer.businessName.toUpperCase(),
coupon.issuer!.businessName!.toUpperCase(),
style: TextStyle(
color: Colors.black,
fontSize: 18,
@ -123,7 +123,7 @@ buildPersonalizedFreebieCoupon(
children: [
Text(
"ORIGINAL PRICE : GH¢ " +
coupon.targetProduct.unitPrice
coupon.targetProduct!.unitPrice!
.toStringAsFixed(2),
style: TextStyle(
color: Colors.black,
@ -148,7 +148,7 @@ buildPersonalizedFreebieCoupon(
vertical:
MediaQuery.of(context).size.width * 0.15),
child: Text(
coupon.targetProduct.productName.toUpperCase(),
coupon.targetProduct!.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black,
@ -192,7 +192,7 @@ buildPersonalizedFreebieCoupon(
: Container(
child: Text(
"Condition : " +
coupon.condition
coupon.condition!
.replaceAll('"', ""),
style: TextStyle(
color: Colors.black,
@ -267,7 +267,7 @@ buildPersonalizedFreebieCoupon(
style: ElevatedButton.styleFrom(
primary: accentMain,
),
onPressed: acquiring,
onPressed: acquiring as void Function()?,
child: Text(
"Accept Coupon",
style: TextStyle(color: Colors.white),

48
lib/Pages/PageWidgets/CouponsList/activeCoupon.dart

@ -46,7 +46,7 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
image: coupon.upperLimit < 50.1
image: coupon.upperLimit! < 50.1
? DecorationImage(
fit: BoxFit.fill,
image: AssetImage("assets/images/blue.png"),
@ -96,7 +96,7 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
child: Column(
children: [
Text(
coupon.issuer.businessName.toUpperCase(),
coupon.issuer!.businessName!.toUpperCase(),
style: TextStyle(
color: Colors.white,
fontSize: 18,
@ -135,7 +135,7 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
children: [
Text(
"ORIGINAL PRICE : GH¢ " +
coupon.targetProduct.unitPrice
coupon.targetProduct!.unitPrice
.toString(),
style: TextStyle(
color: Colors.white,
@ -146,10 +146,10 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
),
Text(
"DISCOUNTED PRICE : GH¢ " +
(coupon.targetProduct.unitPrice -
(coupon.targetProduct
.unitPrice *
(coupon.worth / 100)))
(coupon.targetProduct!.unitPrice! -
(coupon.targetProduct!
.unitPrice! *
(coupon.worth! / 100)))
.toStringAsFixed(2),
style: TextStyle(
color: Colors.white,
@ -187,8 +187,8 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
),
child: Text(
CouponRateCalculator.getRate(coupon
.targetProduct.unitPrice *
(coupon.worth / 100))
.targetProduct!.unitPrice! *
(coupon.worth! / 100))
.toString(),
style: TextStyle(
color: Colors.white,
@ -212,7 +212,7 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
vertical:
MediaQuery.of(context).size.width * 0.15),
child: Text(
coupon.targetProduct.productName.toUpperCase(),
coupon.targetProduct!.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
@ -245,10 +245,10 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
Container(
child: Text(
"Pay : GH¢ " +
(coupon.targetProduct.unitPrice -
(coupon.targetProduct
.unitPrice *
(coupon.worth / 100)))
(coupon.targetProduct!.unitPrice! -
(coupon.targetProduct!
.unitPrice! *
(coupon.worth! / 100)))
.toStringAsFixed(2) +
" only",
style: TextStyle(
@ -262,7 +262,7 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
: Container(
child: Text(
"Condition : " +
coupon.condition
coupon.condition!
.replaceAll('"', ""),
),
),
@ -309,11 +309,11 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
mainAxisSize: MainAxisSize.min,
children: [
Text(
coupon.worth.toStringAsFixed(1) + "%",
coupon.worth!.toStringAsFixed(1) + "%",
style: TextStyle(
color: Colors.white,
fontSize:
SizeConfig.safeBlockHorizontal * 6,
SizeConfig.safeBlockHorizontal * 4,
fontWeight: FontWeight.w900,
),
),
@ -349,20 +349,20 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: coupon.upperLimit < 50.1 ? tesoBlue : Colors.red,
primary: coupon.upperLimit! < 50.1 ? tesoBlue : Colors.red,
),
onPressed: () async {
CouponsHead couponsHead = new CouponsHead();
couponsHead.businessId = coupon.issuer.businessId;
couponsHead.businessId = coupon.issuer!.businessId;
couponsHead.expiration = coupon.expiration;
couponsHead.couponId = coupon.couponId;
couponsHead.quantity = 1;
couponsHead.state = "active";
couponsHead.lower = coupon.worth;
couponsHead.upper = coupon.upperLimit;
couponsHead.targetProduct = coupon.targetProduct.productID;
couponsHead.targetProduct = coupon.targetProduct!.productID;
double price =
coupon.targetProduct.unitPrice * (coupon.worth / 100);
coupon.targetProduct!.unitPrice! * (coupon.worth! / 100);
int cost = CouponRateCalculator.getRate(price);
acquiring(couponsHead, cost);
@ -401,9 +401,9 @@ buildActiveDiscountCoupon(BuildContext context, CouponDetails coupon,
child: new RotatedBox(
quarterTurns: 3,
child: Slider(
value: coupon.worth,
min: coupon.lowerLimit,
max: coupon.upperLimit,
value: coupon.worth!,
min: coupon.lowerLimit!,
max: coupon.upperLimit!,
divisions: 20,
activeColor: accentMain,
inactiveColor: darkAccent,

18
lib/Pages/PageWidgets/CouponsList/activeFreebieCoupon.dart

@ -87,7 +87,7 @@ buildFreebieCoupon(
child: Column(
children: [
Text(
coupon.issuer.businessName.toUpperCase(),
coupon.issuer!.businessName!.toUpperCase(),
style: TextStyle(
color: Colors.black,
fontSize: 18,
@ -128,7 +128,7 @@ buildFreebieCoupon(
children: [
Text(
"ORIGINAL PRICE : GH¢ " +
coupon.targetProduct.unitPrice
coupon.targetProduct!.unitPrice!
.toStringAsFixed(2),
style: TextStyle(
color: Colors.black,
@ -175,8 +175,8 @@ buildFreebieCoupon(
),
child: Text(
CouponRateCalculator.getRate(
coupon.targetProduct.unitPrice *
(coupon.worth / 100))
coupon.targetProduct!.unitPrice! *
(coupon.worth! / 100))
.toString(),
style: TextStyle(
color: Colors.black,
@ -201,7 +201,7 @@ buildFreebieCoupon(
vertical:
MediaQuery.of(context).size.width * 0.15),
child: Text(
coupon.targetProduct.productName.toUpperCase(),
coupon.targetProduct!.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black,
@ -245,7 +245,7 @@ buildFreebieCoupon(
: Container(
child: Text(
"Condition : " +
coupon.condition
coupon.condition!
.replaceAll('"', ""),
style: TextStyle(
color: Colors.black,
@ -322,16 +322,16 @@ buildFreebieCoupon(
),
onPressed: () async {
CouponsHead couponsHead = new CouponsHead();
couponsHead.businessId = coupon.issuer.businessId;
couponsHead.businessId = coupon.issuer!.businessId;
couponsHead.expiration = coupon.expiration;
couponsHead.couponId = coupon.couponId;
couponsHead.quantity = 1;
couponsHead.state = "active";
couponsHead.lower = 100;
couponsHead.upper = 100;
couponsHead.targetProduct = coupon.targetProduct.productID;
couponsHead.targetProduct = coupon.targetProduct!.productID;
double price =
coupon.targetProduct.unitPrice * (couponsHead.lower / 100);
coupon.targetProduct!.unitPrice! * (couponsHead.lower! / 100);
int cost = CouponRateCalculator.getRate(price);
acquiring(couponsHead, cost);
},

4
lib/Pages/PageWidgets/DesireComeTrue/DesireTile.dart

@ -37,7 +37,7 @@ buildProductDesire(BuildContext context, Desire item, Function addItem) {
width: MediaQuery.of(context).size.width * 0.28,
fit: BoxFit.fill,
//controller: controller,
image: NetworkImage(productURL + item.productImage),
image: NetworkImage(productURL + item.productImage!),
),
),
),
@ -48,7 +48,7 @@ buildProductDesire(BuildContext context, Desire item, Function addItem) {
children: [
Container(
width: double.infinity,
child: Text("Item Name : " + item.productName),
child: Text("Item Name : " + item.productName!),
),
Container(
width: double.infinity,

26
lib/Pages/PageWidgets/DesireComeTrue/DesiredItem.dart

@ -4,10 +4,10 @@ import 'package:jiffy/jiffy.dart';
import 'package:shared_preferences/shared_preferences.dart';
class DesiredItem extends StatefulWidget {
final Desire item;
final int number;
final List<Desire> selected;
const DesiredItem({Key key, this.item, this.number, this.selected})
final Desire? item;
final int? number;
final List<Desire?>? selected;
const DesiredItem({Key? key, this.item, this.number, this.selected})
: super(key: key);
@override
_DesiredItemState createState() => _DesiredItemState();
@ -15,10 +15,10 @@ class DesiredItem extends StatefulWidget {
class _DesiredItemState extends State<DesiredItem>
with TickerProviderStateMixin {
Animation<double> _spaceWidth;
AnimationController _controller;
AnimationController _strikeController;
Animation<double> _strikePercent;
late Animation<double> _spaceWidth;
late AnimationController _controller;
late AnimationController _strikeController;
late Animation<double> _strikePercent;
bool cancelled = false;
@ -77,14 +77,14 @@ class _DesiredItemState extends State<DesiredItem>
removeElement(item) {
cancel();
if (cancelled) {
widget.selected.remove(item);
widget.selected!.remove(item);
SharedPreferences.getInstance().then((value) {
var jiffy = Jiffy()..add(months: 1);
value.setString(
"desire" + jiffy.format("MMMM, yyyy"), widget.selected.toString());
});
} else {
widget.selected.insert(widget.number - 1, item);
widget.selected!.insert(widget.number! - 1, item);
SharedPreferences.getInstance().then((value) {
var jiffy = Jiffy()..add(months: 1);
value.setString(
@ -122,10 +122,10 @@ class _DesiredItemState extends State<DesiredItem>
foregroundPainter:
StrikeThroughPainter(_strikePercent.value),
child: Text(
widget.item.productName.length > 20
? widget.item.productName.substring(0, 16) +
widget.item!.productName!.length > 20
? widget.item!.productName!.substring(0, 16) +
"......"
: widget.item.productName,
: widget.item!.productName!,
style: _getValidateStyle(true)),
),
),

8
lib/Pages/PageWidgets/Editors/SampleThumbnail.dart

@ -19,7 +19,7 @@ buildFilterThumb(BuildContext context, ColorFilter color, Uint8List thumb) {
width: SizeConfig.safeBlockHorizontal * 25,
color: Color.fromRGBO(0, 0, 0, 0.8),
child: Text(
color.name,
color.name!,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 15,
@ -39,9 +39,9 @@ buildFilterThumb(BuildContext context, ColorFilter color, Uint8List thumb) {
Container(
width: SizeConfig.safeBlockHorizontal * 25,
height: 93,
color: color.name.toLowerCase() == "original"
? color.code.withOpacity(0)
: color.code.withOpacity(0.5),
color: color.name!.toLowerCase() == "original"
? color.code!.withOpacity(0)
: color.code!.withOpacity(0.5),
),
],
),

10
lib/Pages/PageWidgets/Explore/business.dart

@ -27,7 +27,7 @@ buildBusiness(BuildContext context, TesoShop shop) {
height: MediaQuery.of(context).size.width * 0.60,
child: Wrap(
children: [
shop.logo.toLowerCase() == "null" || shop.logo == null
shop.logo!.toLowerCase() == "null" || shop.logo == null
? Image(
width: double.infinity,
height: MediaQuery.of(context).size.width * 0.45,
@ -35,7 +35,7 @@ buildBusiness(BuildContext context, TesoShop shop) {
image: AssetImage("assets/images/store.png"),
)
: CachedNetworkImage(
imageUrl: businessLogoURL + shop.logo,
imageUrl: businessLogoURL + shop.logo!,
imageBuilder: (context, imageProvider) => FadeInImage(
width: double.infinity,
height: MediaQuery.of(context).size.width * 0.45,
@ -50,7 +50,7 @@ buildBusiness(BuildContext context, TesoShop shop) {
color: Colors.white10,
),
child: Text(
shop.shopName.toUpperCase(),
shop.shopName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
// color: Colors.black45,
@ -63,7 +63,7 @@ buildBusiness(BuildContext context, TesoShop shop) {
width: MediaQuery.of(context).size.width,
color: Colors.white10,
child: Text(
shop.categoryShop,
shop.categoryShop!,
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.normal,
@ -74,7 +74,7 @@ buildBusiness(BuildContext context, TesoShop shop) {
width: MediaQuery.of(context).size.width,
color: Colors.white10,
child: Text(
shop.shopAddress,
shop.shopAddress!,
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.normal,

4
lib/Pages/PageWidgets/Explore/categoriesTile.dart

@ -28,7 +28,7 @@ buildCategory(BuildContext context, Category category) {
Container(
margin: EdgeInsets.all(4.5),
child: Image(
image: AssetImage(category.image),
image: AssetImage(category.image!),
width: 24,
height: 24,
),
@ -38,7 +38,7 @@ buildCategory(BuildContext context, Category category) {
),
Container(
margin: EdgeInsets.all(4.5),
child: Text(category.name),
child: Text(category.name!),
),
],
),

2
lib/Pages/PageWidgets/Explore/popular.dart

@ -58,7 +58,7 @@ buildPopularItem(BuildContext context, Product product) {
),
Center(
child: Text(
product.productName.toUpperCase(),
product.productName!.toUpperCase(),
style: TextStyle(
fontSize: SizeConfig.blockSizeHorizontal * 3.5,
color: Colors.white,

2
lib/Pages/PageWidgets/Explore/products.dart

@ -46,7 +46,7 @@ buildProducts(BuildContext context, Product product) {
),
child: Center(
child: Text(
product.productName.toUpperCase(),
product.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,

2
lib/Pages/PageWidgets/Explore/trending.dart

@ -44,7 +44,7 @@ buildTrend(BuildContext context, Product product) {
width: double.infinity,
margin: EdgeInsets.only(bottom: 40),
child: Text(
product.productName.toUpperCase(),
product.productName!.toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,

8
lib/Pages/PageWidgets/Friends/friendTile.dart

@ -22,14 +22,14 @@ buildFriend(BuildContext context, TesoUser friend) {
child: friend.thumbnail_dp == null
? Center(
child: Text(
friend.username.characters
friend.username!.characters
.characterAt(0)
.toString()
.toUpperCase(),
),
)
: CachedNetworkImage(
imageUrl: userdpURL + friend.thumbnail_dp,
imageUrl: userdpURL + friend.thumbnail_dp!,
imageBuilder: (context, imageProvider) => Image(
height: 90,
width: 90,
@ -54,7 +54,7 @@ buildFriend(BuildContext context, TesoUser friend) {
child: Align(
alignment: Alignment.centerLeft,
child: Text(
friend.username,
friend.username!,
style: TextStyle(
fontSize: 12.5,
color: Colors.grey,
@ -68,7 +68,7 @@ buildFriend(BuildContext context, TesoUser friend) {
width: MediaQuery.of(context).size.width -
(MediaQuery.of(context).size.width * 0.35),
child: Text(
friend.firstname + " " + friend.lastname,
friend.firstname! + " " + friend.lastname!,
textAlign: TextAlign.left,
),
),

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save