├── .gitignore ├── .metadata ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ ├── google-services.json │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── flutter_firebase │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── GoogleService-Info.plist │ ├── Info.plist │ └── Runner-Bridging-Header.h └── RunnerTests │ └── RunnerTests.swift ├── lib ├── features │ ├── app │ │ └── splash_screen │ │ │ └── splash_screen.dart │ └── user_auth │ │ ├── firebase_auth_implementation │ │ └── firebase_auth_services.dart │ │ └── presentation │ │ ├── pages │ │ ├── home_page.dart │ │ ├── login_page.dart │ │ └── sign_up_page.dart │ │ └── widgets │ │ └── form_container_widget.dart ├── global │ └── common │ │ └── toast.dart └── main.dart ├── pubspec.lock ├── pubspec.yaml ├── test └── widget_test.dart └── web ├── favicon.png ├── icons ├── Icon-192.png ├── Icon-512.png ├── Icon-maskable-192.png └── Icon-maskable-512.png ├── index.html └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Symbolication related 36 | app.*.symbols 37 | 38 | # Obfuscation related 39 | app.*.map.json 40 | 41 | # Android Studio will place build artifacts here 42 | /android/app/debug 43 | /android/app/profile 44 | /android/app/release 45 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled. 5 | 6 | version: 7 | revision: 796c8ef79279f9c774545b3771238c3098dbefab 8 | channel: stable 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 796c8ef79279f9c774545b3771238c3098dbefab 17 | base_revision: 796c8ef79279f9c774545b3771238c3098dbefab 18 | - platform: android 19 | create_revision: 796c8ef79279f9c774545b3771238c3098dbefab 20 | base_revision: 796c8ef79279f9c774545b3771238c3098dbefab 21 | - platform: ios 22 | create_revision: 796c8ef79279f9c774545b3771238c3098dbefab 23 | base_revision: 796c8ef79279f9c774545b3771238c3098dbefab 24 | - platform: web 25 | create_revision: 796c8ef79279f9c774545b3771238c3098dbefab 26 | base_revision: 796c8ef79279f9c774545b3771238c3098dbefab 27 | 28 | # User provided section 29 | 30 | # List of Local paths (relative to this file) that should be 31 | # ignored by the migrate tool. 32 | # 33 | # Files that are not part of the templates will be ignored by default. 34 | unmanaged_files: 35 | - 'lib/main.dart' 36 | - 'ios/Runner.xcodeproj/project.pbxproj' 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flutter_firebase 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | apply plugin: "com.google.gms.google-services" 28 | 29 | android { 30 | namespace "com.example.flutter_firebase" 31 | compileSdkVersion flutter.compileSdkVersion 32 | ndkVersion flutter.ndkVersion 33 | 34 | compileOptions { 35 | sourceCompatibility JavaVersion.VERSION_1_8 36 | targetCompatibility JavaVersion.VERSION_1_8 37 | } 38 | 39 | kotlinOptions { 40 | jvmTarget = '1.8' 41 | } 42 | 43 | sourceSets { 44 | main.java.srcDirs += 'src/main/kotlin' 45 | } 46 | 47 | defaultConfig { 48 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 49 | applicationId "com.example.flutter_firebase" 50 | // You can update the following values to match your application needs. 51 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. 52 | minSdkVersion 21 53 | targetSdkVersion flutter.targetSdkVersion 54 | versionCode flutterVersionCode.toInteger() 55 | versionName flutterVersionName 56 | } 57 | 58 | buildTypes { 59 | release { 60 | // TODO: Add your own signing config for the release build. 61 | // Signing with the debug keys for now, so `flutter run --release` works. 62 | signingConfig signingConfigs.debug 63 | } 64 | } 65 | } 66 | 67 | flutter { 68 | source '../..' 69 | } 70 | 71 | dependencies { 72 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 73 | } 74 | -------------------------------------------------------------------------------- /android/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "540215271818", 4 | "project_id": "flutter-firebase-9c136", 5 | "storage_bucket": "flutter-firebase-9c136.appspot.com" 6 | }, 7 | "client": [ 8 | { 9 | "client_info": { 10 | "mobilesdk_app_id": "1:540215271818:android:bd26adbe54778a45862873", 11 | "android_client_info": { 12 | "package_name": "com.example.flutter_firebase" 13 | } 14 | }, 15 | "oauth_client": [ 16 | { 17 | "client_id": "540215271818-1a5pvogkun9iaaaq5e39o43hnlt7sum5.apps.googleusercontent.com", 18 | "client_type": 3 19 | } 20 | ], 21 | "api_key": [ 22 | { 23 | "current_key": "AIzaSyCnOD3ETuQGVkPSiTSsiZewWPCGaJLe6mk" 24 | } 25 | ], 26 | "services": { 27 | "appinvite_service": { 28 | "other_platform_oauth_client": [ 29 | { 30 | "client_id": "540215271818-1a5pvogkun9iaaaq5e39o43hnlt7sum5.apps.googleusercontent.com", 31 | "client_type": 3 32 | }, 33 | { 34 | "client_id": "540215271818-3jpu0ibjl06r0qk7k4p0d2s1aiufjct9.apps.googleusercontent.com", 35 | "client_type": 2, 36 | "ios_info": { 37 | "bundle_id": "com.example.flutterFirebase" 38 | } 39 | } 40 | ] 41 | } 42 | } 43 | } 44 | ], 45 | "configuration_version": "1" 46 | } -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 14 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/flutter_firebase/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutter_firebase 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.4.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | classpath "com.google.gms:google-services:4.3.15" 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | google() 18 | mavenCentral() 19 | } 20 | } 21 | 22 | rootProject.buildDir = '../build' 23 | subprojects { 24 | project.buildDir = "${rootProject.buildDir}/${project.name}" 25 | } 26 | subprojects { 27 | project.evaluationDependsOn(':app') 28 | } 29 | 30 | tasks.register("clean", Delete) { 31 | delete rootProject.buildDir 32 | } 33 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 11.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXContainerItemProxy section */ 20 | 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { 21 | isa = PBXContainerItemProxy; 22 | containerPortal = 97C146E61CF9000F007C117D /* Project object */; 23 | proxyType = 1; 24 | remoteGlobalIDString = 97C146ED1CF9000F007C117D; 25 | remoteInfo = Runner; 26 | }; 27 | /* End PBXContainerItemProxy section */ 28 | 29 | /* Begin PBXCopyFilesBuildPhase section */ 30 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 31 | isa = PBXCopyFilesBuildPhase; 32 | buildActionMask = 2147483647; 33 | dstPath = ""; 34 | dstSubfolderSpec = 10; 35 | files = ( 36 | ); 37 | name = "Embed Frameworks"; 38 | runOnlyForDeploymentPostprocessing = 0; 39 | }; 40 | /* End PBXCopyFilesBuildPhase section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 44 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 45 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 46 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 47 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 48 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 49 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 50 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 51 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 54 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 55 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 57 | 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | ); 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXFrameworksBuildPhase section */ 69 | 70 | /* Begin PBXGroup section */ 71 | 9740EEB11CF90186004384FC /* Flutter */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 75 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 76 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 77 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 78 | ); 79 | name = Flutter; 80 | sourceTree = ""; 81 | }; 82 | 331C8082294A63A400263BE5 /* RunnerTests */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 331C807B294A618700263BE5 /* RunnerTests.swift */, 86 | ); 87 | path = RunnerTests; 88 | sourceTree = ""; 89 | }; 90 | 97C146E51CF9000F007C117D = { 91 | isa = PBXGroup; 92 | children = ( 93 | 9740EEB11CF90186004384FC /* Flutter */, 94 | 97C146F01CF9000F007C117D /* Runner */, 95 | 97C146EF1CF9000F007C117D /* Products */, 96 | 331C8082294A63A400263BE5 /* RunnerTests */, 97 | ); 98 | sourceTree = ""; 99 | }; 100 | 97C146EF1CF9000F007C117D /* Products */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 97C146EE1CF9000F007C117D /* Runner.app */, 104 | 331C8081294A63A400263BE5 /* RunnerTests.xctest */, 105 | ); 106 | name = Products; 107 | sourceTree = ""; 108 | }; 109 | 97C146F01CF9000F007C117D /* Runner */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 113 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 114 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 115 | 97C147021CF9000F007C117D /* Info.plist */, 116 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 117 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 118 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 119 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 120 | ); 121 | path = Runner; 122 | sourceTree = ""; 123 | }; 124 | /* End PBXGroup section */ 125 | 126 | /* Begin PBXNativeTarget section */ 127 | 331C8080294A63A400263BE5 /* RunnerTests */ = { 128 | isa = PBXNativeTarget; 129 | buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; 130 | buildPhases = ( 131 | 331C807D294A63A400263BE5 /* Sources */, 132 | 331C807E294A63A400263BE5 /* Frameworks */, 133 | 331C807F294A63A400263BE5 /* Resources */, 134 | ); 135 | buildRules = ( 136 | ); 137 | dependencies = ( 138 | 331C8086294A63A400263BE5 /* PBXTargetDependency */, 139 | ); 140 | name = RunnerTests; 141 | productName = RunnerTests; 142 | productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; 143 | productType = "com.apple.product-type.bundle.unit-test"; 144 | }; 145 | 97C146ED1CF9000F007C117D /* Runner */ = { 146 | isa = PBXNativeTarget; 147 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 148 | buildPhases = ( 149 | 9740EEB61CF901F6004384FC /* Run Script */, 150 | 97C146EA1CF9000F007C117D /* Sources */, 151 | 97C146EB1CF9000F007C117D /* Frameworks */, 152 | 97C146EC1CF9000F007C117D /* Resources */, 153 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 154 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 155 | ); 156 | buildRules = ( 157 | ); 158 | dependencies = ( 159 | ); 160 | name = Runner; 161 | productName = Runner; 162 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 163 | productType = "com.apple.product-type.application"; 164 | }; 165 | /* End PBXNativeTarget section */ 166 | 167 | /* Begin PBXProject section */ 168 | 97C146E61CF9000F007C117D /* Project object */ = { 169 | isa = PBXProject; 170 | attributes = { 171 | LastUpgradeCheck = 1300; 172 | ORGANIZATIONNAME = ""; 173 | TargetAttributes = { 174 | 331C8080294A63A400263BE5 = { 175 | CreatedOnToolsVersion = 14.0; 176 | TestTargetID = 97C146ED1CF9000F007C117D; 177 | }; 178 | 97C146ED1CF9000F007C117D = { 179 | CreatedOnToolsVersion = 7.3.1; 180 | LastSwiftMigration = 1100; 181 | }; 182 | }; 183 | }; 184 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 185 | compatibilityVersion = "Xcode 9.3"; 186 | developmentRegion = en; 187 | hasScannedForEncodings = 0; 188 | knownRegions = ( 189 | en, 190 | Base, 191 | ); 192 | mainGroup = 97C146E51CF9000F007C117D; 193 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 194 | projectDirPath = ""; 195 | projectRoot = ""; 196 | targets = ( 197 | 97C146ED1CF9000F007C117D /* Runner */, 198 | 331C8080294A63A400263BE5 /* RunnerTests */, 199 | ); 200 | }; 201 | /* End PBXProject section */ 202 | 203 | /* Begin PBXResourcesBuildPhase section */ 204 | 331C807F294A63A400263BE5 /* Resources */ = { 205 | isa = PBXResourcesBuildPhase; 206 | buildActionMask = 2147483647; 207 | files = ( 208 | ); 209 | runOnlyForDeploymentPostprocessing = 0; 210 | }; 211 | 97C146EC1CF9000F007C117D /* Resources */ = { 212 | isa = PBXResourcesBuildPhase; 213 | buildActionMask = 2147483647; 214 | files = ( 215 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 216 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 217 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 218 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | }; 222 | /* End PBXResourcesBuildPhase section */ 223 | 224 | /* Begin PBXShellScriptBuildPhase section */ 225 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 226 | isa = PBXShellScriptBuildPhase; 227 | alwaysOutOfDate = 1; 228 | buildActionMask = 2147483647; 229 | files = ( 230 | ); 231 | inputPaths = ( 232 | "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", 233 | ); 234 | name = "Thin Binary"; 235 | outputPaths = ( 236 | ); 237 | runOnlyForDeploymentPostprocessing = 0; 238 | shellPath = /bin/sh; 239 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 240 | }; 241 | 9740EEB61CF901F6004384FC /* Run Script */ = { 242 | isa = PBXShellScriptBuildPhase; 243 | alwaysOutOfDate = 1; 244 | buildActionMask = 2147483647; 245 | files = ( 246 | ); 247 | inputPaths = ( 248 | ); 249 | name = "Run Script"; 250 | outputPaths = ( 251 | ); 252 | runOnlyForDeploymentPostprocessing = 0; 253 | shellPath = /bin/sh; 254 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 255 | }; 256 | /* End PBXShellScriptBuildPhase section */ 257 | 258 | /* Begin PBXSourcesBuildPhase section */ 259 | 331C807D294A63A400263BE5 /* Sources */ = { 260 | isa = PBXSourcesBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, 264 | ); 265 | runOnlyForDeploymentPostprocessing = 0; 266 | }; 267 | 97C146EA1CF9000F007C117D /* Sources */ = { 268 | isa = PBXSourcesBuildPhase; 269 | buildActionMask = 2147483647; 270 | files = ( 271 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 272 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | }; 276 | /* End PBXSourcesBuildPhase section */ 277 | 278 | /* Begin PBXTargetDependency section */ 279 | 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { 280 | isa = PBXTargetDependency; 281 | target = 97C146ED1CF9000F007C117D /* Runner */; 282 | targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; 283 | }; 284 | /* End PBXTargetDependency section */ 285 | 286 | /* Begin PBXVariantGroup section */ 287 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 288 | isa = PBXVariantGroup; 289 | children = ( 290 | 97C146FB1CF9000F007C117D /* Base */, 291 | ); 292 | name = Main.storyboard; 293 | sourceTree = ""; 294 | }; 295 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 296 | isa = PBXVariantGroup; 297 | children = ( 298 | 97C147001CF9000F007C117D /* Base */, 299 | ); 300 | name = LaunchScreen.storyboard; 301 | sourceTree = ""; 302 | }; 303 | /* End PBXVariantGroup section */ 304 | 305 | /* Begin XCBuildConfiguration section */ 306 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 307 | isa = XCBuildConfiguration; 308 | buildSettings = { 309 | ALWAYS_SEARCH_USER_PATHS = NO; 310 | CLANG_ANALYZER_NONNULL = YES; 311 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 312 | CLANG_CXX_LIBRARY = "libc++"; 313 | CLANG_ENABLE_MODULES = YES; 314 | CLANG_ENABLE_OBJC_ARC = YES; 315 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 316 | CLANG_WARN_BOOL_CONVERSION = YES; 317 | CLANG_WARN_COMMA = YES; 318 | CLANG_WARN_CONSTANT_CONVERSION = YES; 319 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 320 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 321 | CLANG_WARN_EMPTY_BODY = YES; 322 | CLANG_WARN_ENUM_CONVERSION = YES; 323 | CLANG_WARN_INFINITE_RECURSION = YES; 324 | CLANG_WARN_INT_CONVERSION = YES; 325 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 326 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 327 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 328 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 329 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 330 | CLANG_WARN_STRICT_PROTOTYPES = YES; 331 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 332 | CLANG_WARN_UNREACHABLE_CODE = YES; 333 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 334 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 335 | COPY_PHASE_STRIP = NO; 336 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 337 | ENABLE_NS_ASSERTIONS = NO; 338 | ENABLE_STRICT_OBJC_MSGSEND = YES; 339 | GCC_C_LANGUAGE_STANDARD = gnu99; 340 | GCC_NO_COMMON_BLOCKS = YES; 341 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 342 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 343 | GCC_WARN_UNDECLARED_SELECTOR = YES; 344 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 345 | GCC_WARN_UNUSED_FUNCTION = YES; 346 | GCC_WARN_UNUSED_VARIABLE = YES; 347 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 348 | MTL_ENABLE_DEBUG_INFO = NO; 349 | SDKROOT = iphoneos; 350 | SUPPORTED_PLATFORMS = iphoneos; 351 | TARGETED_DEVICE_FAMILY = "1,2"; 352 | VALIDATE_PRODUCT = YES; 353 | }; 354 | name = Profile; 355 | }; 356 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 357 | isa = XCBuildConfiguration; 358 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 359 | buildSettings = { 360 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 361 | CLANG_ENABLE_MODULES = YES; 362 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 363 | ENABLE_BITCODE = NO; 364 | INFOPLIST_FILE = Runner/Info.plist; 365 | LD_RUNPATH_SEARCH_PATHS = ( 366 | "$(inherited)", 367 | "@executable_path/Frameworks", 368 | ); 369 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase; 370 | PRODUCT_NAME = "$(TARGET_NAME)"; 371 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 372 | SWIFT_VERSION = 5.0; 373 | VERSIONING_SYSTEM = "apple-generic"; 374 | }; 375 | name = Profile; 376 | }; 377 | 331C8088294A63A400263BE5 /* Debug */ = { 378 | isa = XCBuildConfiguration; 379 | baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */; 380 | buildSettings = { 381 | BUNDLE_LOADER = "$(TEST_HOST)"; 382 | CODE_SIGN_STYLE = Automatic; 383 | CURRENT_PROJECT_VERSION = 1; 384 | GENERATE_INFOPLIST_FILE = YES; 385 | MARKETING_VERSION = 1.0; 386 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase.RunnerTests; 387 | PRODUCT_NAME = "$(TARGET_NAME)"; 388 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 389 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 390 | SWIFT_VERSION = 5.0; 391 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 392 | }; 393 | name = Debug; 394 | }; 395 | 331C8089294A63A400263BE5 /* Release */ = { 396 | isa = XCBuildConfiguration; 397 | baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */; 398 | buildSettings = { 399 | BUNDLE_LOADER = "$(TEST_HOST)"; 400 | CODE_SIGN_STYLE = Automatic; 401 | CURRENT_PROJECT_VERSION = 1; 402 | GENERATE_INFOPLIST_FILE = YES; 403 | MARKETING_VERSION = 1.0; 404 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase.RunnerTests; 405 | PRODUCT_NAME = "$(TARGET_NAME)"; 406 | SWIFT_VERSION = 5.0; 407 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 408 | }; 409 | name = Release; 410 | }; 411 | 331C808A294A63A400263BE5 /* Profile */ = { 412 | isa = XCBuildConfiguration; 413 | baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */; 414 | buildSettings = { 415 | BUNDLE_LOADER = "$(TEST_HOST)"; 416 | CODE_SIGN_STYLE = Automatic; 417 | CURRENT_PROJECT_VERSION = 1; 418 | GENERATE_INFOPLIST_FILE = YES; 419 | MARKETING_VERSION = 1.0; 420 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase.RunnerTests; 421 | PRODUCT_NAME = "$(TARGET_NAME)"; 422 | SWIFT_VERSION = 5.0; 423 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 424 | }; 425 | name = Profile; 426 | }; 427 | 97C147031CF9000F007C117D /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | buildSettings = { 430 | ALWAYS_SEARCH_USER_PATHS = NO; 431 | CLANG_ANALYZER_NONNULL = YES; 432 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 433 | CLANG_CXX_LIBRARY = "libc++"; 434 | CLANG_ENABLE_MODULES = YES; 435 | CLANG_ENABLE_OBJC_ARC = YES; 436 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 437 | CLANG_WARN_BOOL_CONVERSION = YES; 438 | CLANG_WARN_COMMA = YES; 439 | CLANG_WARN_CONSTANT_CONVERSION = YES; 440 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 441 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 442 | CLANG_WARN_EMPTY_BODY = YES; 443 | CLANG_WARN_ENUM_CONVERSION = YES; 444 | CLANG_WARN_INFINITE_RECURSION = YES; 445 | CLANG_WARN_INT_CONVERSION = YES; 446 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 447 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 448 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 449 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 450 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 451 | CLANG_WARN_STRICT_PROTOTYPES = YES; 452 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 453 | CLANG_WARN_UNREACHABLE_CODE = YES; 454 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 455 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 456 | COPY_PHASE_STRIP = NO; 457 | DEBUG_INFORMATION_FORMAT = dwarf; 458 | ENABLE_STRICT_OBJC_MSGSEND = YES; 459 | ENABLE_TESTABILITY = YES; 460 | GCC_C_LANGUAGE_STANDARD = gnu99; 461 | GCC_DYNAMIC_NO_PIC = NO; 462 | GCC_NO_COMMON_BLOCKS = YES; 463 | GCC_OPTIMIZATION_LEVEL = 0; 464 | GCC_PREPROCESSOR_DEFINITIONS = ( 465 | "DEBUG=1", 466 | "$(inherited)", 467 | ); 468 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 469 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 470 | GCC_WARN_UNDECLARED_SELECTOR = YES; 471 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 472 | GCC_WARN_UNUSED_FUNCTION = YES; 473 | GCC_WARN_UNUSED_VARIABLE = YES; 474 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 475 | MTL_ENABLE_DEBUG_INFO = YES; 476 | ONLY_ACTIVE_ARCH = YES; 477 | SDKROOT = iphoneos; 478 | TARGETED_DEVICE_FAMILY = "1,2"; 479 | }; 480 | name = Debug; 481 | }; 482 | 97C147041CF9000F007C117D /* Release */ = { 483 | isa = XCBuildConfiguration; 484 | buildSettings = { 485 | ALWAYS_SEARCH_USER_PATHS = NO; 486 | CLANG_ANALYZER_NONNULL = YES; 487 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 488 | CLANG_CXX_LIBRARY = "libc++"; 489 | CLANG_ENABLE_MODULES = YES; 490 | CLANG_ENABLE_OBJC_ARC = YES; 491 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 492 | CLANG_WARN_BOOL_CONVERSION = YES; 493 | CLANG_WARN_COMMA = YES; 494 | CLANG_WARN_CONSTANT_CONVERSION = YES; 495 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 496 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 497 | CLANG_WARN_EMPTY_BODY = YES; 498 | CLANG_WARN_ENUM_CONVERSION = YES; 499 | CLANG_WARN_INFINITE_RECURSION = YES; 500 | CLANG_WARN_INT_CONVERSION = YES; 501 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 502 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 503 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 504 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 505 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 506 | CLANG_WARN_STRICT_PROTOTYPES = YES; 507 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 508 | CLANG_WARN_UNREACHABLE_CODE = YES; 509 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 510 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 511 | COPY_PHASE_STRIP = NO; 512 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 513 | ENABLE_NS_ASSERTIONS = NO; 514 | ENABLE_STRICT_OBJC_MSGSEND = YES; 515 | GCC_C_LANGUAGE_STANDARD = gnu99; 516 | GCC_NO_COMMON_BLOCKS = YES; 517 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 518 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 519 | GCC_WARN_UNDECLARED_SELECTOR = YES; 520 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 521 | GCC_WARN_UNUSED_FUNCTION = YES; 522 | GCC_WARN_UNUSED_VARIABLE = YES; 523 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 524 | MTL_ENABLE_DEBUG_INFO = NO; 525 | SDKROOT = iphoneos; 526 | SUPPORTED_PLATFORMS = iphoneos; 527 | SWIFT_COMPILATION_MODE = wholemodule; 528 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 529 | TARGETED_DEVICE_FAMILY = "1,2"; 530 | VALIDATE_PRODUCT = YES; 531 | }; 532 | name = Release; 533 | }; 534 | 97C147061CF9000F007C117D /* Debug */ = { 535 | isa = XCBuildConfiguration; 536 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 537 | buildSettings = { 538 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 539 | CLANG_ENABLE_MODULES = YES; 540 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 541 | ENABLE_BITCODE = NO; 542 | INFOPLIST_FILE = Runner/Info.plist; 543 | LD_RUNPATH_SEARCH_PATHS = ( 544 | "$(inherited)", 545 | "@executable_path/Frameworks", 546 | ); 547 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase; 548 | PRODUCT_NAME = "$(TARGET_NAME)"; 549 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 550 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 551 | SWIFT_VERSION = 5.0; 552 | VERSIONING_SYSTEM = "apple-generic"; 553 | }; 554 | name = Debug; 555 | }; 556 | 97C147071CF9000F007C117D /* Release */ = { 557 | isa = XCBuildConfiguration; 558 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 559 | buildSettings = { 560 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 561 | CLANG_ENABLE_MODULES = YES; 562 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 563 | ENABLE_BITCODE = NO; 564 | INFOPLIST_FILE = Runner/Info.plist; 565 | LD_RUNPATH_SEARCH_PATHS = ( 566 | "$(inherited)", 567 | "@executable_path/Frameworks", 568 | ); 569 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterFirebase; 570 | PRODUCT_NAME = "$(TARGET_NAME)"; 571 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 572 | SWIFT_VERSION = 5.0; 573 | VERSIONING_SYSTEM = "apple-generic"; 574 | }; 575 | name = Release; 576 | }; 577 | /* End XCBuildConfiguration section */ 578 | 579 | /* Begin XCConfigurationList section */ 580 | 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { 581 | isa = XCConfigurationList; 582 | buildConfigurations = ( 583 | 331C8088294A63A400263BE5 /* Debug */, 584 | 331C8089294A63A400263BE5 /* Release */, 585 | 331C808A294A63A400263BE5 /* Profile */, 586 | ); 587 | defaultConfigurationIsVisible = 0; 588 | defaultConfigurationName = Release; 589 | }; 590 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 591 | isa = XCConfigurationList; 592 | buildConfigurations = ( 593 | 97C147031CF9000F007C117D /* Debug */, 594 | 97C147041CF9000F007C117D /* Release */, 595 | 249021D3217E4FDB00AE95B9 /* Profile */, 596 | ); 597 | defaultConfigurationIsVisible = 0; 598 | defaultConfigurationName = Release; 599 | }; 600 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 601 | isa = XCConfigurationList; 602 | buildConfigurations = ( 603 | 97C147061CF9000F007C117D /* Debug */, 604 | 97C147071CF9000F007C117D /* Release */, 605 | 249021D4217E4FDB00AE95B9 /* Profile */, 606 | ); 607 | defaultConfigurationIsVisible = 0; 608 | defaultConfigurationName = Release; 609 | }; 610 | /* End XCConfigurationList section */ 611 | }; 612 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 613 | } 614 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 43 | 49 | 50 | 51 | 52 | 53 | 63 | 65 | 71 | 72 | 73 | 74 | 80 | 82 | 88 | 89 | 90 | 91 | 93 | 94 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/GoogleService-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CLIENT_ID 6 | 540215271818-3jpu0ibjl06r0qk7k4p0d2s1aiufjct9.apps.googleusercontent.com 7 | REVERSED_CLIENT_ID 8 | com.googleusercontent.apps.540215271818-3jpu0ibjl06r0qk7k4p0d2s1aiufjct9 9 | API_KEY 10 | AIzaSyBGNwXR0fx5RbqL2ZL3VYzMtqqDx84LwsM 11 | GCM_SENDER_ID 12 | 540215271818 13 | PLIST_VERSION 14 | 1 15 | BUNDLE_ID 16 | com.example.flutterFirebase 17 | PROJECT_ID 18 | flutter-firebase-9c136 19 | STORAGE_BUCKET 20 | flutter-firebase-9c136.appspot.com 21 | IS_ADS_ENABLED 22 | 23 | IS_ANALYTICS_ENABLED 24 | 25 | IS_APPINVITE_ENABLED 26 | 27 | IS_GCM_ENABLED 28 | 29 | IS_SIGNIN_ENABLED 30 | 31 | GOOGLE_APP_ID 32 | 1:540215271818:ios:74a50b3fd0ffb212862873 33 | 34 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Flutter Firebase 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | flutter_firebase 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | CADisableMinimumFrameDurationOnPhone 47 | 48 | UIApplicationSupportsIndirectInputEvents 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/features/app/splash_screen/splash_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | 4 | class SplashScreen extends StatefulWidget { 5 | final Widget? child; 6 | const SplashScreen({super.key, this.child}); 7 | 8 | @override 9 | State createState() => _SplashScreenState(); 10 | } 11 | 12 | class _SplashScreenState extends State { 13 | 14 | @override 15 | void initState() { 16 | Future.delayed( 17 | Duration(seconds: 3),(){ 18 | Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => widget.child!), (route) => false); 19 | } 20 | ); 21 | super.initState(); 22 | } 23 | 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Scaffold( 28 | body: Center( 29 | child: Text( 30 | "Welcome To Flutter Firebase", 31 | style: TextStyle( 32 | color: Colors.blue, 33 | fontWeight: FontWeight.bold, 34 | ), 35 | ), 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/features/user_auth/firebase_auth_implementation/firebase_auth_services.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | import 'package:firebase_auth/firebase_auth.dart'; 6 | 7 | import '../../../global/common/toast.dart'; 8 | 9 | 10 | class FirebaseAuthService { 11 | 12 | FirebaseAuth _auth = FirebaseAuth.instance; 13 | 14 | Future signUpWithEmailAndPassword(String email, String password) async { 15 | 16 | try { 17 | UserCredential credential =await _auth.createUserWithEmailAndPassword(email: email, password: password); 18 | return credential.user; 19 | } on FirebaseAuthException catch (e) { 20 | 21 | if (e.code == 'email-already-in-use') { 22 | showToast(message: 'The email address is already in use.'); 23 | } else { 24 | showToast(message: 'An error occurred: ${e.code}'); 25 | } 26 | } 27 | return null; 28 | 29 | } 30 | 31 | Future signInWithEmailAndPassword(String email, String password) async { 32 | 33 | try { 34 | UserCredential credential =await _auth.signInWithEmailAndPassword(email: email, password: password); 35 | return credential.user; 36 | } on FirebaseAuthException catch (e) { 37 | if (e.code == 'user-not-found' || e.code == 'wrong-password') { 38 | showToast(message: 'Invalid email or password.'); 39 | } else { 40 | showToast(message: 'An error occurred: ${e.code}'); 41 | } 42 | 43 | } 44 | return null; 45 | 46 | } 47 | 48 | 49 | 50 | 51 | } 52 | 53 | 54 | -------------------------------------------------------------------------------- /lib/features/user_auth/presentation/pages/home_page.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ffi'; 2 | 3 | import 'package:cloud_firestore/cloud_firestore.dart'; 4 | import 'package:firebase_auth/firebase_auth.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:fluttertoast/fluttertoast.dart'; 7 | 8 | import '../../../../global/common/toast.dart'; 9 | 10 | class HomePage extends StatefulWidget { 11 | const HomePage({super.key}); 12 | 13 | @override 14 | State createState() => _HomePageState(); 15 | } 16 | 17 | class _HomePageState extends State { 18 | @override 19 | Widget build(BuildContext context) { 20 | return Scaffold( 21 | appBar: AppBar( 22 | automaticallyImplyLeading: false, 23 | title: Text("HomePage"), 24 | ), 25 | body: Center( 26 | child: Column( 27 | mainAxisAlignment: MainAxisAlignment.center, 28 | children: [ 29 | GestureDetector( 30 | onTap: () { 31 | _createData(UserModel( 32 | username: "Henry", 33 | age: 21, 34 | adress: "London", 35 | )); 36 | }, 37 | child: Container( 38 | height: 45, 39 | width: 100, 40 | decoration: BoxDecoration( 41 | color: Colors.blue, 42 | borderRadius: BorderRadius.circular(10)), 43 | child: Center( 44 | child: Text( 45 | "Create Data", 46 | style: TextStyle( 47 | color: Colors.white, 48 | fontWeight: FontWeight.bold, 49 | fontSize: 18), 50 | ), 51 | ), 52 | ), 53 | ), 54 | SizedBox(height: 10), 55 | StreamBuilder>( 56 | stream: _readData(), 57 | builder: (context, snapshot) { 58 | if(snapshot.connectionState == ConnectionState.waiting){ 59 | return Center(child: CircularProgressIndicator(),); 60 | } if(snapshot.data!.isEmpty){ 61 | return Center(child:Text("No Data Yet")); 62 | } 63 | final users = snapshot.data; 64 | return Padding(padding: EdgeInsets.all(8), 65 | child: Column( 66 | children: users!.map((user) { 67 | return ListTile( 68 | leading: GestureDetector( 69 | onTap: (){ 70 | _deleteData(user.id!); 71 | }, 72 | child: Icon(Icons.delete), 73 | ), 74 | trailing: GestureDetector( 75 | onTap: (){ 76 | _updateData( 77 | UserModel( 78 | id: user.id, 79 | username: "John Wick", 80 | adress: "Pakistan",) 81 | ); 82 | }, 83 | child: Icon(Icons.update), 84 | ), 85 | title: Text(user.username!), 86 | subtitle: Text(user.adress!), 87 | ); 88 | }).toList() 89 | ),); 90 | } 91 | ), 92 | 93 | GestureDetector( 94 | onTap: () { 95 | FirebaseAuth.instance.signOut(); 96 | Navigator.pushNamed(context, "/login"); 97 | showToast(message: "Successfully signed out"); 98 | }, 99 | child: Container( 100 | height: 45, 101 | width: 100, 102 | decoration: BoxDecoration( 103 | color: Colors.blue, 104 | borderRadius: BorderRadius.circular(10)), 105 | child: Center( 106 | child: Text( 107 | "Sign out", 108 | style: TextStyle( 109 | color: Colors.white, 110 | fontWeight: FontWeight.bold, 111 | fontSize: 18), 112 | ), 113 | ), 114 | ), 115 | ) 116 | ], 117 | ), 118 | )); 119 | } 120 | 121 | Stream> _readData(){ 122 | final userCollection = FirebaseFirestore.instance.collection("users"); 123 | 124 | return userCollection.snapshots().map((qureySnapshot) 125 | => qureySnapshot.docs.map((e) 126 | => UserModel.fromSnapshot(e),).toList()); 127 | } 128 | 129 | void _createData(UserModel userModel) { 130 | final userCollection = FirebaseFirestore.instance.collection("users"); 131 | 132 | String id = userCollection.doc().id; 133 | 134 | final newUser = UserModel( 135 | username: userModel.username, 136 | age: userModel.age, 137 | adress: userModel.adress, 138 | id: id, 139 | ).toJson(); 140 | 141 | userCollection.doc(id).set(newUser); 142 | } 143 | 144 | void _updateData(UserModel userModel) { 145 | final userCollection = FirebaseFirestore.instance.collection("users"); 146 | 147 | final newData = UserModel( 148 | username: userModel.username, 149 | id: userModel.id, 150 | adress: userModel.adress, 151 | age: userModel.age, 152 | ).toJson(); 153 | 154 | userCollection.doc(userModel.id).update(newData); 155 | 156 | } 157 | 158 | void _deleteData(String id) { 159 | final userCollection = FirebaseFirestore.instance.collection("users"); 160 | 161 | userCollection.doc(id).delete(); 162 | 163 | } 164 | 165 | } 166 | 167 | class UserModel{ 168 | final String? username; 169 | final String? adress; 170 | final int? age; 171 | final String? id; 172 | 173 | UserModel({this.id,this.username, this.adress, this.age}); 174 | 175 | 176 | static UserModel fromSnapshot(DocumentSnapshot> snapshot){ 177 | return UserModel( 178 | username: snapshot['username'], 179 | adress: snapshot['adress'], 180 | age: snapshot['age'], 181 | id: snapshot['id'], 182 | ); 183 | } 184 | 185 | Map toJson(){ 186 | return { 187 | "username": username, 188 | "age": age, 189 | "id": id, 190 | "adress": adress, 191 | }; 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /lib/features/user_auth/presentation/pages/login_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:cloud_firestore/cloud_firestore.dart'; 2 | import 'package:firebase_auth/firebase_auth.dart'; 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_firebase/features/user_auth/presentation/pages/sign_up_page.dart'; 6 | import 'package:flutter_firebase/features/user_auth/presentation/widgets/form_container_widget.dart'; 7 | import 'package:flutter_firebase/global/common/toast.dart'; 8 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; 9 | import 'package:google_sign_in/google_sign_in.dart'; 10 | 11 | import '../../firebase_auth_implementation/firebase_auth_services.dart'; 12 | 13 | class LoginPage extends StatefulWidget { 14 | const LoginPage({super.key}); 15 | 16 | @override 17 | State createState() => _LoginPageState(); 18 | } 19 | 20 | class _LoginPageState extends State { 21 | bool _isSigning = false; 22 | final FirebaseAuthService _auth = FirebaseAuthService(); 23 | final FirebaseAuth _firebaseAuth = FirebaseAuth.instance; 24 | TextEditingController _emailController = TextEditingController(); 25 | TextEditingController _passwordController = TextEditingController(); 26 | 27 | @override 28 | void dispose() { 29 | _emailController.dispose(); 30 | _passwordController.dispose(); 31 | super.dispose(); 32 | } 33 | 34 | @override 35 | Widget build(BuildContext context) { 36 | return Scaffold( 37 | appBar: AppBar( 38 | automaticallyImplyLeading: false, 39 | title: Text("Login"), 40 | ), 41 | body: Center( 42 | child: Padding( 43 | padding: const EdgeInsets.symmetric(horizontal: 15), 44 | child: Column( 45 | mainAxisAlignment: MainAxisAlignment.center, 46 | children: [ 47 | Text( 48 | "Login", 49 | style: TextStyle(fontSize: 27, fontWeight: FontWeight.bold), 50 | ), 51 | SizedBox( 52 | height: 30, 53 | ), 54 | FormContainerWidget( 55 | controller: _emailController, 56 | hintText: "Email", 57 | isPasswordField: false, 58 | ), 59 | SizedBox( 60 | height: 10, 61 | ), 62 | FormContainerWidget( 63 | controller: _passwordController, 64 | hintText: "Password", 65 | isPasswordField: true, 66 | ), 67 | SizedBox( 68 | height: 30, 69 | ), 70 | GestureDetector( 71 | onTap: () { 72 | _signIn(); 73 | }, 74 | child: Container( 75 | width: double.infinity, 76 | height: 45, 77 | decoration: BoxDecoration( 78 | color: Colors.blue, 79 | borderRadius: BorderRadius.circular(10), 80 | ), 81 | child: Center( 82 | child: _isSigning ? CircularProgressIndicator( 83 | color: Colors.white,) : Text( 84 | "Login", 85 | style: TextStyle( 86 | color: Colors.white, 87 | fontWeight: FontWeight.bold, 88 | ), 89 | ), 90 | ), 91 | ), 92 | ), 93 | SizedBox(height: 10,), 94 | GestureDetector( 95 | onTap: () { 96 | _signInWithGoogle(); 97 | 98 | }, 99 | child: Container( 100 | width: double.infinity, 101 | height: 45, 102 | decoration: BoxDecoration( 103 | color: Colors.red, 104 | borderRadius: BorderRadius.circular(10), 105 | ), 106 | child: Center( 107 | child: Row( 108 | mainAxisAlignment: MainAxisAlignment.center, 109 | children: [ 110 | Icon(FontAwesomeIcons.google, color: Colors.white,), 111 | SizedBox(width: 5,), 112 | Text( 113 | "Sign in with Google", 114 | style: TextStyle( 115 | color: Colors.white, 116 | fontWeight: FontWeight.bold, 117 | ), 118 | ), 119 | ], 120 | ), 121 | ), 122 | ), 123 | ), 124 | 125 | 126 | SizedBox( 127 | height: 20, 128 | ), 129 | 130 | Row( 131 | mainAxisAlignment: MainAxisAlignment.center, 132 | children: [ 133 | Text("Don't have an account?"), 134 | SizedBox( 135 | width: 5, 136 | ), 137 | GestureDetector( 138 | onTap: () { 139 | Navigator.pushAndRemoveUntil( 140 | context, 141 | MaterialPageRoute(builder: (context) => SignUpPage()), 142 | (route) => false, 143 | ); 144 | }, 145 | child: Text( 146 | "Sign Up", 147 | style: TextStyle( 148 | color: Colors.blue, 149 | fontWeight: FontWeight.bold, 150 | ), 151 | ), 152 | ), 153 | ], 154 | ), 155 | ], 156 | ), 157 | ), 158 | ), 159 | ); 160 | } 161 | 162 | void _signIn() async { 163 | setState(() { 164 | _isSigning = true; 165 | }); 166 | 167 | String email = _emailController.text; 168 | String password = _passwordController.text; 169 | 170 | User? user = await _auth.signInWithEmailAndPassword(email, password); 171 | 172 | setState(() { 173 | _isSigning = false; 174 | }); 175 | 176 | if (user != null) { 177 | showToast(message: "User is successfully signed in"); 178 | Navigator.pushNamed(context, "/home"); 179 | } else { 180 | showToast(message: "some error occured"); 181 | } 182 | } 183 | 184 | 185 | _signInWithGoogle()async{ 186 | 187 | final GoogleSignIn _googleSignIn = GoogleSignIn(); 188 | 189 | try { 190 | 191 | final GoogleSignInAccount? googleSignInAccount = await _googleSignIn.signIn(); 192 | 193 | if(googleSignInAccount != null ){ 194 | final GoogleSignInAuthentication googleSignInAuthentication = await 195 | googleSignInAccount.authentication; 196 | 197 | final AuthCredential credential = GoogleAuthProvider.credential( 198 | idToken: googleSignInAuthentication.idToken, 199 | accessToken: googleSignInAuthentication.accessToken, 200 | ); 201 | 202 | await _firebaseAuth.signInWithCredential(credential); 203 | Navigator.pushNamed(context, "/home"); 204 | } 205 | 206 | }catch(e) { 207 | showToast(message: "some error occured $e"); 208 | } 209 | 210 | 211 | } 212 | 213 | 214 | } -------------------------------------------------------------------------------- /lib/features/user_auth/presentation/pages/sign_up_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_auth/firebase_auth.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_firebase/features/user_auth/firebase_auth_implementation/firebase_auth_services.dart'; 4 | import 'package:flutter_firebase/features/user_auth/presentation/pages/login_page.dart'; 5 | import 'package:flutter_firebase/features/user_auth/presentation/widgets/form_container_widget.dart'; 6 | import 'package:flutter_firebase/global/common/toast.dart'; 7 | 8 | class SignUpPage extends StatefulWidget { 9 | const SignUpPage({super.key}); 10 | 11 | @override 12 | State createState() => _SignUpPageState(); 13 | } 14 | 15 | class _SignUpPageState extends State { 16 | final FirebaseAuthService _auth = FirebaseAuthService(); 17 | 18 | TextEditingController _usernameController = TextEditingController(); 19 | TextEditingController _emailController = TextEditingController(); 20 | TextEditingController _passwordController = TextEditingController(); 21 | 22 | bool isSigningUp = false; 23 | 24 | @override 25 | void dispose() { 26 | _usernameController.dispose(); 27 | _emailController.dispose(); 28 | _passwordController.dispose(); 29 | super.dispose(); 30 | } 31 | 32 | @override 33 | Widget build(BuildContext context) { 34 | return Scaffold( 35 | appBar: AppBar( 36 | automaticallyImplyLeading: false, 37 | title: Text("SignUp"), 38 | ), 39 | body: Center( 40 | child: Padding( 41 | padding: const EdgeInsets.symmetric(horizontal: 15), 42 | child: Column( 43 | mainAxisAlignment: MainAxisAlignment.center, 44 | children: [ 45 | Text( 46 | "Sign Up", 47 | style: TextStyle(fontSize: 27, fontWeight: FontWeight.bold), 48 | ), 49 | SizedBox( 50 | height: 30, 51 | ), 52 | FormContainerWidget( 53 | controller: _usernameController, 54 | hintText: "Username", 55 | isPasswordField: false, 56 | ), 57 | SizedBox( 58 | height: 10, 59 | ), 60 | FormContainerWidget( 61 | controller: _emailController, 62 | hintText: "Email", 63 | isPasswordField: false, 64 | ), 65 | SizedBox( 66 | height: 10, 67 | ), 68 | FormContainerWidget( 69 | controller: _passwordController, 70 | hintText: "Password", 71 | isPasswordField: true, 72 | ), 73 | SizedBox( 74 | height: 30, 75 | ), 76 | GestureDetector( 77 | onTap: (){ 78 | _signUp(); 79 | 80 | }, 81 | child: Container( 82 | width: double.infinity, 83 | height: 45, 84 | decoration: BoxDecoration( 85 | color: Colors.blue, 86 | borderRadius: BorderRadius.circular(10), 87 | ), 88 | child: Center( 89 | child: isSigningUp ? CircularProgressIndicator(color: Colors.white,):Text( 90 | "Sign Up", 91 | style: TextStyle( 92 | color: Colors.white, fontWeight: FontWeight.bold), 93 | )), 94 | ), 95 | ), 96 | SizedBox( 97 | height: 20, 98 | ), 99 | Row( 100 | mainAxisAlignment: MainAxisAlignment.center, 101 | children: [ 102 | Text("Already have an account?"), 103 | SizedBox( 104 | width: 5, 105 | ), 106 | GestureDetector( 107 | onTap: () { 108 | Navigator.pushAndRemoveUntil( 109 | context, 110 | MaterialPageRoute( 111 | builder: (context) => LoginPage()), 112 | (route) => false); 113 | }, 114 | child: Text( 115 | "Login", 116 | style: TextStyle( 117 | color: Colors.blue, fontWeight: FontWeight.bold), 118 | )) 119 | ], 120 | ) 121 | ], 122 | ), 123 | ), 124 | ), 125 | ); 126 | } 127 | 128 | void _signUp() async { 129 | 130 | setState(() { 131 | isSigningUp = true; 132 | }); 133 | 134 | String username = _usernameController.text; 135 | String email = _emailController.text; 136 | String password = _passwordController.text; 137 | 138 | User? user = await _auth.signUpWithEmailAndPassword(email, password); 139 | 140 | setState(() { 141 | isSigningUp = false; 142 | }); 143 | if (user != null) { 144 | showToast(message: "User is successfully created"); 145 | Navigator.pushNamed(context, "/home"); 146 | } else { 147 | showToast(message: "Some error happend"); 148 | } 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /lib/features/user_auth/presentation/widgets/form_container_widget.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | 6 | class FormContainerWidget extends StatefulWidget { 7 | 8 | final TextEditingController? controller; 9 | final Key? fieldKey; 10 | final bool? isPasswordField; 11 | final String? hintText; 12 | final String? labelText; 13 | final String? helperText; 14 | final FormFieldSetter? onSaved; 15 | final FormFieldValidator? validator; 16 | final ValueChanged? onFieldSubmitted; 17 | final TextInputType? inputType; 18 | 19 | const FormContainerWidget({ 20 | this.controller, 21 | this.isPasswordField, 22 | this.fieldKey, 23 | this.hintText, 24 | this.labelText, 25 | this.helperText, 26 | this.onSaved, 27 | this.validator, 28 | this.onFieldSubmitted, 29 | this.inputType 30 | }); 31 | 32 | 33 | @override 34 | _FormContainerWidgetState createState() => new _FormContainerWidgetState(); 35 | } 36 | 37 | class _FormContainerWidgetState extends State { 38 | 39 | bool _obscureText = true; 40 | 41 | 42 | @override 43 | Widget build(BuildContext context) { 44 | return Container( 45 | width: double.infinity, 46 | clipBehavior: Clip.hardEdge, 47 | decoration: BoxDecoration( 48 | color: Colors.grey.withOpacity(.35), 49 | borderRadius: BorderRadius.circular(10), 50 | ), 51 | child: new TextFormField( 52 | style: TextStyle(color: Colors.black), 53 | controller: widget.controller, 54 | keyboardType: widget.inputType, 55 | key: widget.fieldKey, 56 | obscureText: widget.isPasswordField == true? _obscureText : false, 57 | onSaved: widget.onSaved, 58 | validator: widget.validator, 59 | onFieldSubmitted: widget.onFieldSubmitted, 60 | decoration: new InputDecoration( 61 | border: InputBorder.none, 62 | filled: true, 63 | hintText: widget.hintText, 64 | hintStyle: TextStyle(color: Colors.black45), 65 | suffixIcon: new GestureDetector( 66 | onTap: () { 67 | setState(() { 68 | _obscureText = !_obscureText; 69 | }); 70 | }, 71 | child: 72 | widget.isPasswordField==true? Icon(_obscureText ? Icons.visibility_off : Icons.visibility, color: _obscureText == false ? Colors.blue : Colors.grey,) : Text(""), 73 | ), 74 | ), 75 | ), 76 | ); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /lib/global/common/toast.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:fluttertoast/fluttertoast.dart'; 5 | 6 | void showToast({required String message}){ 7 | Fluttertoast.showToast( 8 | msg: message, 9 | toastLength: Toast.LENGTH_SHORT, 10 | gravity: ToastGravity.BOTTOM, 11 | timeInSecForIosWeb: 1, 12 | backgroundColor: Colors.blue, 13 | textColor: Colors.white, 14 | fontSize: 16.0 15 | ); 16 | } -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_core/firebase_core.dart'; 2 | import 'package:flutter/foundation.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:firebase_auth/firebase_auth.dart'; // Import Firebase Auth 5 | import 'package:flutter_firebase/features/app/splash_screen/splash_screen.dart'; 6 | import 'package:flutter_firebase/features/user_auth/presentation/pages/home_page.dart'; 7 | import 'package:flutter_firebase/features/user_auth/presentation/pages/login_page.dart'; 8 | import 'package:flutter_firebase/features/user_auth/presentation/pages/sign_up_page.dart'; 9 | 10 | Future main() async { 11 | WidgetsFlutterBinding.ensureInitialized(); 12 | if (kIsWeb) { 13 | await Firebase.initializeApp( 14 | options: FirebaseOptions( 15 | apiKey: "AIzaSyCsHDQtI9DItQgSqwy45_y2xG9tDGxuER8", 16 | appId: "1:540215271818:web:8b22d4aee01acdce862873", 17 | messagingSenderId: "540215271818", 18 | projectId: "flutter-firebase-9c136", 19 | // Your web Firebase config options 20 | ), 21 | ); 22 | } else { 23 | await Firebase.initializeApp(); 24 | } 25 | runApp(MyApp()); 26 | } 27 | 28 | class MyApp extends StatelessWidget { 29 | @override 30 | Widget build(BuildContext context) { 31 | 32 | return MaterialApp( 33 | debugShowCheckedModeBanner: false, 34 | title: 'Flutter Firebase', 35 | routes: { 36 | '/': (context) => SplashScreen( 37 | // Here, you can decide whether to show the LoginPage or HomePage based on user authentication 38 | child: LoginPage(), 39 | ), 40 | '/login': (context) => LoginPage(), 41 | '/signUp': (context) => SignUpPage(), 42 | '/home': (context) => HomePage(), 43 | }, 44 | ); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "61.0.0" 12 | _flutterfire_internals: 13 | dependency: transitive 14 | description: 15 | name: _flutterfire_internals 16 | sha256: a742f71d7f3484253a623b30e19256aa4668ecbb3de6ad1beb0bcf8d4777ecd8 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "1.3.3" 20 | analyzer: 21 | dependency: transitive 22 | description: 23 | name: analyzer 24 | sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "5.13.0" 28 | args: 29 | dependency: transitive 30 | description: 31 | name: args 32 | sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "2.4.2" 36 | async: 37 | dependency: transitive 38 | description: 39 | name: async 40 | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "2.11.0" 44 | boolean_selector: 45 | dependency: transitive 46 | description: 47 | name: boolean_selector 48 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 49 | url: "https://pub.dev" 50 | source: hosted 51 | version: "2.1.1" 52 | characters: 53 | dependency: transitive 54 | description: 55 | name: characters 56 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 57 | url: "https://pub.dev" 58 | source: hosted 59 | version: "1.3.0" 60 | clock: 61 | dependency: transitive 62 | description: 63 | name: clock 64 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 65 | url: "https://pub.dev" 66 | source: hosted 67 | version: "1.1.1" 68 | cloud_firestore: 69 | dependency: "direct main" 70 | description: 71 | name: cloud_firestore 72 | sha256: "5bbc1f5bffa79af54ca035b92b57f81c6fb35ee5471ead67e29c8e12de8432f8" 73 | url: "https://pub.dev" 74 | source: hosted 75 | version: "4.8.2" 76 | cloud_firestore_platform_interface: 77 | dependency: transitive 78 | description: 79 | name: cloud_firestore_platform_interface 80 | sha256: "8e0aafeb727087f84710275d59a101b2acf2290ffbb3b111aab70423f8350d5d" 81 | url: "https://pub.dev" 82 | source: hosted 83 | version: "5.15.2" 84 | cloud_firestore_web: 85 | dependency: transitive 86 | description: 87 | name: cloud_firestore_web 88 | sha256: bbf0ebb9d1e9251caa00e8727389313c64cb4240c1c31f895971c52d0c782316 89 | url: "https://pub.dev" 90 | source: hosted 91 | version: "3.6.2" 92 | collection: 93 | dependency: transitive 94 | description: 95 | name: collection 96 | sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a 97 | url: "https://pub.dev" 98 | source: hosted 99 | version: "1.18.0" 100 | convert: 101 | dependency: transitive 102 | description: 103 | name: convert 104 | sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" 105 | url: "https://pub.dev" 106 | source: hosted 107 | version: "3.1.1" 108 | crypto: 109 | dependency: transitive 110 | description: 111 | name: crypto 112 | sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab 113 | url: "https://pub.dev" 114 | source: hosted 115 | version: "3.0.3" 116 | cupertino_icons: 117 | dependency: "direct main" 118 | description: 119 | name: cupertino_icons 120 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be 121 | url: "https://pub.dev" 122 | source: hosted 123 | version: "1.0.5" 124 | fake_async: 125 | dependency: transitive 126 | description: 127 | name: fake_async 128 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 129 | url: "https://pub.dev" 130 | source: hosted 131 | version: "1.3.1" 132 | file: 133 | dependency: transitive 134 | description: 135 | name: file 136 | sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" 137 | url: "https://pub.dev" 138 | source: hosted 139 | version: "7.0.0" 140 | firebase_auth: 141 | dependency: "direct main" 142 | description: 143 | name: firebase_auth 144 | sha256: f693c0aa998b1101453878951b171b69f0db5199003df1c943b33493a1de7917 145 | url: "https://pub.dev" 146 | source: hosted 147 | version: "4.6.3" 148 | firebase_auth_platform_interface: 149 | dependency: transitive 150 | description: 151 | name: firebase_auth_platform_interface 152 | sha256: "689ae048b78ad088ba31acdec45f5badb56201e749ed8b534947a7303ddb32aa" 153 | url: "https://pub.dev" 154 | source: hosted 155 | version: "6.15.3" 156 | firebase_auth_web: 157 | dependency: transitive 158 | description: 159 | name: firebase_auth_web 160 | sha256: f35d637a1707afd51f30090bb5234b381d5071ccbfef09b8c393bc7c65e440cd 161 | url: "https://pub.dev" 162 | source: hosted 163 | version: "5.5.3" 164 | firebase_core: 165 | dependency: "direct main" 166 | description: 167 | name: firebase_core 168 | sha256: a4a99204da264a0aa9d54a332ea0315ce7b0768075139c77abefe98093dd98be 169 | url: "https://pub.dev" 170 | source: hosted 171 | version: "2.14.0" 172 | firebase_core_platform_interface: 173 | dependency: transitive 174 | description: 175 | name: firebase_core_platform_interface 176 | sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2 177 | url: "https://pub.dev" 178 | source: hosted 179 | version: "4.8.0" 180 | firebase_core_web: 181 | dependency: transitive 182 | description: 183 | name: firebase_core_web 184 | sha256: "0fd5c4b228de29b55fac38aed0d9e42514b3d3bd47675de52bf7f8fccaf922fa" 185 | url: "https://pub.dev" 186 | source: hosted 187 | version: "2.6.0" 188 | firebase_storage: 189 | dependency: "direct main" 190 | description: 191 | name: firebase_storage 192 | sha256: "195ae2b623ba054b9be3934c79bf6282831ca15a81cfd392841feea930e50253" 193 | url: "https://pub.dev" 194 | source: hosted 195 | version: "11.2.4" 196 | firebase_storage_platform_interface: 197 | dependency: transitive 198 | description: 199 | name: firebase_storage_platform_interface 200 | sha256: be0f4254cae3ccaefd5d1435b82c1fa3bda33187387b241c55b27d7516ea9b93 201 | url: "https://pub.dev" 202 | source: hosted 203 | version: "4.4.3" 204 | firebase_storage_web: 205 | dependency: transitive 206 | description: 207 | name: firebase_storage_web 208 | sha256: f02c63c871deb36180b39a5fab1ee5b2677a01fa0fb642746ca62ae7f9d1a482 209 | url: "https://pub.dev" 210 | source: hosted 211 | version: "3.6.4" 212 | flutter: 213 | dependency: "direct main" 214 | description: flutter 215 | source: sdk 216 | version: "0.0.0" 217 | flutter_lints: 218 | dependency: "direct dev" 219 | description: 220 | name: flutter_lints 221 | sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" 222 | url: "https://pub.dev" 223 | source: hosted 224 | version: "2.0.2" 225 | flutter_test: 226 | dependency: "direct dev" 227 | description: flutter 228 | source: sdk 229 | version: "0.0.0" 230 | flutter_web_plugins: 231 | dependency: transitive 232 | description: flutter 233 | source: sdk 234 | version: "0.0.0" 235 | fluttertoast: 236 | dependency: "direct main" 237 | description: 238 | name: fluttertoast 239 | sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c" 240 | url: "https://pub.dev" 241 | source: hosted 242 | version: "8.2.2" 243 | font_awesome_flutter: 244 | dependency: "direct main" 245 | description: 246 | name: font_awesome_flutter 247 | sha256: "52671aea66da73b58d42ec6d0912b727a42248dd9a7c76d6c20f275783c48c08" 248 | url: "https://pub.dev" 249 | source: hosted 250 | version: "10.6.0" 251 | glob: 252 | dependency: transitive 253 | description: 254 | name: glob 255 | sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" 256 | url: "https://pub.dev" 257 | source: hosted 258 | version: "2.1.2" 259 | google_identity_services_web: 260 | dependency: transitive 261 | description: 262 | name: google_identity_services_web 263 | sha256: "000b7a31e1fa17ee04b6c0553a2b2ea18f9f9352e4dcc0c9fcc785cf10f2484e" 264 | url: "https://pub.dev" 265 | source: hosted 266 | version: "0.2.2" 267 | google_sign_in: 268 | dependency: "direct main" 269 | description: 270 | name: google_sign_in 271 | sha256: f45038d27bcad37498f282295ae97eece23c9349fc16649154067b87b9f1fd03 272 | url: "https://pub.dev" 273 | source: hosted 274 | version: "6.1.5" 275 | google_sign_in_android: 276 | dependency: transitive 277 | description: 278 | name: google_sign_in_android 279 | sha256: "6031f59074a337fdd81be821aba84cee3a41338c6e958499a5cd34d3e1db80ef" 280 | url: "https://pub.dev" 281 | source: hosted 282 | version: "6.1.20" 283 | google_sign_in_ios: 284 | dependency: transitive 285 | description: 286 | name: google_sign_in_ios 287 | sha256: "974944859f9cd40eb8a15b3fe8efb2d47fb7e99438f763f61a1ccd28d74ff4ce" 288 | url: "https://pub.dev" 289 | source: hosted 290 | version: "5.6.4" 291 | google_sign_in_platform_interface: 292 | dependency: transitive 293 | description: 294 | name: google_sign_in_platform_interface 295 | sha256: "35ceee5f0eadc1c07b0b4af7553246e315c901facbb7d3dadf734ba2693ceec4" 296 | url: "https://pub.dev" 297 | source: hosted 298 | version: "2.4.2" 299 | google_sign_in_web: 300 | dependency: transitive 301 | description: 302 | name: google_sign_in_web 303 | sha256: "939e9172a378ec4eaeb7f71eeddac9b55ebd0e8546d336daec476a68e5279766" 304 | url: "https://pub.dev" 305 | source: hosted 306 | version: "0.12.0+5" 307 | http: 308 | dependency: transitive 309 | description: 310 | name: http 311 | sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" 312 | url: "https://pub.dev" 313 | source: hosted 314 | version: "1.1.0" 315 | http_parser: 316 | dependency: transitive 317 | description: 318 | name: http_parser 319 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" 320 | url: "https://pub.dev" 321 | source: hosted 322 | version: "4.0.2" 323 | js: 324 | dependency: transitive 325 | description: 326 | name: js 327 | sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 328 | url: "https://pub.dev" 329 | source: hosted 330 | version: "0.6.7" 331 | lints: 332 | dependency: transitive 333 | description: 334 | name: lints 335 | sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" 336 | url: "https://pub.dev" 337 | source: hosted 338 | version: "2.1.1" 339 | matcher: 340 | dependency: transitive 341 | description: 342 | name: matcher 343 | sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" 344 | url: "https://pub.dev" 345 | source: hosted 346 | version: "0.12.16" 347 | material_color_utilities: 348 | dependency: transitive 349 | description: 350 | name: material_color_utilities 351 | sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" 352 | url: "https://pub.dev" 353 | source: hosted 354 | version: "0.5.0" 355 | meta: 356 | dependency: transitive 357 | description: 358 | name: meta 359 | sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e 360 | url: "https://pub.dev" 361 | source: hosted 362 | version: "1.10.0" 363 | package_config: 364 | dependency: transitive 365 | description: 366 | name: package_config 367 | sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" 368 | url: "https://pub.dev" 369 | source: hosted 370 | version: "2.1.0" 371 | path: 372 | dependency: transitive 373 | description: 374 | name: path 375 | sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" 376 | url: "https://pub.dev" 377 | source: hosted 378 | version: "1.8.3" 379 | pigeon: 380 | dependency: transitive 381 | description: 382 | name: pigeon 383 | sha256: "5a79fd0b10423f6b5705525e32015597f861c31220b522a67d1e6b580da96719" 384 | url: "https://pub.dev" 385 | source: hosted 386 | version: "11.0.1" 387 | plugin_platform_interface: 388 | dependency: transitive 389 | description: 390 | name: plugin_platform_interface 391 | sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" 392 | url: "https://pub.dev" 393 | source: hosted 394 | version: "2.1.4" 395 | pub_semver: 396 | dependency: transitive 397 | description: 398 | name: pub_semver 399 | sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" 400 | url: "https://pub.dev" 401 | source: hosted 402 | version: "2.1.4" 403 | quiver: 404 | dependency: transitive 405 | description: 406 | name: quiver 407 | sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 408 | url: "https://pub.dev" 409 | source: hosted 410 | version: "3.2.1" 411 | sky_engine: 412 | dependency: transitive 413 | description: flutter 414 | source: sdk 415 | version: "0.0.99" 416 | source_span: 417 | dependency: transitive 418 | description: 419 | name: source_span 420 | sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" 421 | url: "https://pub.dev" 422 | source: hosted 423 | version: "1.10.0" 424 | stack_trace: 425 | dependency: transitive 426 | description: 427 | name: stack_trace 428 | sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" 429 | url: "https://pub.dev" 430 | source: hosted 431 | version: "1.11.1" 432 | stream_channel: 433 | dependency: transitive 434 | description: 435 | name: stream_channel 436 | sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 437 | url: "https://pub.dev" 438 | source: hosted 439 | version: "2.1.2" 440 | string_scanner: 441 | dependency: transitive 442 | description: 443 | name: string_scanner 444 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 445 | url: "https://pub.dev" 446 | source: hosted 447 | version: "1.2.0" 448 | term_glyph: 449 | dependency: transitive 450 | description: 451 | name: term_glyph 452 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 453 | url: "https://pub.dev" 454 | source: hosted 455 | version: "1.2.1" 456 | test_api: 457 | dependency: transitive 458 | description: 459 | name: test_api 460 | sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" 461 | url: "https://pub.dev" 462 | source: hosted 463 | version: "0.6.1" 464 | typed_data: 465 | dependency: transitive 466 | description: 467 | name: typed_data 468 | sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c 469 | url: "https://pub.dev" 470 | source: hosted 471 | version: "1.3.2" 472 | vector_math: 473 | dependency: transitive 474 | description: 475 | name: vector_math 476 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 477 | url: "https://pub.dev" 478 | source: hosted 479 | version: "2.1.4" 480 | watcher: 481 | dependency: transitive 482 | description: 483 | name: watcher 484 | sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" 485 | url: "https://pub.dev" 486 | source: hosted 487 | version: "1.1.0" 488 | web: 489 | dependency: transitive 490 | description: 491 | name: web 492 | sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 493 | url: "https://pub.dev" 494 | source: hosted 495 | version: "0.3.0" 496 | yaml: 497 | dependency: transitive 498 | description: 499 | name: yaml 500 | sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" 501 | url: "https://pub.dev" 502 | source: hosted 503 | version: "3.1.2" 504 | sdks: 505 | dart: ">=3.2.0-194.0.dev <4.0.0" 506 | flutter: ">=3.13.0" 507 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_firebase 2 | description: A new Flutter project. 3 | # The following line prevents the package from being accidentally published to 4 | # pub.dev using `flutter pub publish`. This is preferred for private packages. 5 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 6 | 7 | # The following defines the version and build number for your application. 8 | # A version number is three numbers separated by dots, like 1.2.43 9 | # followed by an optional build number separated by a +. 10 | # Both the version and the builder number may be overridden in flutter 11 | # build by specifying --build-name and --build-number, respectively. 12 | # In Android, build-name is used as versionName while build-number used as versionCode. 13 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 14 | # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. 15 | # Read more about iOS versioning at 16 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 17 | # In Windows, build-name is used as the major, minor, and patch parts 18 | # of the product and file versions while build-number is used as the build suffix. 19 | version: 1.0.0+1 20 | 21 | environment: 22 | sdk: '>=3.0.5 <4.0.0' 23 | 24 | # Dependencies specify other packages that your package needs in order to work. 25 | # To automatically upgrade your package dependencies to the latest versions 26 | # consider running `flutter pub upgrade --major-versions`. Alternatively, 27 | # dependencies can be manually updated by changing the version numbers below to 28 | # the latest version available on pub.dev. To see which dependencies have newer 29 | # versions available, run `flutter pub outdated`. 30 | dependencies: 31 | flutter: 32 | sdk: flutter 33 | 34 | 35 | # The following adds the Cupertino Icons font to your application. 36 | # Use with the CupertinoIcons class for iOS style icons. 37 | cupertino_icons: ^1.0.2 38 | firebase_core: any 39 | cloud_firestore: ^4.8.2 40 | firebase_auth: ^4.6.3 41 | firebase_storage: ^11.2.4 42 | fluttertoast: ^8.2.2 43 | font_awesome_flutter: ^10.6.0 44 | google_sign_in: ^6.1.5 45 | 46 | dev_dependencies: 47 | flutter_test: 48 | sdk: flutter 49 | 50 | # The "flutter_lints" package below contains a set of recommended lints to 51 | # encourage good coding practices. The lint set provided by the package is 52 | # activated in the `analysis_options.yaml` file located at the root of your 53 | # package. See that file for information about deactivating specific lint 54 | # rules and activating additional ones. 55 | flutter_lints: ^2.0.0 56 | 57 | # For information on the generic Dart part of this file, see the 58 | # following page: https://dart.dev/tools/pub/pubspec 59 | 60 | # The following section is specific to Flutter packages. 61 | flutter: 62 | 63 | # The following line ensures that the Material Icons font is 64 | # included with your application, so that you can use the icons in 65 | # the material Icons class. 66 | uses-material-design: true 67 | 68 | # To add assets to your application, add an assets section, like this: 69 | # assets: 70 | # - images/a_dot_burr.jpeg 71 | # - images/a_dot_ham.jpeg 72 | 73 | # An image asset can refer to one or more resolution-specific "variants", see 74 | # https://flutter.dev/assets-and-images/#resolution-aware 75 | 76 | # For details regarding adding assets from package dependencies, see 77 | # https://flutter.dev/assets-and-images/#from-packages 78 | 79 | # To add custom fonts to your application, add a fonts section here, 80 | # in this "flutter" section. Each entry in this list should have a 81 | # "family" key with the font family name, and a "fonts" key with a 82 | # list giving the asset and other descriptors for the font. For 83 | # example: 84 | # fonts: 85 | # - family: Schyler 86 | # fonts: 87 | # - asset: fonts/Schyler-Regular.ttf 88 | # - asset: fonts/Schyler-Italic.ttf 89 | # style: italic 90 | # - family: Trajan Pro 91 | # fonts: 92 | # - asset: fonts/TrajanPro.ttf 93 | # - asset: fonts/TrajanPro_Bold.ttf 94 | # weight: 700 95 | # 96 | # For details regarding fonts from package dependencies, 97 | # see https://flutter.dev/custom-fonts/#from-packages 98 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/test/widget_test.dart -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hassank185/Flutter-Firebase-Series/cd7c43bdb69ff0d9850dbf86ed4c3f829d4ae438/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | flutter_firebase 33 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flutter_firebase", 3 | "short_name": "flutter_firebase", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | --------------------------------------------------------------------------------