diff --git a/.metadata b/.metadata index 784ce129..02e9c7bf 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3" + revision: "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" channel: "stable" project_type: app @@ -13,11 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 - platform: web - create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 - base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3 + create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 + base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819 # User provided section diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 00000000..7ed3f94f --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,82 @@ +{ + "project_info": { + "project_number": "60983052215", + "project_id": "vidi-test1", + "storage_bucket": "vidi-test1.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:60983052215:android:17d7700672bec9d5030a32", + "android_client_info": { + "package_name": "com.example.app" + } + }, + "oauth_client": [ + { + "client_id": "60983052215-s6lggi6uveieglto1cqrshegs5dps4c8.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAAe7AM0b88G9CSnbYM8rz8SqOnlue6N-4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "60983052215-s6lggi6uveieglto1cqrshegs5dps4c8.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "60983052215-enno45sock5593stgfsq6q4qt2o91r4e.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.vidi.test" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:60983052215:android:ac5e4f1def1eeac2030a32", + "android_client_info": { + "package_name": "com.vidi.test" + } + }, + "oauth_client": [ + { + "client_id": "60983052215-s6lggi6uveieglto1cqrshegs5dps4c8.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAAe7AM0b88G9CSnbYM8rz8SqOnlue6N-4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "60983052215-s6lggi6uveieglto1cqrshegs5dps4c8.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "60983052215-enno45sock5593stgfsq6q4qt2o91r4e.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.vidi.test" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java new file mode 100644 index 00000000..e36af587 --- /dev/null +++ b/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -0,0 +1,84 @@ +package io.flutter.plugins; + +import androidx.annotation.Keep; +import androidx.annotation.NonNull; +import io.flutter.Log; + +import io.flutter.embedding.engine.FlutterEngine; + +/** + * Generated file. Do not edit. + * This file is generated by the Flutter tool based on the + * plugins that support the Android platform. + */ +@Keep +public final class GeneratedPluginRegistrant { + private static final String TAG = "GeneratedPluginRegistrant"; + public static void registerWith(@NonNull FlutterEngine flutterEngine) { + try { + flutterEngine.getPlugins().add(new com.example.desktop_webview_auth.DesktopWebviewAuthPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin desktop_webview_auth, com.example.desktop_webview_auth.DesktopWebviewAuthPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.mr.flutter.plugin.filepicker.FilePickerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin file_picker, com.mr.flutter.plugin.filepicker.FilePickerPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.analytics.FlutterFirebaseAnalyticsPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_analytics, io.flutter.plugins.firebase.analytics.FlutterFirebaseAnalyticsPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_auth, io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_core, io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.dynamiclinks.FlutterFirebaseDynamicLinksPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_dynamic_links, io.flutter.plugins.firebase.dynamiclinks.FlutterFirebaseDynamicLinksPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.firebaseremoteconfig.FirebaseRemoteConfigPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_remote_config, io.flutter.plugins.firebase.firebaseremoteconfig.FirebaseRemoteConfigPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_storage, io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.googlesignin.GoogleSignInPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin google_sign_in_android, io.flutter.plugins.googlesignin.GoogleSignInPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin image_picker_android, io.flutter.plugins.imagepicker.ImagePickerPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e); + } + } +} diff --git a/android/app/src/main/kotlin/com/example/app/MainActivity.kt b/android/app/src/main/kotlin/com/example/app/MainActivity.kt new file mode 100644 index 00000000..026d9a93 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/app/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/android/local.properties b/android/local.properties new file mode 100644 index 00000000..81c1904b --- /dev/null +++ b/android/local.properties @@ -0,0 +1,2 @@ +sdk.dir=/Users/chiragsuthar/Library/Android/sdk +flutter.sdk=/Users/chiragsuthar/development/flutter \ No newline at end of file diff --git a/assets/icons/logo.png b/assets/icons/logo.png index 77ffea42..67156b04 100644 Binary files a/assets/icons/logo.png and b/assets/icons/logo.png differ diff --git a/assets/images/fire1.png b/assets/images/fire1.png new file mode 100644 index 00000000..ae3074e7 Binary files /dev/null and b/assets/images/fire1.png differ diff --git a/assets/images/flutterfire_300x.png b/assets/images/flutterfire_300x.png index 604593b8..6141146d 100644 Binary files a/assets/images/flutterfire_300x.png and b/assets/images/flutterfire_300x.png differ diff --git a/assets/images/shoes.jpg b/assets/images/shoes.jpg new file mode 100644 index 00000000..676b6f4d Binary files /dev/null and b/assets/images/shoes.jpg differ diff --git a/firebase.json b/firebase.json new file mode 100644 index 00000000..e32dc221 --- /dev/null +++ b/firebase.json @@ -0,0 +1 @@ +{"flutter":{"platforms":{"macos":{"default":{"projectId":"vidi-test1","appId":"1:60983052215:ios:144bbddb0327b1a5030a32","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"vidi-test1","configurations":{"ios":"1:60983052215:ios:144bbddb0327b1a5030a32"}}},"ios":{"default":{"projectId":"vidi-test1","appId":"1:60983052215:ios:144bbddb0327b1a5030a32","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}}}}} \ No newline at end of file diff --git a/ios/Flutter/Generated.xcconfig b/ios/Flutter/Generated.xcconfig new file mode 100644 index 00000000..ec2aabdb --- /dev/null +++ b/ios/Flutter/Generated.xcconfig @@ -0,0 +1,14 @@ +// This is a generated file; do not edit or check into version control. +FLUTTER_ROOT=/Users/chiragsuthar/development/flutter +FLUTTER_APPLICATION_PATH=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get +COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_TARGET=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get/lib/main.dart +FLUTTER_BUILD_DIR=build +FLUTTER_BUILD_NAME=1.0.0 +FLUTTER_BUILD_NUMBER=1 +EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386 +EXCLUDED_ARCHS[sdk=iphoneos*]=armv7 +DART_OBFUSCATION=false +TRACK_WIDGET_CREATION=true +TREE_SHAKE_ICONS=false +PACKAGE_CONFIG=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get/.dart_tool/package_config.json diff --git a/ios/Flutter/flutter_export_environment.sh b/ios/Flutter/flutter_export_environment.sh new file mode 100755 index 00000000..1a0f4aeb --- /dev/null +++ b/ios/Flutter/flutter_export_environment.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=/Users/chiragsuthar/development/flutter" +export "FLUTTER_APPLICATION_PATH=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_TARGET=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get/lib/main.dart" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=true" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get/.dart_tool/package_config.json" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..d97f17e2 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..75bafeda --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,353 @@ +PODS: + - AppAuth (1.7.5): + - AppAuth/Core (= 1.7.5) + - AppAuth/ExternalUserAgent (= 1.7.5) + - AppAuth/Core (1.7.5) + - AppAuth/ExternalUserAgent (1.7.5): + - AppAuth/Core + - desktop_webview_auth (0.0.1): + - Flutter + - DKImagePickerController/Core (4.3.9): + - DKImagePickerController/ImageDataManager + - DKImagePickerController/Resource + - DKImagePickerController/ImageDataManager (4.3.9) + - DKImagePickerController/PhotoGallery (4.3.9): + - DKImagePickerController/Core + - DKPhotoGallery + - DKImagePickerController/Resource (4.3.9) + - DKPhotoGallery (0.0.19): + - DKPhotoGallery/Core (= 0.0.19) + - DKPhotoGallery/Model (= 0.0.19) + - DKPhotoGallery/Preview (= 0.0.19) + - DKPhotoGallery/Resource (= 0.0.19) + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Core (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Preview + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Model (0.0.19): + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Preview (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Resource + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Resource (0.0.19): + - SDWebImage + - SwiftyGif + - file_picker (0.0.1): + - DKImagePickerController/PhotoGallery + - Flutter + - Firebase/Analytics (10.25.0): + - Firebase/Core + - Firebase/Auth (10.25.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 10.25.0) + - Firebase/Core (10.25.0): + - Firebase/CoreOnly + - FirebaseAnalytics (~> 10.25.0) + - Firebase/CoreOnly (10.25.0): + - FirebaseCore (= 10.25.0) + - Firebase/DynamicLinks (10.25.0): + - Firebase/CoreOnly + - FirebaseDynamicLinks (~> 10.25.0) + - Firebase/RemoteConfig (10.25.0): + - Firebase/CoreOnly + - FirebaseRemoteConfig (~> 10.25.0) + - Firebase/Storage (10.25.0): + - Firebase/CoreOnly + - FirebaseStorage (~> 10.25.0) + - firebase_analytics (10.10.7): + - Firebase/Analytics (= 10.25.0) + - firebase_core + - Flutter + - firebase_auth (4.19.5): + - Firebase/Auth (= 10.25.0) + - firebase_core + - Flutter + - firebase_core (2.32.0): + - Firebase/CoreOnly (= 10.25.0) + - Flutter + - firebase_dynamic_links (5.5.5): + - Firebase/DynamicLinks (= 10.25.0) + - firebase_core + - Flutter + - firebase_remote_config (4.4.7): + - Firebase/RemoteConfig (= 10.25.0) + - firebase_core + - Flutter + - firebase_storage (11.7.5): + - Firebase/Storage (= 10.25.0) + - firebase_core + - Flutter + - FirebaseABTesting (10.29.0): + - FirebaseCore (~> 10.0) + - FirebaseAnalytics (10.25.0): + - FirebaseAnalytics/AdIdSupport (= 10.25.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAnalytics/AdIdSupport (10.25.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleAppMeasurement (= 10.25.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAppCheckInterop (10.25.0) + - FirebaseAuth (10.25.0): + - FirebaseAppCheckInterop (~> 10.17) + - FirebaseCore (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - RecaptchaInterop (~> 100.0) + - FirebaseAuthInterop (10.29.0) + - FirebaseCore (10.25.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) + - FirebaseCoreExtension (10.29.0): + - FirebaseCore (~> 10.0) + - FirebaseCoreInternal (10.25.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseDynamicLinks (10.25.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (10.29.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - PromisesObjC (~> 2.1) + - FirebaseRemoteConfig (10.25.0): + - FirebaseABTesting (~> 10.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfigInterop (~> 10.23) + - FirebaseSharedSwift (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseRemoteConfigInterop (10.29.0) + - FirebaseSharedSwift (10.29.0) + - FirebaseStorage (10.25.0): + - FirebaseAppCheckInterop (~> 10.0) + - FirebaseAuthInterop (~> 10.25) + - FirebaseCore (~> 10.0) + - FirebaseCoreExtension (~> 10.0) + - GoogleUtilities/Environment (~> 7.12) + - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - Flutter (1.0.0) + - google_sign_in_ios (0.0.1): + - AppAuth (>= 1.7.4) + - Flutter + - FlutterMacOS + - GoogleSignIn (~> 7.1) + - GTMSessionFetcher (>= 3.4.0) + - GoogleAppMeasurement (10.25.0): + - GoogleAppMeasurement/AdIdSupport (= 10.25.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/AdIdSupport (10.25.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.25.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleAppMeasurement/WithoutAdIdSupport (10.25.0): + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" + - nanopb (< 2.30911.0, >= 2.30908.0) + - GoogleSignIn (7.1.0): + - AppAuth (< 2.0, >= 1.7.3) + - GTMAppAuth (< 5.0, >= 4.1.1) + - GTMSessionFetcher/Core (~> 3.3) + - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Privacy + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.13.3): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/MethodSwizzler (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.13.3)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (7.13.3) + - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GTMAppAuth (4.1.1): + - AppAuth/Core (~> 1.7) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher (3.4.1): + - GTMSessionFetcher/Full (= 3.4.1) + - GTMSessionFetcher/Core (3.4.1) + - GTMSessionFetcher/Full (3.4.1): + - GTMSessionFetcher/Core + - image_picker_ios (0.0.1): + - Flutter + - nanopb (2.30910.0): + - nanopb/decode (= 2.30910.0) + - nanopb/encode (= 2.30910.0) + - nanopb/decode (2.30910.0) + - nanopb/encode (2.30910.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - PromisesObjC (2.4.0) + - RecaptchaInterop (100.0.0) + - SDWebImage (5.19.2): + - SDWebImage/Core (= 5.19.2) + - SDWebImage/Core (5.19.2) + - sqflite (0.0.3): + - Flutter + - FlutterMacOS + - SwiftyGif (5.4.5) + +DEPENDENCIES: + - desktop_webview_auth (from `.symlinks/plugins/desktop_webview_auth/ios`) + - file_picker (from `.symlinks/plugins/file_picker/ios`) + - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) + - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_dynamic_links (from `.symlinks/plugins/firebase_dynamic_links/ios`) + - firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`) + - firebase_storage (from `.symlinks/plugins/firebase_storage/ios`) + - Flutter (from `Flutter`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - sqflite (from `.symlinks/plugins/sqflite/darwin`) + +SPEC REPOS: + trunk: + - AppAuth + - DKImagePickerController + - DKPhotoGallery + - Firebase + - FirebaseABTesting + - FirebaseAnalytics + - FirebaseAppCheckInterop + - FirebaseAuth + - FirebaseAuthInterop + - FirebaseCore + - FirebaseCoreExtension + - FirebaseCoreInternal + - FirebaseDynamicLinks + - FirebaseInstallations + - FirebaseRemoteConfig + - FirebaseRemoteConfigInterop + - FirebaseSharedSwift + - FirebaseStorage + - GoogleAppMeasurement + - GoogleSignIn + - GoogleUtilities + - GTMAppAuth + - GTMSessionFetcher + - nanopb + - PromisesObjC + - RecaptchaInterop + - SDWebImage + - SwiftyGif + +EXTERNAL SOURCES: + desktop_webview_auth: + :path: ".symlinks/plugins/desktop_webview_auth/ios" + file_picker: + :path: ".symlinks/plugins/file_picker/ios" + firebase_analytics: + :path: ".symlinks/plugins/firebase_analytics/ios" + firebase_auth: + :path: ".symlinks/plugins/firebase_auth/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_dynamic_links: + :path: ".symlinks/plugins/firebase_dynamic_links/ios" + firebase_remote_config: + :path: ".symlinks/plugins/firebase_remote_config/ios" + firebase_storage: + :path: ".symlinks/plugins/firebase_storage/ios" + Flutter: + :path: Flutter + google_sign_in_ios: + :path: ".symlinks/plugins/google_sign_in_ios/darwin" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + sqflite: + :path: ".symlinks/plugins/sqflite/darwin" + +SPEC CHECKSUMS: + AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa + desktop_webview_auth: d645139460ef203d50bd0cdb33356785dd939cce + DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c + DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 + file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 + Firebase: 0312a2352584f782ea56f66d91606891d4607f06 + firebase_analytics: cc06e24d6a2343c44f845b3112143db72d10ef78 + firebase_auth: 76ea642e91a9e914b3af751a416046ce1a965cf4 + firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197 + firebase_dynamic_links: c4713196b078b72fe8ca825433eb7fbebc009dd9 + firebase_remote_config: 7b05c80210ab558c80f7a756681022b4ee98eea0 + firebase_storage: e8b44d3f47e35f60dde2a119da11dc6e8962bef3 + FirebaseABTesting: d87f56707159bae64e269757a6e963d490f2eebe + FirebaseAnalytics: ec00fe8b93b41dc6fe4a28784b8e51da0647a248 + FirebaseAppCheckInterop: 5da5ce93e8797a215e3f677fb0654b74e736c8b8 + FirebaseAuth: c0f93dcc570c9da2bffb576969d793e95c344fbb + FirebaseAuthInterop: 17db81e9b198afb0f95ce48c133825727eed55d3 + FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483 + FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f + FirebaseCoreInternal: 910a81992c33715fec9263ca7381d59ab3a750b7 + FirebaseDynamicLinks: 12c9f5b643943e0565ed28080373f89cbcb914a3 + FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd + FirebaseRemoteConfig: 9f3935cefecd85d5b312192117f444957de24a75 + FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d + FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e + FirebaseStorage: 44f4e25073f6fa0d4d8c09f5bec299ee9e4eb985 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 + GoogleAppMeasurement: 9abf64b682732fed36da827aa2a68f0221fd2356 + GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de + GTMSessionFetcher: 8000756fc1c19d2e5697b90311f7832d2e33f6cd + image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 + nanopb: 438bc412db1928dac798aa6fd75726007be04262 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 + SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec + SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 + +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 + +COCOAPODS: 1.15.2 diff --git a/ios/Runner/GeneratedPluginRegistrant.h b/ios/Runner/GeneratedPluginRegistrant.h new file mode 100644 index 00000000..7a890927 --- /dev/null +++ b/ios/Runner/GeneratedPluginRegistrant.h @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GeneratedPluginRegistrant_h +#define GeneratedPluginRegistrant_h + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GeneratedPluginRegistrant : NSObject ++ (void)registerWithRegistry:(NSObject*)registry; +@end + +NS_ASSUME_NONNULL_END +#endif /* GeneratedPluginRegistrant_h */ diff --git a/ios/Runner/GeneratedPluginRegistrant.m b/ios/Runner/GeneratedPluginRegistrant.m new file mode 100644 index 00000000..3023baca --- /dev/null +++ b/ios/Runner/GeneratedPluginRegistrant.m @@ -0,0 +1,98 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#import "GeneratedPluginRegistrant.h" + +#if __has_include() +#import +#else +@import desktop_webview_auth; +#endif + +#if __has_include() +#import +#else +@import file_picker; +#endif + +#if __has_include() +#import +#else +@import firebase_analytics; +#endif + +#if __has_include() +#import +#else +@import firebase_auth; +#endif + +#if __has_include() +#import +#else +@import firebase_core; +#endif + +#if __has_include() +#import +#else +@import firebase_dynamic_links; +#endif + +#if __has_include() +#import +#else +@import firebase_remote_config; +#endif + +#if __has_include() +#import +#else +@import firebase_storage; +#endif + +#if __has_include() +#import +#else +@import google_sign_in_ios; +#endif + +#if __has_include() +#import +#else +@import image_picker_ios; +#endif + +#if __has_include() +#import +#else +@import path_provider_foundation; +#endif + +#if __has_include() +#import +#else +@import sqflite; +#endif + +@implementation GeneratedPluginRegistrant + ++ (void)registerWithRegistry:(NSObject*)registry { + [DesktopWebviewAuthPlugin registerWithRegistrar:[registry registrarForPlugin:@"DesktopWebviewAuthPlugin"]]; + [FilePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FilePickerPlugin"]]; + [FLTFirebaseAnalyticsPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseAnalyticsPlugin"]]; + [FLTFirebaseAuthPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseAuthPlugin"]]; + [FLTFirebaseCorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseCorePlugin"]]; + [FLTFirebaseDynamicLinksPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseDynamicLinksPlugin"]]; + [FLTFirebaseRemoteConfigPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseRemoteConfigPlugin"]]; + [FLTFirebaseStoragePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseStoragePlugin"]]; + [FLTGoogleSignInPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTGoogleSignInPlugin"]]; + [FLTImagePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTImagePickerPlugin"]]; + [PathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"PathProviderPlugin"]]; + [SqflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"SqflitePlugin"]]; +} + +@end diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 00000000..d5c17f91 --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 60983052215-slgh5iodl4v5hf8rl0t89spdru51d1cp.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.60983052215-slgh5iodl4v5hf8rl0t89spdru51d1cp + API_KEY + AIzaSyDJeHzafLwg8_USKvDbPpCu1ctrSLdg2SU + GCM_SENDER_ID + 60983052215 + PLIST_VERSION + 1 + BUNDLE_ID + com.example.flutterFireGet + PROJECT_ID + vidi-test1 + STORAGE_BUCKET + vidi-test1.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:60983052215:ios:144bbddb0327b1a5030a32 + + \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index fc7f1dd4..09b5f55a 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -51,5 +51,16 @@ Allow access to microphone for video recording NSPhotoLibraryUsageDescription Allow access to photo library + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + com.googleusercontent.apps.60983052215-slgh5iodl4v5hf8rl0t89spdru51d1cp + + + diff --git a/lib/app/modules/cart/controllers/cart_controller.dart b/lib/app/modules/cart/controllers/cart_controller.dart index c938ec4c..eacb6093 100644 --- a/lib/app/modules/cart/controllers/cart_controller.dart +++ b/lib/app/modules/cart/controllers/cart_controller.dart @@ -1,23 +1,22 @@ import 'package:get/get.dart'; +import 'package:get_flutter_fire/models/product.dart'; class CartController extends GetxController { //TODO: Implement CartController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - @override - void onReady() { - super.onReady(); + final RxList _products = [].obs; + + void addProduct(Product product) { + _products.add(product); } - @override - void onClose() { - super.onClose(); + List getProducts() { + return _products; } + get total => _products.length; + void increment() => count.value++; } diff --git a/lib/app/modules/cart/views/cart_view.dart b/lib/app/modules/cart/views/cart_view.dart index 3e048c79..9c839819 100644 --- a/lib/app/modules/cart/views/cart_view.dart +++ b/lib/app/modules/cart/views/cart_view.dart @@ -1,3 +1,4 @@ +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -10,15 +11,53 @@ class CartView extends GetView { const CartView({super.key}); @override Widget build(BuildContext context) { + final products = controller.getProducts(); + return ScreenWidget( appBar: AppBar( title: Text('${AuthService.to.userName} Cart'), centerTitle: true, ), - body: const Center( - child: Text( - 'CartView is working', - style: TextStyle(fontSize: 20), + body: Center( + child: ListView.builder( + itemCount: products.length, + itemBuilder: (context, index) => Container( + decoration: BoxDecoration( + color: Colors.white, // Set container color to purple[300] + border: Border.all( + color: Theme.of(context).dividerColor, + ), + borderRadius: const BorderRadius.all( + Radius.circular(16), + ), + ), + clipBehavior: Clip.hardEdge, + margin: const EdgeInsets.all(10), + child: Row( + children: [ + CachedNetworkImage( + imageUrl: products[index].imageUrl, + height: 72, + width: 144, + fit: BoxFit.cover, + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + products[index].name, + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + Text(products[index].id), + ], + ), + ) + ], + ), + ), ), ), screen: screen!, diff --git a/lib/app/modules/categories/controllers/categories_controller.dart b/lib/app/modules/categories/controllers/categories_controller.dart index 6612e511..18b9e3d6 100644 --- a/lib/app/modules/categories/controllers/categories_controller.dart +++ b/lib/app/modules/categories/controllers/categories_controller.dart @@ -4,20 +4,6 @@ class CategoriesController extends GetxController { //TODO: Implement CategoriesController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/modules/checkout/controllers/checkout_controller.dart b/lib/app/modules/checkout/controllers/checkout_controller.dart index aa1265f6..078f1fea 100644 --- a/lib/app/modules/checkout/controllers/checkout_controller.dart +++ b/lib/app/modules/checkout/controllers/checkout_controller.dart @@ -4,20 +4,6 @@ class CheckoutController extends GetxController { //TODO: Implement CheckoutController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/modules/checkout/views/checkout_view.dart b/lib/app/modules/checkout/views/checkout_view.dart index b8b17072..4321ec8d 100644 --- a/lib/app/modules/checkout/views/checkout_view.dart +++ b/lib/app/modules/checkout/views/checkout_view.dart @@ -8,12 +8,8 @@ class CheckoutView extends GetView { const CheckoutView({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('CheckoutView'), - centerTitle: true, - ), - body: const Center( + return const Scaffold( + body: Center( child: Text( 'CheckoutView is working', style: TextStyle(fontSize: 20), diff --git a/lib/app/modules/dashboard/controllers/dashboard_controller.dart b/lib/app/modules/dashboard/controllers/dashboard_controller.dart index 24d91a16..8d9d2558 100644 --- a/lib/app/modules/dashboard/controllers/dashboard_controller.dart +++ b/lib/app/modules/dashboard/controllers/dashboard_controller.dart @@ -1,12 +1,30 @@ import 'dart:async'; - import 'package:get/get.dart'; class DashboardController extends GetxController { + // Existing properties final now = DateTime.now().obs; + final List items = [ + 'assets/images/shoes.jpg', + 'assets/images/fire1.png', + 'assets/images/flutterfire_300x.png', + ]; + + // New property to track the carousel index + final carouselIndex = 0.obs; + + @override + void onInit() { + // TODO: implement onInit + // API Call to receive data regarding these clothes + + super.onInit(); + } + @override void onReady() { super.onReady(); + // Update the time every second Timer.periodic( const Duration(seconds: 1), (timer) { @@ -14,4 +32,9 @@ class DashboardController extends GetxController { }, ); } + + // New method to update the carousel index + void updateCarouselIndex(int index) { + carouselIndex.value = index; + } } diff --git a/lib/app/modules/dashboard/views/dashboard_view.dart b/lib/app/modules/dashboard/views/dashboard_view.dart index f475030f..56b1458a 100644 --- a/lib/app/modules/dashboard/views/dashboard_view.dart +++ b/lib/app/modules/dashboard/views/dashboard_view.dart @@ -9,19 +9,155 @@ class DashboardView extends GetView { @override Widget build(BuildContext context) { return Scaffold( - body: Center( - child: Obx( - () => Column( - mainAxisSize: MainAxisSize.min, + body: SingleChildScrollView( + child: Column( + children: [ + _buildPurpleBackground(), + const SizedBox(height: 20), + _buildCarousel(context), + const SizedBox(height: 20), + _buildCarousel(context), + ], + ), + ), + ); + } + + Widget _buildPurpleBackground() { + return Container( + decoration: BoxDecoration( + color: Colors.purple[300], + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(40), + bottomRight: Radius.circular(40), + ), + ), + padding: const EdgeInsets.all(0), + child: Container( + width: double.infinity, + padding: const EdgeInsets.all(0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(300), + color: Colors.purple.withOpacity(0.4), + ), + child: Column( + children: [ + const SizedBox(height: 100), + _buildTitle(), + const SizedBox(height: 10), + _buildSearchBar(), + const SizedBox(height: 20), + _buildPopularCategories(), + const SizedBox(height: 50), + ], + ), + ), + ); + } + + Widget _buildTitle() { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0), + child: const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Good Day For Shopping...', + style: TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Widget _buildSearchBar() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + ), + child: const TextField( + decoration: InputDecoration( + hintText: 'Search in store', + prefixIcon: Icon(Icons.search), + contentPadding: + EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), + border: InputBorder.none, + ), + ), + ), + ); + } + + Widget _buildPopularCategories() { + return const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Popular Categories', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ], + ); + } + + // New method to build the carousel + Widget _buildCarousel(BuildContext context) { + return SizedBox( + height: 220, + child: CarouselView( + controller: CarouselController(), + backgroundColor: Colors.transparent, + itemSnapping: true, + shrinkExtent: MediaQuery.of(context).size.width, + itemExtent: double.infinity, + children: [ + ...controller.items.map((item) => _buildImageContainer(item)), + ], + ), + ); + } + + Widget _buildImageContainer(String imagePath) { + return Container( + margin: const EdgeInsets.all(5.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Column( children: [ - const Text( - 'DashboardView is working', - style: TextStyle(fontSize: 20), + Image.asset( + imagePath, + height: 150, ), - Text('Time: ${controller.now.value.toString()}'), + const Text("Very Good Lenin Shirt"), + const Text("\$1000"), ], ), - ), + Column( + children: [ + Image.asset( + imagePath, + height: 150, + ), + const Text("Very Good Lenin Shirt"), + const Text("\$1000"), + ], + ), + ], ), ); } diff --git a/lib/app/modules/login/controllers/login_controller.dart b/lib/app/modules/login/controllers/login_controller.dart index 5178fec9..d969fb7e 100644 --- a/lib/app/modules/login/controllers/login_controller.dart +++ b/lib/app/modules/login/controllers/login_controller.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:get/get.dart'; import '../../../../services/auth_service.dart'; @@ -17,4 +18,6 @@ class LoginController extends GetxController { bool get isRegistered => AuthService.to.registered.value || AuthService.to.isEmailVerified; + + loginAsGuest() async => await FirebaseAuth.instance.signInAnonymously(); } diff --git a/lib/app/modules/login/views/login_view.dart b/lib/app/modules/login/views/login_view.dart index 00c3af3f..44fd9ab5 100644 --- a/lib/app/modules/login/views/login_view.dart +++ b/lib/app/modules/login/views/login_view.dart @@ -1,11 +1,13 @@ // ignore_for_file: inference_failure_on_function_invocation +import 'dart:io'; + import 'package:firebase_auth/firebase_auth.dart' as fba; import 'package:firebase_ui_auth/firebase_ui_auth.dart'; import 'package:firebase_ui_oauth_google/firebase_ui_oauth_google.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import '../../../../firebase_options.dart'; +import 'package:get_flutter_fire/firebase_options.dart'; import '../../../../models/screens.dart'; import '../../../widgets/login_widgets.dart'; @@ -55,8 +57,13 @@ class LoginView extends GetView { ? recaptcha() : SignInScreen( providers: [ - GoogleProvider(clientId: DefaultFirebaseOptions.webClientId), + GoogleProvider( + clientId: Platform.isIOS + ? DefaultFirebaseOptions.currentPlatform.iosClientId! + : "60983052215-s6lggi6uveieglto1cqrshegs5dps4c8.apps.googleusercontent.com", + ), MyEmailAuthProvider(), + PhoneAuthProvider(), ], showAuthActionSwitch: !controller.isRegistered, showPasswordVisibilityToggle: true, @@ -72,6 +79,7 @@ class LoginView extends GetView { ui = RegisterScreen( providers: [ MyEmailAuthProvider(), + PhoneAuthProvider(), ], showAuthActionSwitch: !controller.isAnon, //if Anon only SignUp showPasswordVisibilityToggle: true, @@ -150,13 +158,19 @@ class EmailLinkButton extends StatelessWidget { @override Widget build(BuildContext context) { - return Obx(() => Visibility( + return Obx( + () => Visibility( visible: show.value, child: Padding( - padding: const EdgeInsets.only(top: 16), - child: ElevatedButton( - onPressed: () => LoginController.to - .sendVerificationMail(emailAuth: credential.value), - child: const Text('Resend Verification Mail'))))); + padding: const EdgeInsets.only(top: 16), + child: ElevatedButton( + onPressed: () => LoginController.to.sendVerificationMail( + emailAuth: credential.value, + ), + child: const Text('Resend Verification Mail'), + ), + ), + ), + ); } } diff --git a/lib/app/modules/my_products/controllers/my_products_controller.dart b/lib/app/modules/my_products/controllers/my_products_controller.dart index 31696ea2..ab927480 100644 --- a/lib/app/modules/my_products/controllers/my_products_controller.dart +++ b/lib/app/modules/my_products/controllers/my_products_controller.dart @@ -4,20 +4,8 @@ class MyProductsController extends GetxController { //TODO: Implement MyProductsController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - @override - void onReady() { - super.onReady(); - } - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/modules/product_details/bindings/product_details_binding.dart b/lib/app/modules/product_details/bindings/product_details_binding.dart index 624d55ac..1fd94009 100644 --- a/lib/app/modules/product_details/bindings/product_details_binding.dart +++ b/lib/app/modules/product_details/bindings/product_details_binding.dart @@ -8,6 +8,8 @@ class ProductDetailsBinding extends Bindings { Get.create( () => ProductDetailsController( Get.parameters['productId'] ?? '', + Get.rootDelegate.parameters['productName'] ?? '', + Get.rootDelegate.parameters['imageUrl'] ?? '', ), ); } diff --git a/lib/app/modules/product_details/controllers/product_details_controller.dart b/lib/app/modules/product_details/controllers/product_details_controller.dart index d894e10c..6c4a1b6c 100644 --- a/lib/app/modules/product_details/controllers/product_details_controller.dart +++ b/lib/app/modules/product_details/controllers/product_details_controller.dart @@ -2,8 +2,15 @@ import 'package:get/get.dart'; class ProductDetailsController extends GetxController { final String productId; + final String productName; + final String imageUrl; + + ProductDetailsController( + this.productId, + this.productName, + this.imageUrl, + ); - ProductDetailsController(this.productId); @override void onInit() { super.onInit(); diff --git a/lib/app/modules/product_details/views/product_details_view.dart b/lib/app/modules/product_details/views/product_details_view.dart index c9290724..1ed48558 100644 --- a/lib/app/modules/product_details/views/product_details_view.dart +++ b/lib/app/modules/product_details/views/product_details_view.dart @@ -1,6 +1,9 @@ +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:get_flutter_fire/app/modules/cart/controllers/cart_controller.dart'; +import 'package:get_flutter_fire/models/product.dart'; import '../controllers/product_details_controller.dart'; @@ -9,19 +12,90 @@ class ProductDetailsView extends GetWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - 'ProductDetailsView is working', - style: TextStyle(fontSize: 20), - ), - Text('ProductId: ${controller.productId}') - ], - ), - ), + final cartController = Get.find(); + + return Obx( + () => Scaffold( + floatingActionButton: cartController + .getProducts() + .where((p) => p.name == controller.productName) + .isNotEmpty + ? null + : FloatingActionButton( + onPressed: () { + cartController.addProduct( + Product( + name: controller.productName, + id: controller.productId, + imageUrl: controller.imageUrl, + ), + ); + }, + child: const Icon( + Icons.add_shopping_cart_rounded, + ), + ), + body: CustomScrollView( + slivers: [ + SliverAppBar( + flexibleSpace: Positioned.fill( + child: CachedNetworkImage( + imageUrl: controller.imageUrl, + width: double.infinity, + fit: BoxFit.cover, + ), + ), + stretch: true, + automaticallyImplyLeading: false, + toolbarHeight: 200, + ), + SliverList.list( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // TODO: Make some UI Changes in here + + const SizedBox(height: 16), + Text('ProductId: ${controller.productId}'), + const SizedBox(height: 8), + Text(controller.productName), + const SizedBox(height: 8), + Text('Image Url: ${controller.imageUrl}'), + ], + ), + ), + ], + ), + ], + ) + // Column( + // mainAxisSize: MainAxisSize.max, + // children: [ + // CachedNetworkImage( + // imageUrl: controller.imageUrl, + // width: double.infinity, + // fit: BoxFit.cover, + // ), + // Padding( + // padding: const EdgeInsets.symmetric(horizontal: 8), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // const SizedBox(height: 16), + // Text('ProductId: ${controller.productId}'), + // const SizedBox(height: 8), + // Text(controller.productName), + // const SizedBox(height: 8), + // Text('Image Url: ${controller.imageUrl}'), + // ], + // ), + // ) + // ], + // ), + ), ); } } diff --git a/lib/app/modules/products/controllers/products_controller.dart b/lib/app/modules/products/controllers/products_controller.dart index 118c7dc8..b17b553b 100644 --- a/lib/app/modules/products/controllers/products_controller.dart +++ b/lib/app/modules/products/controllers/products_controller.dart @@ -6,12 +6,43 @@ class ProductsController extends GetxController { final products = [].obs; void loadDemoProductsFromSomeWhere() { - products.add( + products.addAll([ Product( - name: 'Product added on: ${DateTime.now().toString()}', + name: 'Vidisha\'s T-Shirt', id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/91/72/72", ), - ); + Product( + name: 'Shoes for Anita', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/103/72/72", + ), + Product( + name: 'Frok Designed by Anita', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/325/72/72", + ), + Product( + name: 'Hoodie Designed By Mr. Chaturvedi', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/338/72/72", + ), + Product( + name: 'Miami Beach T-Shirt', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/349/72/72", + ), + Product( + name: 'No Name T-Shirt', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/222/72/72", + ), + Product( + name: 'Beach Lower by Kailash', + id: DateTime.now().millisecondsSinceEpoch.toString(), + imageUrl: "https://picsum.photos/id/123/72/72", + ), + ]); } @override diff --git a/lib/app/modules/products/views/products_view.dart b/lib/app/modules/products/views/products_view.dart index 5b190a6a..acf9e997 100644 --- a/lib/app/modules/products/views/products_view.dart +++ b/lib/app/modules/products/views/products_view.dart @@ -1,5 +1,4 @@ -// ignore_for_file: inference_failure_on_function_invocation - +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -13,45 +12,90 @@ class ProductsView extends GetView { @override Widget build(BuildContext context) { var arg = Get.rootDelegate.arguments(); - return Scaffold( - floatingActionButton: - (arg != null && Get.rootDelegate.arguments()["role"] == Role.seller) - ? FloatingActionButton.extended( - onPressed: controller.loadDemoProductsFromSomeWhere, - label: const Text('Add'), - ) - : null, - body: Column( - children: [ - const Hero( - tag: 'heroLogo', - child: FlutterLogo(), - ), - Expanded( - child: Obx( - () => RefreshIndicator( - onRefresh: () async { - controller.products.clear(); - controller.loadDemoProductsFromSomeWhere(); - }, - child: ListView.builder( - itemCount: controller.products.length, - itemBuilder: (context, index) { - final item = controller.products[index]; - return ListTile( - onTap: () { - Get.rootDelegate.toNamed(Routes.PRODUCT_DETAILS( - item.id)); //we could use Get Parameters - }, - title: Text(item.name), - subtitle: Text(item.id), - ); + return Container( + color: Colors.purple[300], // Set the background color to purple + child: Scaffold( + backgroundColor: + Colors.transparent, // Make Scaffold's background transparent + floatingActionButton: + (arg != null && Get.rootDelegate.arguments()["role"] == Role.seller) + ? FloatingActionButton.extended( + onPressed: controller.loadDemoProductsFromSomeWhere, + label: const Text('Add'), + ) + : null, + body: Column( + children: [ + Expanded( + child: Obx( + () => RefreshIndicator( + onRefresh: () async { + controller.products.clear(); + controller.loadDemoProductsFromSomeWhere(); }, + child: ListView.builder( + itemCount: controller.products.length, + itemBuilder: (context, index) { + final item = controller.products[index]; + + return Container( + decoration: BoxDecoration( + color: Colors + .white, // Set container color to purple[300] + border: Border.all( + color: Theme.of(context).dividerColor, + ), + borderRadius: const BorderRadius.all( + Radius.circular(16), + ), + ), + clipBehavior: Clip.hardEdge, + margin: const EdgeInsets.all(10), + child: InkWell( + onTap: () { + Get.rootDelegate.toNamed( + Routes.PRODUCT_DETAILS( + item.id, + ), + parameters: { + "productName": item.name, + 'imageUrl': item.imageUrl, + }, + ); + }, + child: Row( + children: [ + CachedNetworkImage( + imageUrl: item.imageUrl, + height: 72, + width: 144, + fit: BoxFit.cover, + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.name, + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + Text(item.id), + ], + ), + ) + ], + ), + ), + ); + }, + ), ), ), ), - ), - ], + ], + ), ), ); } diff --git a/lib/app/modules/profile/views/profile_view.dart b/lib/app/modules/profile/views/profile_view.dart index c26d11c1..182ae2ab 100644 --- a/lib/app/modules/profile/views/profile_view.dart +++ b/lib/app/modules/profile/views/profile_view.dart @@ -7,7 +7,6 @@ import 'package:get/get.dart'; import '../../../../services/auth_service.dart'; import '../../../../models/screens.dart'; import '../../../widgets/change_password_dialog.dart'; -import '../../../widgets/image_picker_button.dart'; import '../controllers/profile_controller.dart'; class ProfileView extends GetView { @@ -97,16 +96,6 @@ class ProfileView extends GetView { icon: const Icon(Icons.password_rounded), ) : const SizedBox.shrink(), - ImagePickerButton(callback: (String? path) async { - if (path != null) { - //Upload to Store - String? dest = await controller.uploadFile(path); - //attach it to User imageUrl - if (dest != null) { - await controller.updatePhotoURL(dest); - } - } - }) ], ) : const Scaffold(); diff --git a/lib/app/modules/root/views/root_view.dart b/lib/app/modules/root/views/root_view.dart index 2bbf228c..2381d474 100644 --- a/lib/app/modules/root/views/root_view.dart +++ b/lib/app/modules/root/views/root_view.dart @@ -31,8 +31,9 @@ class RootView extends GetView { ) : IconButton( icon: ImageIcon( - const AssetImage("icons/logo.png"), - color: Colors.grey.shade800, + const AssetImage("assets/icons/logo.png"), + size: 72, + color: Colors.purple[700], ), onPressed: () => AuthService.to.isLoggedInValue ? controller.openDrawer() diff --git a/lib/app/modules/settings/controllers/settings_controller.dart b/lib/app/modules/settings/controllers/settings_controller.dart index 265e54b1..f8e1f3c2 100644 --- a/lib/app/modules/settings/controllers/settings_controller.dart +++ b/lib/app/modules/settings/controllers/settings_controller.dart @@ -4,15 +4,7 @@ class SettingsController extends GetxController { //TODO: Implement SettingsController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - @override - void onReady() { - super.onReady(); - } @override void onClose() {} diff --git a/lib/app/modules/task_details/controllers/task_details_controller.dart b/lib/app/modules/task_details/controllers/task_details_controller.dart index e0a6a0d9..dfd1fefa 100644 --- a/lib/app/modules/task_details/controllers/task_details_controller.dart +++ b/lib/app/modules/task_details/controllers/task_details_controller.dart @@ -4,20 +4,8 @@ class TaskDetailsController extends GetxController { //TODO: Implement TaskDetailsController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - @override - void onReady() { - super.onReady(); - } - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/modules/tasks/controllers/tasks_controller.dart b/lib/app/modules/tasks/controllers/tasks_controller.dart index 4d4196e4..08e175e5 100644 --- a/lib/app/modules/tasks/controllers/tasks_controller.dart +++ b/lib/app/modules/tasks/controllers/tasks_controller.dart @@ -4,20 +4,8 @@ class TasksController extends GetxController { //TODO: Implement TasksController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - @override - void onReady() { - super.onReady(); - } - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/modules/users/controllers/users_controller.dart b/lib/app/modules/users/controllers/users_controller.dart index 871467c4..b41ca94f 100644 --- a/lib/app/modules/users/controllers/users_controller.dart +++ b/lib/app/modules/users/controllers/users_controller.dart @@ -4,20 +4,6 @@ class UsersController extends GetxController { //TODO: Implement UsersController final count = 0.obs; - @override - void onInit() { - super.onInit(); - } - - @override - void onReady() { - super.onReady(); - } - - @override - void onClose() { - super.onClose(); - } void increment() => count.value++; } diff --git a/lib/app/widgets/login_widgets.dart b/lib/app/widgets/login_widgets.dart index b8f2d8c1..72b9dbad 100644 --- a/lib/app/widgets/login_widgets.dart +++ b/lib/app/widgets/login_widgets.dart @@ -11,7 +11,7 @@ import 'menu_sheet_button.dart'; class LoginWidgets { static Widget headerBuilder(context, constraints, shrinkOffset) { return Padding( - padding: const EdgeInsets.all(20), + padding: const EdgeInsets.all(0), child: AspectRatio( aspectRatio: 1, child: Image.asset('assets/images/flutterfire_300x.png'), diff --git a/lib/main.dart b/lib/main.dart index 30c258f2..f8a7c2fb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:get_flutter_fire/app/modules/cart/controllers/cart_controller.dart'; import 'package:get_storage/get_storage.dart'; import 'app/routes/app_pages.dart'; @@ -24,21 +25,24 @@ void main() async { initialBinding: BindingsBuilder( () { Get.put(AuthService()); + Get.put(CartController()); }, ), getPages: AppPages.routes, - // routeInformationParser: GetInformationParser( - // // initialRoute: Routes.HOME, - // ), - // routerDelegate: GetDelegate( - // backButtonPopMode: PopMode.History, - // preventDuplicateHandlingMode: - // PreventDuplicateHandlingMode.ReorderRoutes, - // ), + routeInformationParser: GetInformationParser( + initialRoute: Routes.HOME, + ), + routerDelegate: GetDelegate( + backButtonPopMode: PopMode.History, + preventDuplicateHandlingMode: + PreventDuplicateHandlingMode.ReorderRoutes, + ), theme: ThemeData( - highlightColor: Colors.black.withOpacity(0.5), - bottomSheetTheme: - const BottomSheetThemeData(surfaceTintColor: Colors.blue)), + highlightColor: Colors.black.withOpacity(0.5), + bottomSheetTheme: const BottomSheetThemeData( + surfaceTintColor: Colors.blue, + ), + ), ), ); } diff --git a/lib/models/product.dart b/lib/models/product.dart index 003d5785..528d9fa3 100644 --- a/lib/models/product.dart +++ b/lib/models/product.dart @@ -1,9 +1,11 @@ class Product { final String name; final String id; + final String imageUrl; Product({ required this.name, required this.id, + required this.imageUrl, }); } diff --git a/lib/models/screens.dart b/lib/models/screens.dart index 24dee39f..6b137218 100644 --- a/lib/models/screens.dart +++ b/lib/models/screens.dart @@ -20,7 +20,7 @@ enum AccessedVia { enum Screen implements ActionEnum { HOME('/home', icon: Icons.home, - label: "Home", + label: "PURPLE12", accessor_: AccessedVia.drawer, accessLevel: AccessLevel.public), //first screen is default screen DASHBOARD('/dashboard', @@ -30,8 +30,8 @@ enum Screen implements ActionEnum { accessLevel: AccessLevel.public, parent: HOME), PRODUCTS('/products', - icon: Icons.dataset, - label: "Products", + icon: Icons.store, + label: "Store", accessor_: AccessedVia.navigator, accessLevel: AccessLevel.public, parent: HOME), diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index 8bf72aaa..c9e0123d 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -124,12 +124,13 @@ class AuthService extends GetxService { Future guest() async { return await Get.defaultDialog( - middleText: 'Sign in as Guest', - barrierDismissible: true, - onConfirm: loginAsGuest, - onCancel: () => Get.back(result: false), - textConfirm: 'Yes, will SignUp later', - textCancel: 'No, will SignIn now'); + middleText: 'Do you Wish to Sign in as Guest?', + barrierDismissible: true, + onConfirm: loginAsGuest, + onCancel: () => Get.back(result: false), + textCancel: 'No', + textConfirm: 'Yes', + ); } void loginAsGuest() async { diff --git a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig new file mode 100644 index 00000000..0583414b --- /dev/null +++ b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -0,0 +1,11 @@ +// This is a generated file; do not edit or check into version control. +FLUTTER_ROOT=/Users/chiragsuthar/development/flutter +FLUTTER_APPLICATION_PATH=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get +COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_BUILD_DIR=build +FLUTTER_BUILD_NAME=1.0.0 +FLUTTER_BUILD_NUMBER=1 +DART_OBFUSCATION=false +TRACK_WIDGET_CREATION=true +TREE_SHAKE_ICONS=false +PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/macos/Flutter/ephemeral/flutter_export_environment.sh b/macos/Flutter/ephemeral/flutter_export_environment.sh new file mode 100755 index 00000000..c1d09fee --- /dev/null +++ b/macos/Flutter/ephemeral/flutter_export_environment.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=/Users/chiragsuthar/development/flutter" +export "FLUTTER_APPLICATION_PATH=/Users/chiragsuthar/Downloads/Flutter apps/flutter_fire_get" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=true" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/macos/Runner/GoogleService-Info.plist b/macos/Runner/GoogleService-Info.plist new file mode 100644 index 00000000..d5c17f91 --- /dev/null +++ b/macos/Runner/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 60983052215-slgh5iodl4v5hf8rl0t89spdru51d1cp.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.60983052215-slgh5iodl4v5hf8rl0t89spdru51d1cp + API_KEY + AIzaSyDJeHzafLwg8_USKvDbPpCu1ctrSLdg2SU + GCM_SENDER_ID + 60983052215 + PLIST_VERSION + 1 + BUNDLE_ID + com.example.flutterFireGet + PROJECT_ID + vidi-test1 + STORAGE_BUCKET + vidi-test1.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:60983052215:ios:144bbddb0327b1a5030a32 + + \ No newline at end of file diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6..00000000 --- a/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 877fc75e..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,823 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" - url: "https://pub.dev" - source: hosted - version: "1.3.35" - args: - dependency: transitive - description: - name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" - url: "https://pub.dev" - source: hosted - version: "2.5.0" - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a - url: "https://pub.dev" - source: hosted - version: "1.18.0" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" - url: "https://pub.dev" - source: hosted - version: "0.3.4+1" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - desktop_webview_auth: - dependency: transitive - description: - name: desktop_webview_auth - sha256: c4dce73346a7be7243c90ac3b1a68586d9f0e2c2710e81e07d758e80a6ebd920 - url: "https://pub.dev" - source: hosted - version: "0.0.15" - email_validator: - dependency: transitive - description: - name: email_validator - sha256: e9a90f27ab2b915a27d7f9c2a7ddda5dd752d6942616ee83529b686fc086221b - url: "https://pub.dev" - source: hosted - version: "2.1.17" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: "29c90806ac5f5fb896547720b73b17ee9aed9bba540dc5d91fe29f8c5745b10a" - url: "https://pub.dev" - source: hosted - version: "8.0.3" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" - url: "https://pub.dev" - source: hosted - version: "0.9.2+1" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 - url: "https://pub.dev" - source: hosted - version: "0.9.4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.dev" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 - url: "https://pub.dev" - source: hosted - version: "0.9.3+1" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 - url: "https://pub.dev" - source: hosted - version: "10.10.7" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" - url: "https://pub.dev" - source: hosted - version: "3.10.8" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" - url: "https://pub.dev" - source: hosted - version: "0.5.7+7" - firebase_auth: - dependency: "direct main" - description: - name: firebase_auth - sha256: f0a75f61992d036e4c46ad0e9febd364d98aa2c092690a5475cb1421a8243cfe - url: "https://pub.dev" - source: hosted - version: "4.19.5" - firebase_auth_platform_interface: - dependency: transitive - description: - name: firebase_auth_platform_interface - sha256: feb77258404309ffc7761c78e1c0ad2ed5e4fdc378e035619e2cc13be4397b62 - url: "https://pub.dev" - source: hosted - version: "7.2.6" - firebase_auth_web: - dependency: transitive - description: - name: firebase_auth_web - sha256: "6d527f357da2bf93a67a42b423aa92943104a0c290d1d72ad9a42c779d501cd2" - url: "https://pub.dev" - source: hosted - version: "5.11.5" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" - url: "https://pub.dev" - source: hosted - version: "2.32.0" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 - url: "https://pub.dev" - source: hosted - version: "5.0.0" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" - url: "https://pub.dev" - source: hosted - version: "2.17.0" - firebase_dynamic_links: - dependency: transitive - description: - name: firebase_dynamic_links - sha256: f704859abc17d99e74b47eaf47455b45a88ab7e2973f03e6130ff666b45fe11f - url: "https://pub.dev" - source: hosted - version: "5.5.5" - firebase_dynamic_links_platform_interface: - dependency: transitive - description: - name: firebase_dynamic_links_platform_interface - sha256: f86992605b50e2f0ce6c24993430affc98021da8d8a74d5596b7a2c84196c110 - url: "https://pub.dev" - source: hosted - version: "0.2.6+33" - firebase_remote_config: - dependency: "direct main" - description: - name: firebase_remote_config - sha256: "653bd94b68e2c4e89eca10db90576101f1024151f39f2d4e7c64ae6a90a5f9c5" - url: "https://pub.dev" - source: hosted - version: "4.4.7" - firebase_remote_config_platform_interface: - dependency: transitive - description: - name: firebase_remote_config_platform_interface - sha256: "24a2c445b15de3af7e4582ebceb2aa9a1e3731d0202cb3e7a1e03012440fa07d" - url: "https://pub.dev" - source: hosted - version: "1.4.35" - firebase_remote_config_web: - dependency: transitive - description: - name: firebase_remote_config_web - sha256: "525aa3000fd27cd023841c802010a06515e564aab2f147aa964b35f54abbf449" - url: "https://pub.dev" - source: hosted - version: "1.6.7" - firebase_storage: - dependency: "direct main" - description: - name: firebase_storage - sha256: da76ca9c11d795c4bae1bd13b31d54bb9eb9ccbee7eb5f6b86b8294370e9d488 - url: "https://pub.dev" - source: hosted - version: "11.7.5" - firebase_storage_platform_interface: - dependency: transitive - description: - name: firebase_storage_platform_interface - sha256: be17bfa9110a6429b40dd3760c755034079fd734aa1dd2476d5638ab780cc508 - url: "https://pub.dev" - source: hosted - version: "5.1.20" - firebase_storage_web: - dependency: transitive - description: - name: firebase_storage_web - sha256: "5219c20c0768a8e2ffedf0a116b7bc80ab32fcc6e2cbd50cbde14f8c4575c3f4" - url: "https://pub.dev" - source: hosted - version: "3.9.5" - firebase_ui_auth: - dependency: "direct main" - description: - name: firebase_ui_auth - sha256: "62c3ce9c8da134e0780bf8ed7d7ed91dd2308596ee3cb56fab03eb79f8323479" - url: "https://pub.dev" - source: hosted - version: "1.14.0" - firebase_ui_localizations: - dependency: "direct main" - description: - name: firebase_ui_localizations - sha256: a7faa62e2d56cb38aae270a8f05c1a8518b04b06dd0f0cc2d4974e4b4782de1c - url: "https://pub.dev" - source: hosted - version: "1.12.0" - firebase_ui_oauth: - dependency: transitive - description: - name: firebase_ui_oauth - sha256: b86458b7d403d48d335c2502004bf88f2145d2f0be58b29fba8de28944f7fa91 - url: "https://pub.dev" - source: hosted - version: "1.5.2" - firebase_ui_oauth_google: - dependency: "direct main" - description: - name: firebase_ui_oauth_google - sha256: "101c13ba7ac04f6b70e1d73ab6d063b82801b794394914655356eb2a6f18bbcb" - url: "https://pub.dev" - source: hosted - version: "1.3.2" - firebase_ui_shared: - dependency: transitive - description: - name: firebase_ui_shared - sha256: f1d07c130a39104d32fba1dab274b7bcb13be2bf4e652624a4ccabb58f9781f1 - url: "https://pub.dev" - source: hosted - version: "1.4.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - flutter_localizations: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" - url: "https://pub.dev" - source: hosted - version: "2.0.19" - flutter_svg: - dependency: transitive - description: - name: flutter_svg - sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" - url: "https://pub.dev" - source: hosted - version: "2.0.10+1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - get: - dependency: "direct main" - description: - name: get - sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e - url: "https://pub.dev" - source: hosted - version: "4.6.6" - get_storage: - dependency: "direct main" - description: - name: get_storage - sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - google_fonts: - dependency: "direct main" - description: - name: google_fonts - sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 - url: "https://pub.dev" - source: hosted - version: "6.2.1" - google_identity_services_web: - dependency: transitive - description: - name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" - url: "https://pub.dev" - source: hosted - version: "0.3.1+1" - google_sign_in: - dependency: "direct main" - description: - name: google_sign_in - sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" - url: "https://pub.dev" - source: hosted - version: "6.2.1" - google_sign_in_android: - dependency: transitive - description: - name: google_sign_in_android - sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" - url: "https://pub.dev" - source: hosted - version: "6.1.23" - google_sign_in_ios: - dependency: transitive - description: - name: google_sign_in_ios - sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe - url: "https://pub.dev" - source: hosted - version: "5.7.6" - google_sign_in_platform_interface: - dependency: transitive - description: - name: google_sign_in_platform_interface - sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971" - url: "https://pub.dev" - source: hosted - version: "2.4.5" - google_sign_in_web: - dependency: transitive - description: - name: google_sign_in_web - sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd - url: "https://pub.dev" - source: hosted - version: "0.12.4" - http: - dependency: transitive - description: - name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "79455f6cff4cbef583b2b524bbf0d4ec424e5959f4d464e36ef5323715b98370" - url: "https://pub.dev" - source: hosted - version: "0.8.12" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" - url: "https://pub.dev" - source: hosted - version: "3.0.4" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: cb0db0ec0d3e2cd49674f2e6053be25ccdb959832607c1cbd215dd6cf10fb0dd - url: "https://pub.dev" - source: hosted - version: "0.8.11" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - intl: - dependency: transitive - description: - name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf - url: "https://pub.dev" - source: hosted - version: "0.19.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" - url: "https://pub.dev" - source: hosted - version: "10.0.4" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" - url: "https://pub.dev" - source: hosted - version: "3.0.3" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - lints: - dependency: transitive - description: - name: lints - sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 - url: "https://pub.dev" - source: hosted - version: "3.0.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb - url: "https://pub.dev" - source: hosted - version: "0.12.16+1" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - meta: - dependency: transitive - description: - name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" - url: "https://pub.dev" - source: hosted - version: "1.12.0" - mime: - dependency: transitive - description: - name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" - url: "https://pub.dev" - source: hosted - version: "1.0.5" - path: - dependency: "direct main" - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.dev" - source: hosted - version: "1.0.1" - path_provider: - dependency: transitive - description: - name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 - url: "https://pub.dev" - source: hosted - version: "2.1.3" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d - url: "https://pub.dev" - source: hosted - version: "2.2.4" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 - url: "https://pub.dev" - source: hosted - version: "2.4.0" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" - platform: - dependency: transitive - description: - name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" - url: "https://pub.dev" - source: hosted - version: "3.1.4" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" - source: hosted - version: "2.1.8" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" - url: "https://pub.dev" - source: hosted - version: "1.11.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 - url: "https://pub.dev" - source: hosted - version: "2.1.2" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" - url: "https://pub.dev" - source: hosted - version: "0.7.0" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" - url: "https://pub.dev" - source: hosted - version: "1.1.11+1" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" - url: "https://pub.dev" - source: hosted - version: "14.2.1" - web: - dependency: transitive - description: - name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" - url: "https://pub.dev" - source: hosted - version: "0.5.1" - win32: - dependency: transitive - description: - name: win32 - sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" - url: "https://pub.dev" - source: hosted - version: "5.5.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d - url: "https://pub.dev" - source: hosted - version: "1.0.4" - xml: - dependency: transitive - description: - name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://pub.dev" - source: hosted - version: "6.5.0" -sdks: - dart: ">=3.3.4 <4.0.0" - flutter: ">=3.19.2" diff --git a/pubspec.yaml b/pubspec.yaml index 2909a374..948f7f19 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,14 +2,16 @@ name: get_flutter_fire version: 1.0.0+1 publish_to: none description: Boilerplate for Flutter with GetX, showing sample utilization of Firebase capabilities -environment: - sdk: '>=3.3.4 <4.0.0' -dependencies: - cupertino_icons: ^1.0.6 - get: 4.6.6 - flutter: +environment: + sdk: ">=3.3.4 <4.0.0" + +dependencies: + flutter: sdk: flutter + cupertino_icons: ^1.0.6 + get: ^4.6.6 + carousel_slider: ^5.0.0 firebase_core: ^2.31.0 firebase_ui_auth: ^1.14.0 firebase_auth: ^4.19.5 @@ -24,20 +26,21 @@ dependencies: firebase_ui_localizations: ^1.12.0 firebase_remote_config: ^4.4.7 firebase_analytics: ^10.10.7 + cached_network_image: ^3.4.0 -dev_dependencies: +dev_dependencies: flutter_lints: 3.0.2 - flutter_test: + flutter_test: sdk: flutter -flutter: +flutter: + uses-material-design: true + fonts: - family: SocialIcons fonts: - asset: packages/firebase_ui_auth/fonts/SocialIcons.ttf + assets: - - assets/images/flutterfire_300x.png - - assets/images/dash.png + - assets/images/ - assets/icons/logo.png - uses-material-design: true -