├── .flutter-plugins-dependencies
├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── android
├── app
│ ├── build.gradle
│ ├── google-services.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── net
│ │ │ │ └── ithinkdiff
│ │ │ │ └── flutter_firebase_vote
│ │ │ │ └── MainActivity.java
│ │ └── res
│ │ │ ├── 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
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── authentication.png
├── cover.png
├── demo1.jpg
├── demo3.gif
├── firebase_android.png
├── ios
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ ├── Flutter.podspec
│ ├── Release.xcconfig
│ └── flutter_export_environment.sh
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── 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
│ └── main.m
├── lib
├── constants.dart
├── main.dart
├── models
│ └── vote.dart
├── screens
│ ├── home_screen.dart
│ ├── launch_screen.dart
│ └── result_screen.dart
├── services
│ ├── authentication.dart
│ ├── constants.dart
│ └── services.dart
├── state
│ ├── authentication.dart
│ └── vote.dart
├── utilities.dart
└── widgets
│ ├── shared_widgets.dart
│ ├── vote.dart
│ └── vote_list.dart
├── pubspec.lock
├── pubspec.yaml
├── resource
└── model.drawio
└── test
└── widget_test.dart
/.flutter-plugins-dependencies:
--------------------------------------------------------------------------------
1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/","dependencies":[]},{"name":"google_sign_in","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in-4.5.1/","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/","dependencies":[]},{"name":"google_sign_in","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in-4.5.1/","dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/","dependencies":[]}],"linux":[],"windows":[],"web":[{"name":"cloud_firestore_web","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1+2/","dependencies":[]},{"name":"firebase_auth_web","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.3+1/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/","dependencies":[]},{"name":"google_sign_in_web","path":"/Users/mahmud/Home/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/google_sign_in_web-0.9.1+1/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core","cloud_firestore_web"]},{"name":"cloud_firestore_web","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_web"]},{"name":"google_sign_in_web","dependencies":[]}],"date_created":"2020-05-27 14:20:19.479949","version":"1.17.1"}
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | .dart_tool/
26 | .flutter-plugins
27 | .packages
28 | .pub-cache/
29 | .pub/
30 | /build/
31 |
32 | # Android related
33 | **/android/**/gradle-wrapper.jar
34 | **/android/.gradle
35 | **/android/captures/
36 | **/android/gradlew
37 | **/android/gradlew.bat
38 | **/android/local.properties
39 | **/android/**/GeneratedPluginRegistrant.java
40 |
41 | # iOS/XCode related
42 | **/ios/**/*.mode1v3
43 | **/ios/**/*.mode2v3
44 | **/ios/**/*.moved-aside
45 | **/ios/**/*.pbxuser
46 | **/ios/**/*.perspectivev3
47 | **/ios/**/*sync/
48 | **/ios/**/.sconsign.dblite
49 | **/ios/**/.tags*
50 | **/ios/**/.vagrant/
51 | **/ios/**/DerivedData/
52 | **/ios/**/Icon?
53 | **/ios/**/Pods/
54 | **/ios/**/.symlinks/
55 | **/ios/**/profile
56 | **/ios/**/xcuserdata
57 | **/ios/.generated/
58 | **/ios/Flutter/App.framework
59 | **/ios/Flutter/Flutter.framework
60 | **/ios/Flutter/Generated.xcconfig
61 | **/ios/Flutter/app.flx
62 | **/ios/Flutter/app.zip
63 | **/ios/Flutter/flutter_assets/
64 | **/ios/ServiceDefinitions.json
65 | **/ios/Runner/GeneratedPluginRegistrant.*
66 |
67 | # Exceptions to above rules.
68 | !**/ios/**/default.mode1v3
69 | !**/ios/**/default.mode2v3
70 | !**/ios/**/default.pbxuser
71 | !**/ios/**/default.perspectivev3
72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
73 |
--------------------------------------------------------------------------------
/.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 and should not be manually edited.
5 |
6 | version:
7 | revision: 20e59316b8b8474554b38493b8ca888794b0234a
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Mahmud Ahsan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | # Vote - A full Flutter Application
18 | - [Video Tutorial 1: Building the app](https://www.youtube.com/watch?v=Iu9DpbzR83s)
19 | - [Video Tutorial 2: Add Firebase Authentication and Firestore Database](https://youtu.be/N6DF-zz9c6o)
20 | - [Video Tutorial 3: Migrating Provider 4.0 and Fix Android Firebase Authentication issues](https://www.youtube.com/watch?v=8W8zT0MKLWk)
21 |
22 | > - [Migration to Provider 4.0](#migration-to-provider-4)
23 | > - [Firebase configuration for android](#firebase-configuration-for-android)
24 |
25 | > A flutter and firebase based vote application.
26 | For state management we used, [Provider](https://pub.dev/packages/provider).
27 |
28 | > If you need to know how to use [Provider](https://pub.dev/packages/provider), please
29 | > - [How to use Provider 3.0](https://www.youtube.com/watch?v=fEIdWV8MAso)
30 | > - [Migrating Provider 3 to 4](https://youtu.be/xR-2rM_99-E)
31 |
32 | ### Demo 2.0
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | ### Features and Updates
43 | > Version 3.0
44 | > 1. Provider library updated to version 4.0
45 | > 2. All other 3rd party libraries updated
46 | > 3. All related app code updated to support provider 4.0
47 | > 4. Android auth fix in firebase and in config
48 |
49 | > Version 2.0
50 | > 1. User can sign in
51 | > 2. User can see vote List from Firebase
52 | > 3. User can vote
53 | > 4. User can see result
54 |
55 | ### Authentication Flow Chart
56 |
57 |
58 |
59 |
60 | ### Migration to Provider 4
61 | - [Update Provider 3.0 to 4.0](https://pub.dev/packages/provider)
62 | - [Changes committed](https://github.com/mahmudahsan/flutter_firebase_vote/commit/0f82330911cb3b4b398488cf00dbf5a7b4ada337)
63 |
64 | ### Firebase configuration for android
65 | ***Sometimes firebase and google auth doesn't work on Android Emulators, so preferred way to to test in a real device***
66 |
67 | > Firebase authentication is very critical for android. If you don't do the following things the app will not work on android. Also if you found any error, search in Google.
68 |
69 | > To know more about how to add ***Firebase Auth, Google Auth and Firestore*** in a Flutter app [check the video tutorial](https://youtu.be/N6DF-zz9c6o)
70 |
71 | - Update all 3rd party libraries in pubspec.yaml
72 | - Add android app in the firebase. To change or know the android application id open the file `android/app/build.gradle` or check from `android/app/src/main/AndroidManifest.xml` to get the application id
73 | - Download `google-service.json` file from firebase
74 |
75 |
76 |
77 |
78 |
79 | - Copy `google-service.json` file and put it `android/app/google-service.json`
80 | - Update `android/build.gradle` by adding `multiDexEnabled true` to `defaultConfig`
81 | ```
82 | defaultConfig {
83 | multiDexEnabled true
84 | }
85 | ```
86 | - Update `android/gradle.properties` if you already didn't migrated https://flutter.dev/docs/development/androidx-migration
87 | ```
88 | android.useAndroidX=true
89 | android.enableJetifier=true
90 | ```
91 | - update android/build.gradle to latest versions
92 | ```
93 | dependencies {
94 | classpath 'com.android.tools.build:gradle:3.6.3'
95 | classpath 'com.google.gms:google-services:4.3.3'
96 | }
97 | ```
98 | - Update distributionUrl to latest `android/gradle/wrapper/gradle-wrapper.properties`
99 | ```
100 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
101 | ```
102 | - Android Google Sign In. Run the following command generate SHA-1 and SHA-256 keys and add in Firebase
103 | https://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate
104 | ```
105 | keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
106 | ```
107 |
108 |
109 |
110 |
111 | ### Widgets
112 |
113 | > [Widget Index](https://flutter.dev/docs/reference/widgets)
114 |
115 | - [Stepper Class](https://api.flutter.dev/flutter/material/Stepper-class.html)
116 | - [MaterialApp](https://api.flutter.dev/flutter/material/MaterialApp-class.html)
117 | - [Scaffold](https://api.flutter.dev/flutter/material/Scaffold-class.html)
118 | - [Container](https://api.flutter.dev/flutter/widgets/Container-class.html)
119 | - [Column](https://api.flutter.dev/flutter/widgets/Column-class.html)
120 | - [Row](https://api.flutter.dev/flutter/widgets/Row-class.html)
121 | - [Expanded](https://api.flutter.dev/flutter/widgets/Expanded-class.html)
122 | - [LimitedBox](https://api.flutter.dev/flutter/widgets/LimitedBox-class.html)
123 | - [IntrinsicHeight](https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html)
124 | - [InkWell](https://api.flutter.dev/flutter/material/InkWell-class.html)
125 |
126 |
127 | ### 3rd Party Libraries
128 |
129 | - [UUID](https://pub.dev/packages/uuid)
130 | - [Provider](https://pub.dev/packages/provider)
131 | - [Charts Flutter](https://pub.dev/packages/charts_flutter)
132 | - [Chart Gallery](https://google.github.io/charts/flutter/gallery.html)
133 | - [Firebase Auth](https://pub.dev/packages/firebase_auth)
134 | - [Firebase Setup](https://firebase.google.com/docs/flutter/setup)
135 | - [Google Sign In](https://pub.dev/packages/google_sign_in)
136 | - [Firebase Plugins](https://github.com/FirebaseExtended/flutterfire)
137 | - [Cloud Firestore](https://pub.dev/packages/cloud_firestore)
138 | - [Loading](https://pub.dev/packages/loading)
139 |
140 |
141 | ### Tutorials
142 | 1. [Youtube - Flutter Playlist 1](https://www.youtube.com/playlist?list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ)
143 | 2. [Youtube - Flutter Playlist 2](https://www.youtube.com/playlist?list=PLlMOodDAsO4zQ243zMHKKrV316PJU9q0E)
144 |
145 | ### Flutter Full Application
146 | 1. [Vote](https://git.io/JeRjb) | [Tutorial](https://www.youtube.com/watch?v=Iu9DpbzR83s&list=PLlMOodDAsO4zQ243zMHKKrV316PJU9q0E&index=2&t=0s)
147 | 2. [Todos](https://github.com/mahmudahsan/flutter_todos) | [Tutorial](https://youtu.be/OQG3MxenJsM)
148 |
149 | ### Flutter Tutorials Beginners
150 | 1. [Dart Programming Language for Beginners](https://www.youtube.com/watch?v=Ej_Pcr4uC2Q&list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ&index=2&t=10s)
151 | 2. [Flutter for Beginners - Creating First App](https://www.youtube.com/watch?v=HFl29MoZ6MA&list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ&index=3&t=0s)
152 | 3. [How to Create a Profile Page App](https://www.youtube.com/watch?v=ULxYR66BRb4&list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ&index=5&t=0s)
153 |
154 | ### Flutter Tutorials Managing States
155 |
156 | 1. [Stateful Widget](https://www.youtube.com/watch?v=8iHfqfHclTQ&list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ&index=17&t=0s)
157 | 2. [State: Provider](https://git.io/Je4ZP) | [Tutorial](https://www.youtube.com/watch?v=fEIdWV8MAso)
158 | 3. [State: Redux](https://git.io/Je4Z6) | [Tutorial](https://www.youtube.com/watch?v=vzCszJQ_qZQ&t=793s)
159 | 4. [State: Bloc](https://git.io/Je4s5) | [Tutorial](https://youtu.be/BHC_D52TecY)
160 |
161 | ### Flutter Mixed
162 | - [Form](flutter/form) | [Tutorial](https://www.youtube.com/watch?v=S-nLT3TRJFY&t=1646s)
163 |
164 | ### Quick Reference
165 |
166 | 1. [Dart Language](https://github.com/mahmudahsan/flutter/tree/master/dart) | [Video](https://www.youtube.com/watch?v=Ej_Pcr4uC2Q&list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ&index=3)
167 | 2. [Flutter](https://github.com/mahmudahsan/flutter/tree/master/flutter) | [Video](https://www.youtube.com/playlist?list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ)
168 |
169 | ### Resources
170 |
171 | - [Official Site](https://flutter.dev/)
172 | - [Widget Category](https://flutter.dev/docs/reference/widgets)
173 | - [Pub.Dev](https://pub.dev/)
174 |
175 |
176 | ## Support
177 | If it helps you, please give a ***star*** in this repo. Also you can support me by subscribing my [youtube channel](https://www.youtube.com/channel/UCtHlgyUw0wLE5Ous9swfFlg).
178 |
179 | ## Questions or feedback?
180 |
181 | Feel free to open an issue, or find me [@mahmudahsan on Twitter](https://twitter.com/mahmudahsan).
182 |
--------------------------------------------------------------------------------
/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 from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26 |
27 | android {
28 | compileSdkVersion 28
29 |
30 | lintOptions {
31 | disable 'InvalidPackage'
32 | }
33 |
34 | defaultConfig {
35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36 | applicationId "net.ithinkdiff.flutter_firebase_vote"
37 | minSdkVersion 16
38 | targetSdkVersion 28
39 | versionCode flutterVersionCode.toInteger()
40 | versionName flutterVersionName
41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
42 | multiDexEnabled true
43 | }
44 |
45 | buildTypes {
46 | release {
47 | // TODO: Add your own signing config for the release build.
48 | // Signing with the debug keys for now, so `flutter run --release` works.
49 | signingConfig signingConfigs.debug
50 | }
51 | }
52 | }
53 |
54 | flutter {
55 | source '../..'
56 | }
57 |
58 | dependencies {
59 | testImplementation 'junit:junit:4.12'
60 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
61 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
62 | }
63 |
64 | apply plugin: 'com.google.gms.google-services'
--------------------------------------------------------------------------------
/android/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "694052778285",
4 | "firebase_url": "https://vote-prep.firebaseio.com",
5 | "project_id": "vote-prep",
6 | "storage_bucket": "vote-prep.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:694052778285:android:bd3d602fb600de006923a4",
12 | "android_client_info": {
13 | "package_name": "net.ithinkdiff.flutter_firebase_vote"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "694052778285-ri25lvbqf198gsu0lt7lseerc651rn3p.apps.googleusercontent.com",
19 | "client_type": 3
20 | }
21 | ],
22 | "api_key": [
23 | {
24 | "current_key": "AIzaSyC0wJqTlrZltTy7TkHGEMK3tyzpx818JCw"
25 | }
26 | ],
27 | "services": {
28 | "appinvite_service": {
29 | "other_platform_oauth_client": [
30 | {
31 | "client_id": "694052778285-ri25lvbqf198gsu0lt7lseerc651rn3p.apps.googleusercontent.com",
32 | "client_type": 3
33 | },
34 | {
35 | "client_id": "694052778285-lfdh5fnfdjl6p9n5h6f7av7ttl467nrp.apps.googleusercontent.com",
36 | "client_type": 2,
37 | "ios_info": {
38 | "bundle_id": "net.ithinkdiff.vote-prep"
39 | }
40 | }
41 | ]
42 | }
43 | }
44 | }
45 | ],
46 | "configuration_version": "1"
47 | }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
9 |
13 |
20 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/android/app/src/main/java/net/ithinkdiff/flutter_firebase_vote/MainActivity.java:
--------------------------------------------------------------------------------
1 | package net.ithinkdiff.flutter_firebase_vote;
2 |
3 | import android.os.Bundle;
4 | import io.flutter.app.FlutterActivity;
5 | import io.flutter.plugins.GeneratedPluginRegistrant;
6 |
7 | public class MainActivity extends FlutterActivity {
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | GeneratedPluginRegistrant.registerWith(this);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.6.3'
9 | classpath 'com.google.gms:google-services:4.3.3'
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | google()
16 | jcenter()
17 | }
18 | }
19 |
20 | rootProject.buildDir = '../build'
21 | subprojects {
22 | project.buildDir = "${rootProject.buildDir}/${project.name}"
23 | }
24 | subprojects {
25 | project.evaluationDependsOn(':app')
26 | }
27 |
28 | task clean(type: Delete) {
29 | delete rootProject.buildDir
30 | }
31 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 |
3 | android.enableR8=true
4 | android.useAndroidX=true
5 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/authentication.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/authentication.png
--------------------------------------------------------------------------------
/cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/cover.png
--------------------------------------------------------------------------------
/demo1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/demo1.jpg
--------------------------------------------------------------------------------
/demo3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/demo3.gif
--------------------------------------------------------------------------------
/firebase_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/firebase_android.png
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
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 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Flutter.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # NOTE: This podspec is NOT to be published. It is only used as a local source!
3 | #
4 |
5 | Pod::Spec.new do |s|
6 | s.name = 'Flutter'
7 | s.version = '1.0.0'
8 | s.summary = 'High-performance, high-fidelity mobile apps.'
9 | s.description = <<-DESC
10 | Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS.
11 | DESC
12 | s.homepage = 'https://flutter.io'
13 | s.license = { :type => 'MIT' }
14 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
15 | s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
16 | s.ios.deployment_target = '8.0'
17 | s.vendored_frameworks = 'Flutter.framework'
18 | end
19 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/flutter_export_environment.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This is a generated file; do not edit or check into version control.
3 | export "FLUTTER_ROOT=/Users/mahmud/Home/Flutter/flutter"
4 | export "FLUTTER_APPLICATION_PATH=/Users/mahmud/Home/ithinkdiff/open_source/Flutter-projects/flutter_firebase_vote"
5 | export "FLUTTER_TARGET=/Users/mahmud/Home/ithinkdiff/open_source/Flutter-projects/flutter_firebase_vote/lib/main.dart"
6 | export "FLUTTER_BUILD_DIR=build"
7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios"
8 | export "OTHER_LDFLAGS=$(inherited) -framework Flutter"
9 | export "FLUTTER_FRAMEWORK_DIR=/Users/mahmud/Home/Flutter/flutter/bin/cache/artifacts/engine/ios"
10 | export "FLUTTER_BUILD_NAME=1.0.0"
11 | export "FLUTTER_BUILD_NUMBER=1"
12 | export "TRACK_WIDGET_CREATION=true"
13 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def parse_KV_file(file, separator='=')
14 | file_abs_path = File.expand_path(file)
15 | if !File.exists? file_abs_path
16 | return [];
17 | end
18 | generated_key_values = {}
19 | skip_line_start_symbols = ["#", "/"]
20 | File.foreach(file_abs_path) do |line|
21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
22 | plugin = line.split(pattern=separator)
23 | if plugin.length == 2
24 | podname = plugin[0].strip()
25 | path = plugin[1].strip()
26 | podpath = File.expand_path("#{path}", file_abs_path)
27 | generated_key_values[podname] = podpath
28 | else
29 | puts "Invalid plugin specification: #{line}"
30 | end
31 | end
32 | generated_key_values
33 | end
34 |
35 | target 'Runner' do
36 | # Flutter Pod
37 |
38 | copied_flutter_dir = File.join(__dir__, 'Flutter')
39 | copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
40 | copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
41 | unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
42 | # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
43 | # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
44 | # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
45 |
46 | generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
47 | unless File.exist?(generated_xcode_build_settings_path)
48 | raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
49 | end
50 | generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
51 | cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
52 |
53 | unless File.exist?(copied_framework_path)
54 | FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
55 | end
56 | unless File.exist?(copied_podspec_path)
57 | FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
58 | end
59 | end
60 |
61 | # Keep pod path relative so it can be checked into Podfile.lock.
62 | pod 'Flutter', :path => 'Flutter'
63 |
64 | # Plugin Pods
65 |
66 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
67 | # referring to absolute paths on developers' machines.
68 | system('rm -rf .symlinks')
69 | system('mkdir -p .symlinks/plugins')
70 | plugin_pods = parse_KV_file('../.flutter-plugins')
71 | plugin_pods.each do |name, path|
72 | symlink = File.join('.symlinks', 'plugins', name)
73 | File.symlink(path, symlink)
74 | pod name, :path => File.join(symlink, 'ios')
75 | end
76 | end
77 |
78 | post_install do |installer|
79 | installer.pods_project.targets.each do |target|
80 | target.build_configurations.each do |config|
81 | config.build_settings['ENABLE_BITCODE'] = 'NO'
82 | end
83 | end
84 | end
85 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - abseil/algorithm (0.20200225.0):
3 | - abseil/algorithm/algorithm (= 0.20200225.0)
4 | - abseil/algorithm/container (= 0.20200225.0)
5 | - abseil/algorithm/algorithm (0.20200225.0):
6 | - abseil/base/config
7 | - abseil/algorithm/container (0.20200225.0):
8 | - abseil/algorithm/algorithm
9 | - abseil/base/core_headers
10 | - abseil/meta/type_traits
11 | - abseil/base (0.20200225.0):
12 | - abseil/base/atomic_hook (= 0.20200225.0)
13 | - abseil/base/base (= 0.20200225.0)
14 | - abseil/base/base_internal (= 0.20200225.0)
15 | - abseil/base/bits (= 0.20200225.0)
16 | - abseil/base/config (= 0.20200225.0)
17 | - abseil/base/core_headers (= 0.20200225.0)
18 | - abseil/base/dynamic_annotations (= 0.20200225.0)
19 | - abseil/base/endian (= 0.20200225.0)
20 | - abseil/base/errno_saver (= 0.20200225.0)
21 | - abseil/base/exponential_biased (= 0.20200225.0)
22 | - abseil/base/log_severity (= 0.20200225.0)
23 | - abseil/base/malloc_internal (= 0.20200225.0)
24 | - abseil/base/periodic_sampler (= 0.20200225.0)
25 | - abseil/base/pretty_function (= 0.20200225.0)
26 | - abseil/base/raw_logging_internal (= 0.20200225.0)
27 | - abseil/base/spinlock_wait (= 0.20200225.0)
28 | - abseil/base/throw_delegate (= 0.20200225.0)
29 | - abseil/base/atomic_hook (0.20200225.0):
30 | - abseil/base/config
31 | - abseil/base/core_headers
32 | - abseil/base/base (0.20200225.0):
33 | - abseil/base/atomic_hook
34 | - abseil/base/base_internal
35 | - abseil/base/config
36 | - abseil/base/core_headers
37 | - abseil/base/dynamic_annotations
38 | - abseil/base/log_severity
39 | - abseil/base/raw_logging_internal
40 | - abseil/base/spinlock_wait
41 | - abseil/meta/type_traits
42 | - abseil/base/base_internal (0.20200225.0):
43 | - abseil/base/config
44 | - abseil/meta/type_traits
45 | - abseil/base/bits (0.20200225.0):
46 | - abseil/base/config
47 | - abseil/base/core_headers
48 | - abseil/base/config (0.20200225.0)
49 | - abseil/base/core_headers (0.20200225.0):
50 | - abseil/base/config
51 | - abseil/base/dynamic_annotations (0.20200225.0)
52 | - abseil/base/endian (0.20200225.0):
53 | - abseil/base/config
54 | - abseil/base/core_headers
55 | - abseil/base/errno_saver (0.20200225.0):
56 | - abseil/base/config
57 | - abseil/base/exponential_biased (0.20200225.0):
58 | - abseil/base/config
59 | - abseil/base/core_headers
60 | - abseil/base/log_severity (0.20200225.0):
61 | - abseil/base/config
62 | - abseil/base/core_headers
63 | - abseil/base/malloc_internal (0.20200225.0):
64 | - abseil/base/base
65 | - abseil/base/base_internal
66 | - abseil/base/config
67 | - abseil/base/core_headers
68 | - abseil/base/dynamic_annotations
69 | - abseil/base/raw_logging_internal
70 | - abseil/base/periodic_sampler (0.20200225.0):
71 | - abseil/base/core_headers
72 | - abseil/base/exponential_biased
73 | - abseil/base/pretty_function (0.20200225.0)
74 | - abseil/base/raw_logging_internal (0.20200225.0):
75 | - abseil/base/atomic_hook
76 | - abseil/base/config
77 | - abseil/base/core_headers
78 | - abseil/base/log_severity
79 | - abseil/base/spinlock_wait (0.20200225.0):
80 | - abseil/base/base_internal
81 | - abseil/base/core_headers
82 | - abseil/base/errno_saver
83 | - abseil/base/throw_delegate (0.20200225.0):
84 | - abseil/base/config
85 | - abseil/base/raw_logging_internal
86 | - abseil/container/compressed_tuple (0.20200225.0):
87 | - abseil/utility/utility
88 | - abseil/container/inlined_vector (0.20200225.0):
89 | - abseil/algorithm/algorithm
90 | - abseil/base/core_headers
91 | - abseil/base/throw_delegate
92 | - abseil/container/inlined_vector_internal
93 | - abseil/memory/memory
94 | - abseil/container/inlined_vector_internal (0.20200225.0):
95 | - abseil/base/core_headers
96 | - abseil/container/compressed_tuple
97 | - abseil/memory/memory
98 | - abseil/meta/type_traits
99 | - abseil/types/span
100 | - abseil/memory (0.20200225.0):
101 | - abseil/memory/memory (= 0.20200225.0)
102 | - abseil/memory/memory (0.20200225.0):
103 | - abseil/base/core_headers
104 | - abseil/meta/type_traits
105 | - abseil/meta (0.20200225.0):
106 | - abseil/meta/type_traits (= 0.20200225.0)
107 | - abseil/meta/type_traits (0.20200225.0):
108 | - abseil/base/config
109 | - abseil/numeric/int128 (0.20200225.0):
110 | - abseil/base/config
111 | - abseil/base/core_headers
112 | - abseil/strings/internal (0.20200225.0):
113 | - abseil/base/config
114 | - abseil/base/core_headers
115 | - abseil/base/endian
116 | - abseil/base/raw_logging_internal
117 | - abseil/meta/type_traits
118 | - abseil/strings/str_format (0.20200225.0):
119 | - abseil/strings/str_format_internal
120 | - abseil/strings/str_format_internal (0.20200225.0):
121 | - abseil/base/config
122 | - abseil/base/core_headers
123 | - abseil/meta/type_traits
124 | - abseil/numeric/int128
125 | - abseil/strings/strings
126 | - abseil/types/span
127 | - abseil/strings/strings (0.20200225.0):
128 | - abseil/base/base
129 | - abseil/base/bits
130 | - abseil/base/config
131 | - abseil/base/core_headers
132 | - abseil/base/endian
133 | - abseil/base/raw_logging_internal
134 | - abseil/base/throw_delegate
135 | - abseil/memory/memory
136 | - abseil/meta/type_traits
137 | - abseil/numeric/int128
138 | - abseil/strings/internal
139 | - abseil/time (0.20200225.0):
140 | - abseil/time/internal (= 0.20200225.0)
141 | - abseil/time/time (= 0.20200225.0)
142 | - abseil/time/internal (0.20200225.0):
143 | - abseil/time/internal/cctz (= 0.20200225.0)
144 | - abseil/time/internal/cctz (0.20200225.0):
145 | - abseil/time/internal/cctz/civil_time (= 0.20200225.0)
146 | - abseil/time/internal/cctz/time_zone (= 0.20200225.0)
147 | - abseil/time/internal/cctz/civil_time (0.20200225.0):
148 | - abseil/base/config
149 | - abseil/time/internal/cctz/time_zone (0.20200225.0):
150 | - abseil/base/config
151 | - abseil/time/internal/cctz/civil_time
152 | - abseil/time/time (0.20200225.0):
153 | - abseil/base/base
154 | - abseil/base/core_headers
155 | - abseil/base/raw_logging_internal
156 | - abseil/numeric/int128
157 | - abseil/strings/strings
158 | - abseil/time/internal/cctz/civil_time
159 | - abseil/time/internal/cctz/time_zone
160 | - abseil/types (0.20200225.0):
161 | - abseil/types/any (= 0.20200225.0)
162 | - abseil/types/bad_any_cast (= 0.20200225.0)
163 | - abseil/types/bad_any_cast_impl (= 0.20200225.0)
164 | - abseil/types/bad_optional_access (= 0.20200225.0)
165 | - abseil/types/bad_variant_access (= 0.20200225.0)
166 | - abseil/types/compare (= 0.20200225.0)
167 | - abseil/types/optional (= 0.20200225.0)
168 | - abseil/types/span (= 0.20200225.0)
169 | - abseil/types/variant (= 0.20200225.0)
170 | - abseil/types/any (0.20200225.0):
171 | - abseil/base/config
172 | - abseil/base/core_headers
173 | - abseil/meta/type_traits
174 | - abseil/types/bad_any_cast
175 | - abseil/utility/utility
176 | - abseil/types/bad_any_cast (0.20200225.0):
177 | - abseil/base/config
178 | - abseil/types/bad_any_cast_impl
179 | - abseil/types/bad_any_cast_impl (0.20200225.0):
180 | - abseil/base/config
181 | - abseil/base/raw_logging_internal
182 | - abseil/types/bad_optional_access (0.20200225.0):
183 | - abseil/base/config
184 | - abseil/base/raw_logging_internal
185 | - abseil/types/bad_variant_access (0.20200225.0):
186 | - abseil/base/config
187 | - abseil/base/raw_logging_internal
188 | - abseil/types/compare (0.20200225.0):
189 | - abseil/base/core_headers
190 | - abseil/meta/type_traits
191 | - abseil/types/optional (0.20200225.0):
192 | - abseil/base/base_internal
193 | - abseil/base/config
194 | - abseil/base/core_headers
195 | - abseil/memory/memory
196 | - abseil/meta/type_traits
197 | - abseil/types/bad_optional_access
198 | - abseil/utility/utility
199 | - abseil/types/span (0.20200225.0):
200 | - abseil/algorithm/algorithm
201 | - abseil/base/core_headers
202 | - abseil/base/throw_delegate
203 | - abseil/meta/type_traits
204 | - abseil/types/variant (0.20200225.0):
205 | - abseil/base/base_internal
206 | - abseil/base/config
207 | - abseil/base/core_headers
208 | - abseil/meta/type_traits
209 | - abseil/types/bad_variant_access
210 | - abseil/utility/utility
211 | - abseil/utility/utility (0.20200225.0):
212 | - abseil/base/base_internal
213 | - abseil/base/config
214 | - abseil/meta/type_traits
215 | - AppAuth (1.3.0):
216 | - AppAuth/Core (= 1.3.0)
217 | - AppAuth/ExternalUserAgent (= 1.3.0)
218 | - AppAuth/Core (1.3.0)
219 | - AppAuth/ExternalUserAgent (1.3.0)
220 | - BoringSSL-GRPC (0.0.7):
221 | - BoringSSL-GRPC/Implementation (= 0.0.7)
222 | - BoringSSL-GRPC/Interface (= 0.0.7)
223 | - BoringSSL-GRPC/Implementation (0.0.7):
224 | - BoringSSL-GRPC/Interface (= 0.0.7)
225 | - BoringSSL-GRPC/Interface (0.0.7)
226 | - cloud_firestore (0.0.1):
227 | - Firebase/Core
228 | - Firebase/Firestore (~> 6.0)
229 | - Flutter
230 | - cloud_firestore_web (0.1.0):
231 | - Flutter
232 | - Firebase/Auth (6.24.0):
233 | - Firebase/CoreOnly
234 | - FirebaseAuth (~> 6.5.3)
235 | - Firebase/Core (6.24.0):
236 | - Firebase/CoreOnly
237 | - FirebaseAnalytics (= 6.5.0)
238 | - Firebase/CoreOnly (6.24.0):
239 | - FirebaseCore (= 6.7.0)
240 | - Firebase/Firestore (6.24.0):
241 | - Firebase/CoreOnly
242 | - FirebaseFirestore (~> 1.13.0)
243 | - firebase_auth (0.0.1):
244 | - Firebase/Auth (~> 6.3)
245 | - Firebase/Core
246 | - Flutter
247 | - firebase_auth_web (0.1.0):
248 | - Flutter
249 | - firebase_core (0.0.1):
250 | - Firebase/Core
251 | - Flutter
252 | - firebase_core_web (0.1.0):
253 | - Flutter
254 | - FirebaseAnalytics (6.5.0):
255 | - FirebaseCore (~> 6.7)
256 | - FirebaseInstallations (~> 1.2)
257 | - GoogleAppMeasurement (= 6.5.0)
258 | - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
259 | - GoogleUtilities/MethodSwizzler (~> 6.0)
260 | - GoogleUtilities/Network (~> 6.0)
261 | - "GoogleUtilities/NSData+zlib (~> 6.0)"
262 | - nanopb (~> 1.30905.0)
263 | - FirebaseAuth (6.5.3):
264 | - FirebaseAuthInterop (~> 1.0)
265 | - FirebaseCore (~> 6.6)
266 | - GoogleUtilities/AppDelegateSwizzler (~> 6.5)
267 | - GoogleUtilities/Environment (~> 6.5)
268 | - GTMSessionFetcher/Core (~> 1.1)
269 | - FirebaseAuthInterop (1.1.0)
270 | - FirebaseCore (6.7.0):
271 | - FirebaseCoreDiagnostics (~> 1.3)
272 | - FirebaseCoreDiagnosticsInterop (~> 1.2)
273 | - GoogleUtilities/Environment (~> 6.5)
274 | - GoogleUtilities/Logger (~> 6.5)
275 | - FirebaseCoreDiagnostics (1.3.0):
276 | - FirebaseCoreDiagnosticsInterop (~> 1.2)
277 | - GoogleDataTransportCCTSupport (~> 3.1)
278 | - GoogleUtilities/Environment (~> 6.5)
279 | - GoogleUtilities/Logger (~> 6.5)
280 | - nanopb (~> 1.30905.0)
281 | - FirebaseCoreDiagnosticsInterop (1.2.0)
282 | - FirebaseFirestore (1.13.0):
283 | - abseil/algorithm (= 0.20200225.0)
284 | - abseil/base (= 0.20200225.0)
285 | - abseil/memory (= 0.20200225.0)
286 | - abseil/meta (= 0.20200225.0)
287 | - abseil/strings/strings (= 0.20200225.0)
288 | - abseil/time (= 0.20200225.0)
289 | - abseil/types (= 0.20200225.0)
290 | - FirebaseAuthInterop (~> 1.0)
291 | - FirebaseCore (~> 6.2)
292 | - "gRPC-C++ (~> 1.28.0)"
293 | - leveldb-library (~> 1.22)
294 | - nanopb (~> 1.30905.0)
295 | - FirebaseInstallations (1.2.0):
296 | - FirebaseCore (~> 6.6)
297 | - GoogleUtilities/Environment (~> 6.6)
298 | - GoogleUtilities/UserDefaults (~> 6.6)
299 | - PromisesObjC (~> 1.2)
300 | - Flutter (1.0.0)
301 | - google_sign_in (0.0.1):
302 | - Flutter
303 | - GoogleSignIn (~> 5.0)
304 | - google_sign_in_web (0.8.1):
305 | - Flutter
306 | - GoogleAppMeasurement (6.5.0):
307 | - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
308 | - GoogleUtilities/MethodSwizzler (~> 6.0)
309 | - GoogleUtilities/Network (~> 6.0)
310 | - "GoogleUtilities/NSData+zlib (~> 6.0)"
311 | - nanopb (~> 1.30905.0)
312 | - GoogleDataTransport (6.1.0)
313 | - GoogleDataTransportCCTSupport (3.1.0):
314 | - GoogleDataTransport (~> 6.1)
315 | - nanopb (~> 1.30905.0)
316 | - GoogleSignIn (5.0.2):
317 | - AppAuth (~> 1.2)
318 | - GTMAppAuth (~> 1.0)
319 | - GTMSessionFetcher/Core (~> 1.1)
320 | - GoogleUtilities/AppDelegateSwizzler (6.6.0):
321 | - GoogleUtilities/Environment
322 | - GoogleUtilities/Logger
323 | - GoogleUtilities/Network
324 | - GoogleUtilities/Environment (6.6.0):
325 | - PromisesObjC (~> 1.2)
326 | - GoogleUtilities/Logger (6.6.0):
327 | - GoogleUtilities/Environment
328 | - GoogleUtilities/MethodSwizzler (6.6.0):
329 | - GoogleUtilities/Logger
330 | - GoogleUtilities/Network (6.6.0):
331 | - GoogleUtilities/Logger
332 | - "GoogleUtilities/NSData+zlib"
333 | - GoogleUtilities/Reachability
334 | - "GoogleUtilities/NSData+zlib (6.6.0)"
335 | - GoogleUtilities/Reachability (6.6.0):
336 | - GoogleUtilities/Logger
337 | - GoogleUtilities/UserDefaults (6.6.0):
338 | - GoogleUtilities/Logger
339 | - "gRPC-C++ (1.28.0)":
340 | - "gRPC-C++/Implementation (= 1.28.0)"
341 | - "gRPC-C++/Interface (= 1.28.0)"
342 | - "gRPC-C++/Implementation (1.28.0)":
343 | - abseil/container/inlined_vector (= 0.20200225.0)
344 | - abseil/memory/memory (= 0.20200225.0)
345 | - abseil/strings/str_format (= 0.20200225.0)
346 | - abseil/strings/strings (= 0.20200225.0)
347 | - abseil/types/optional (= 0.20200225.0)
348 | - "gRPC-C++/Interface (= 1.28.0)"
349 | - gRPC-Core (= 1.28.0)
350 | - "gRPC-C++/Interface (1.28.0)"
351 | - gRPC-Core (1.28.0):
352 | - gRPC-Core/Implementation (= 1.28.0)
353 | - gRPC-Core/Interface (= 1.28.0)
354 | - gRPC-Core/Implementation (1.28.0):
355 | - abseil/container/inlined_vector (= 0.20200225.0)
356 | - abseil/memory/memory (= 0.20200225.0)
357 | - abseil/strings/str_format (= 0.20200225.0)
358 | - abseil/strings/strings (= 0.20200225.0)
359 | - abseil/types/optional (= 0.20200225.0)
360 | - BoringSSL-GRPC (= 0.0.7)
361 | - gRPC-Core/Interface (= 1.28.0)
362 | - gRPC-Core/Interface (1.28.0)
363 | - GTMAppAuth (1.0.0):
364 | - AppAuth/Core (~> 1.0)
365 | - GTMSessionFetcher (~> 1.1)
366 | - GTMSessionFetcher (1.4.0):
367 | - GTMSessionFetcher/Full (= 1.4.0)
368 | - GTMSessionFetcher/Core (1.4.0)
369 | - GTMSessionFetcher/Full (1.4.0):
370 | - GTMSessionFetcher/Core (= 1.4.0)
371 | - leveldb-library (1.22)
372 | - nanopb (1.30905.0):
373 | - nanopb/decode (= 1.30905.0)
374 | - nanopb/encode (= 1.30905.0)
375 | - nanopb/decode (1.30905.0)
376 | - nanopb/encode (1.30905.0)
377 | - PromisesObjC (1.2.8)
378 |
379 | DEPENDENCIES:
380 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
381 | - cloud_firestore_web (from `.symlinks/plugins/cloud_firestore_web/ios`)
382 | - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
383 | - firebase_auth_web (from `.symlinks/plugins/firebase_auth_web/ios`)
384 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
385 | - firebase_core_web (from `.symlinks/plugins/firebase_core_web/ios`)
386 | - Flutter (from `Flutter`)
387 | - google_sign_in (from `.symlinks/plugins/google_sign_in/ios`)
388 | - google_sign_in_web (from `.symlinks/plugins/google_sign_in_web/ios`)
389 |
390 | SPEC REPOS:
391 | trunk:
392 | - abseil
393 | - AppAuth
394 | - BoringSSL-GRPC
395 | - Firebase
396 | - FirebaseAnalytics
397 | - FirebaseAuth
398 | - FirebaseAuthInterop
399 | - FirebaseCore
400 | - FirebaseCoreDiagnostics
401 | - FirebaseCoreDiagnosticsInterop
402 | - FirebaseFirestore
403 | - FirebaseInstallations
404 | - GoogleAppMeasurement
405 | - GoogleDataTransport
406 | - GoogleDataTransportCCTSupport
407 | - GoogleSignIn
408 | - GoogleUtilities
409 | - "gRPC-C++"
410 | - gRPC-Core
411 | - GTMAppAuth
412 | - GTMSessionFetcher
413 | - leveldb-library
414 | - nanopb
415 | - PromisesObjC
416 |
417 | EXTERNAL SOURCES:
418 | cloud_firestore:
419 | :path: ".symlinks/plugins/cloud_firestore/ios"
420 | cloud_firestore_web:
421 | :path: ".symlinks/plugins/cloud_firestore_web/ios"
422 | firebase_auth:
423 | :path: ".symlinks/plugins/firebase_auth/ios"
424 | firebase_auth_web:
425 | :path: ".symlinks/plugins/firebase_auth_web/ios"
426 | firebase_core:
427 | :path: ".symlinks/plugins/firebase_core/ios"
428 | firebase_core_web:
429 | :path: ".symlinks/plugins/firebase_core_web/ios"
430 | Flutter:
431 | :path: Flutter
432 | google_sign_in:
433 | :path: ".symlinks/plugins/google_sign_in/ios"
434 | google_sign_in_web:
435 | :path: ".symlinks/plugins/google_sign_in_web/ios"
436 |
437 | SPEC CHECKSUMS:
438 | abseil: 6c8eb7892aefa08d929b39f9bb108e5367e3228f
439 | AppAuth: 73574f3013a1e65b9601a3ddc8b3158cce68c09d
440 | BoringSSL-GRPC: 8edf627ee524575e2f8d19d56f068b448eea3879
441 | cloud_firestore: 4cc700e236ebfe2d5d980e49cb066d202cfee0e9
442 | cloud_firestore_web: 9ec3dc7f5f98de5129339802d491c1204462bfec
443 | Firebase: b28e55c60efd98963cd9011fe2fac5a10c2ba124
444 | firebase_auth: af8784c4d8d87c36f730a305f97bfbcb24db024b
445 | firebase_auth_web: 0955c07bcc06e84af76b9d4e32e6f31518f2d7de
446 | firebase_core: 335c02abd48672b7c83c683df833d0488a72e73e
447 | firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1
448 | FirebaseAnalytics: 7386fc2176e3f93ad8ef34b5b1f2b33a891e4962
449 | FirebaseAuth: 7047aec89c0b17ecd924a550c853f0c27ac6015e
450 | FirebaseAuthInterop: a0f37ae05833af156e72028f648d313f7e7592e9
451 | FirebaseCore: e610482f64097b0e9f056cd97bc6b33dfabcbb6a
452 | FirebaseCoreDiagnostics: 4a773a47bd83bbd5a9b1ccf1ce7caa8b2d535e67
453 | FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
454 | FirebaseFirestore: 35f8f67d7b25e4743c62ea6e46c38cafa8dc32b5
455 | FirebaseInstallations: 2119fb3e46b0a88bfdbf12562f855ee3252462fa
456 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
457 | google_sign_in: 6bd214b9c154f881422f5fe27b66aaa7bbd580cc
458 | google_sign_in_web: 52deb24929ac0992baff65c57956031c44ed44c3
459 | GoogleAppMeasurement: 4c644d86835d827bab30ab6aabb9ecaf1f500735
460 | GoogleDataTransport: f6f8eba931df03ebd2232ff4645aa85f8f47b5ab
461 | GoogleDataTransportCCTSupport: d70a561f7d236af529fee598835caad5e25f6d3d
462 | GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213
463 | GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
464 | "gRPC-C++": 2ea13a2e14f0b89991a0b4b0151e7c6a56319516
465 | gRPC-Core: 325ba201411619a7302c621a1c8ee787719d4b9b
466 | GTMAppAuth: 4deac854479704f348309e7b66189e604cf5e01e
467 | GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10
468 | leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
469 | nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
470 | PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6
471 |
472 | PODFILE CHECKSUM: f32fb4e7c14f8b3ca19a369d7be425dd9241af27
473 |
474 | COCOAPODS: 1.9.1
475 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
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 | 518DBEDE236717D300C9A667 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 518DBEDD236717D300C9A667 /* GoogleService-Info.plist */; };
13 | 6DCB1D355839D95661E73C25 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FA8467D06F039FA08D710F1 /* libPods-Runner.a */; };
14 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
15 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
16 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
17 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
18 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
19 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
20 | /* End PBXBuildFile section */
21 |
22 | /* Begin PBXCopyFilesBuildPhase section */
23 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
24 | isa = PBXCopyFilesBuildPhase;
25 | buildActionMask = 2147483647;
26 | dstPath = "";
27 | dstSubfolderSpec = 10;
28 | files = (
29 | );
30 | name = "Embed Frameworks";
31 | runOnlyForDeploymentPostprocessing = 0;
32 | };
33 | /* End PBXCopyFilesBuildPhase section */
34 |
35 | /* Begin PBXFileReference section */
36 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
37 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
38 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
39 | 3FA8467D06F039FA08D710F1 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
40 | 518DBEDD236717D300C9A667 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
41 | 763539FDF9133803B3EAC97B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
42 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
43 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
44 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
45 | 881541BE1F8B78BDEAA73063 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
46 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
47 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
48 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
49 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
50 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
51 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
52 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
53 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
54 | B56F7D1505FAD88918476963 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
55 | /* End PBXFileReference section */
56 |
57 | /* Begin PBXFrameworksBuildPhase section */
58 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | 6DCB1D355839D95661E73C25 /* libPods-Runner.a in Frameworks */,
63 | );
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | /* End PBXFrameworksBuildPhase section */
67 |
68 | /* Begin PBXGroup section */
69 | 72159BD3FA549282EBC49D65 /* Pods */ = {
70 | isa = PBXGroup;
71 | children = (
72 | 881541BE1F8B78BDEAA73063 /* Pods-Runner.debug.xcconfig */,
73 | 763539FDF9133803B3EAC97B /* Pods-Runner.release.xcconfig */,
74 | B56F7D1505FAD88918476963 /* Pods-Runner.profile.xcconfig */,
75 | );
76 | path = Pods;
77 | sourceTree = "";
78 | };
79 | 9740EEB11CF90186004384FC /* Flutter */ = {
80 | isa = PBXGroup;
81 | children = (
82 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
83 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
84 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
85 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
86 | );
87 | name = Flutter;
88 | sourceTree = "";
89 | };
90 | 97C146E51CF9000F007C117D = {
91 | isa = PBXGroup;
92 | children = (
93 | 9740EEB11CF90186004384FC /* Flutter */,
94 | 97C146F01CF9000F007C117D /* Runner */,
95 | 97C146EF1CF9000F007C117D /* Products */,
96 | 72159BD3FA549282EBC49D65 /* Pods */,
97 | CD9DCCDA280796EF1A133DCE /* Frameworks */,
98 | );
99 | sourceTree = "";
100 | };
101 | 97C146EF1CF9000F007C117D /* Products */ = {
102 | isa = PBXGroup;
103 | children = (
104 | 97C146EE1CF9000F007C117D /* Runner.app */,
105 | );
106 | name = Products;
107 | sourceTree = "";
108 | };
109 | 97C146F01CF9000F007C117D /* Runner */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 518DBEDD236717D300C9A667 /* GoogleService-Info.plist */,
113 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
114 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
115 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
116 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
117 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
118 | 97C147021CF9000F007C117D /* Info.plist */,
119 | 97C146F11CF9000F007C117D /* Supporting Files */,
120 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
121 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
122 | );
123 | path = Runner;
124 | sourceTree = "";
125 | };
126 | 97C146F11CF9000F007C117D /* Supporting Files */ = {
127 | isa = PBXGroup;
128 | children = (
129 | 97C146F21CF9000F007C117D /* main.m */,
130 | );
131 | name = "Supporting Files";
132 | sourceTree = "";
133 | };
134 | CD9DCCDA280796EF1A133DCE /* Frameworks */ = {
135 | isa = PBXGroup;
136 | children = (
137 | 3FA8467D06F039FA08D710F1 /* libPods-Runner.a */,
138 | );
139 | name = Frameworks;
140 | sourceTree = "";
141 | };
142 | /* End PBXGroup section */
143 |
144 | /* Begin PBXNativeTarget section */
145 | 97C146ED1CF9000F007C117D /* Runner */ = {
146 | isa = PBXNativeTarget;
147 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
148 | buildPhases = (
149 | 78893C5A043ED32F5E50DBB6 /* [CP] Check Pods Manifest.lock */,
150 | 9740EEB61CF901F6004384FC /* Run Script */,
151 | 97C146EA1CF9000F007C117D /* Sources */,
152 | 97C146EB1CF9000F007C117D /* Frameworks */,
153 | 97C146EC1CF9000F007C117D /* Resources */,
154 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
155 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
156 | 8BF65C1E4D1600906A89F1E4 /* [CP] Embed Pods Frameworks */,
157 | 31622E0781C8F8655B4A4E27 /* [CP] Copy Pods Resources */,
158 | );
159 | buildRules = (
160 | );
161 | dependencies = (
162 | );
163 | name = Runner;
164 | productName = Runner;
165 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
166 | productType = "com.apple.product-type.application";
167 | };
168 | /* End PBXNativeTarget section */
169 |
170 | /* Begin PBXProject section */
171 | 97C146E61CF9000F007C117D /* Project object */ = {
172 | isa = PBXProject;
173 | attributes = {
174 | LastUpgradeCheck = 1020;
175 | ORGANIZATIONNAME = "The Chromium Authors";
176 | TargetAttributes = {
177 | 97C146ED1CF9000F007C117D = {
178 | CreatedOnToolsVersion = 7.3.1;
179 | };
180 | };
181 | };
182 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
183 | compatibilityVersion = "Xcode 3.2";
184 | developmentRegion = en;
185 | hasScannedForEncodings = 0;
186 | knownRegions = (
187 | en,
188 | Base,
189 | );
190 | mainGroup = 97C146E51CF9000F007C117D;
191 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
192 | projectDirPath = "";
193 | projectRoot = "";
194 | targets = (
195 | 97C146ED1CF9000F007C117D /* Runner */,
196 | );
197 | };
198 | /* End PBXProject section */
199 |
200 | /* Begin PBXResourcesBuildPhase section */
201 | 97C146EC1CF9000F007C117D /* Resources */ = {
202 | isa = PBXResourcesBuildPhase;
203 | buildActionMask = 2147483647;
204 | files = (
205 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
206 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
207 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
208 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
209 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
210 | 518DBEDE236717D300C9A667 /* GoogleService-Info.plist in Resources */,
211 | );
212 | runOnlyForDeploymentPostprocessing = 0;
213 | };
214 | /* End PBXResourcesBuildPhase section */
215 |
216 | /* Begin PBXShellScriptBuildPhase section */
217 | 31622E0781C8F8655B4A4E27 /* [CP] Copy Pods Resources */ = {
218 | isa = PBXShellScriptBuildPhase;
219 | buildActionMask = 2147483647;
220 | files = (
221 | );
222 | inputPaths = (
223 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh",
224 | "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle",
225 | "${PODS_CONFIGURATION_BUILD_DIR}/gRPC-C++/gRPCCertificates-Cpp.bundle",
226 | );
227 | name = "[CP] Copy Pods Resources";
228 | outputPaths = (
229 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
230 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates-Cpp.bundle",
231 | );
232 | runOnlyForDeploymentPostprocessing = 0;
233 | shellPath = /bin/sh;
234 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
235 | showEnvVarsInLog = 0;
236 | };
237 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
238 | isa = PBXShellScriptBuildPhase;
239 | buildActionMask = 2147483647;
240 | files = (
241 | );
242 | inputPaths = (
243 | );
244 | name = "Thin Binary";
245 | outputPaths = (
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | shellPath = /bin/sh;
249 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
250 | };
251 | 78893C5A043ED32F5E50DBB6 /* [CP] Check Pods Manifest.lock */ = {
252 | isa = PBXShellScriptBuildPhase;
253 | buildActionMask = 2147483647;
254 | files = (
255 | );
256 | inputFileListPaths = (
257 | );
258 | inputPaths = (
259 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
260 | "${PODS_ROOT}/Manifest.lock",
261 | );
262 | name = "[CP] Check Pods Manifest.lock";
263 | outputFileListPaths = (
264 | );
265 | outputPaths = (
266 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
267 | );
268 | runOnlyForDeploymentPostprocessing = 0;
269 | shellPath = /bin/sh;
270 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
271 | showEnvVarsInLog = 0;
272 | };
273 | 8BF65C1E4D1600906A89F1E4 /* [CP] Embed Pods Frameworks */ = {
274 | isa = PBXShellScriptBuildPhase;
275 | buildActionMask = 2147483647;
276 | files = (
277 | );
278 | inputPaths = (
279 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
280 | "${PODS_ROOT}/../Flutter/Flutter.framework",
281 | );
282 | name = "[CP] Embed Pods Frameworks";
283 | outputPaths = (
284 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
285 | );
286 | runOnlyForDeploymentPostprocessing = 0;
287 | shellPath = /bin/sh;
288 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
289 | showEnvVarsInLog = 0;
290 | };
291 | 9740EEB61CF901F6004384FC /* Run Script */ = {
292 | isa = PBXShellScriptBuildPhase;
293 | buildActionMask = 2147483647;
294 | files = (
295 | );
296 | inputPaths = (
297 | );
298 | name = "Run Script";
299 | outputPaths = (
300 | );
301 | runOnlyForDeploymentPostprocessing = 0;
302 | shellPath = /bin/sh;
303 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
304 | };
305 | /* End PBXShellScriptBuildPhase section */
306 |
307 | /* Begin PBXSourcesBuildPhase section */
308 | 97C146EA1CF9000F007C117D /* Sources */ = {
309 | isa = PBXSourcesBuildPhase;
310 | buildActionMask = 2147483647;
311 | files = (
312 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
313 | 97C146F31CF9000F007C117D /* main.m in Sources */,
314 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
315 | );
316 | runOnlyForDeploymentPostprocessing = 0;
317 | };
318 | /* End PBXSourcesBuildPhase section */
319 |
320 | /* Begin PBXVariantGroup section */
321 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
322 | isa = PBXVariantGroup;
323 | children = (
324 | 97C146FB1CF9000F007C117D /* Base */,
325 | );
326 | name = Main.storyboard;
327 | sourceTree = "";
328 | };
329 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
330 | isa = PBXVariantGroup;
331 | children = (
332 | 97C147001CF9000F007C117D /* Base */,
333 | );
334 | name = LaunchScreen.storyboard;
335 | sourceTree = "";
336 | };
337 | /* End PBXVariantGroup section */
338 |
339 | /* Begin XCBuildConfiguration section */
340 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
341 | isa = XCBuildConfiguration;
342 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
343 | buildSettings = {
344 | ALWAYS_SEARCH_USER_PATHS = NO;
345 | CLANG_ANALYZER_NONNULL = YES;
346 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
347 | CLANG_CXX_LIBRARY = "libc++";
348 | CLANG_ENABLE_MODULES = YES;
349 | CLANG_ENABLE_OBJC_ARC = YES;
350 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
351 | CLANG_WARN_BOOL_CONVERSION = YES;
352 | CLANG_WARN_COMMA = YES;
353 | CLANG_WARN_CONSTANT_CONVERSION = YES;
354 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
355 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
356 | CLANG_WARN_EMPTY_BODY = YES;
357 | CLANG_WARN_ENUM_CONVERSION = YES;
358 | CLANG_WARN_INFINITE_RECURSION = YES;
359 | CLANG_WARN_INT_CONVERSION = YES;
360 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
361 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
362 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
363 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
364 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
365 | CLANG_WARN_STRICT_PROTOTYPES = YES;
366 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
367 | CLANG_WARN_UNREACHABLE_CODE = YES;
368 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
369 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
370 | COPY_PHASE_STRIP = NO;
371 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
372 | ENABLE_NS_ASSERTIONS = NO;
373 | ENABLE_STRICT_OBJC_MSGSEND = YES;
374 | GCC_C_LANGUAGE_STANDARD = gnu99;
375 | GCC_NO_COMMON_BLOCKS = YES;
376 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
377 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
378 | GCC_WARN_UNDECLARED_SELECTOR = YES;
379 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
380 | GCC_WARN_UNUSED_FUNCTION = YES;
381 | GCC_WARN_UNUSED_VARIABLE = YES;
382 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
383 | MTL_ENABLE_DEBUG_INFO = NO;
384 | SDKROOT = iphoneos;
385 | TARGETED_DEVICE_FAMILY = "1,2";
386 | VALIDATE_PRODUCT = YES;
387 | };
388 | name = Profile;
389 | };
390 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
391 | isa = XCBuildConfiguration;
392 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
393 | buildSettings = {
394 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
395 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
396 | DEVELOPMENT_TEAM = S8QB4VV633;
397 | ENABLE_BITCODE = NO;
398 | FRAMEWORK_SEARCH_PATHS = (
399 | "$(inherited)",
400 | "$(PROJECT_DIR)/Flutter",
401 | );
402 | INFOPLIST_FILE = Runner/Info.plist;
403 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
404 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
405 | LIBRARY_SEARCH_PATHS = (
406 | "$(inherited)",
407 | "$(PROJECT_DIR)/Flutter",
408 | );
409 | PRODUCT_BUNDLE_IDENTIFIER = "net.ithinkdiff.vote-prep";
410 | PRODUCT_NAME = "$(TARGET_NAME)";
411 | VERSIONING_SYSTEM = "apple-generic";
412 | };
413 | name = Profile;
414 | };
415 | 97C147031CF9000F007C117D /* Debug */ = {
416 | isa = XCBuildConfiguration;
417 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
418 | buildSettings = {
419 | ALWAYS_SEARCH_USER_PATHS = NO;
420 | CLANG_ANALYZER_NONNULL = YES;
421 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
422 | CLANG_CXX_LIBRARY = "libc++";
423 | CLANG_ENABLE_MODULES = YES;
424 | CLANG_ENABLE_OBJC_ARC = YES;
425 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
426 | CLANG_WARN_BOOL_CONVERSION = YES;
427 | CLANG_WARN_COMMA = YES;
428 | CLANG_WARN_CONSTANT_CONVERSION = YES;
429 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
431 | CLANG_WARN_EMPTY_BODY = YES;
432 | CLANG_WARN_ENUM_CONVERSION = YES;
433 | CLANG_WARN_INFINITE_RECURSION = YES;
434 | CLANG_WARN_INT_CONVERSION = YES;
435 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
436 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
437 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
438 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
439 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
440 | CLANG_WARN_STRICT_PROTOTYPES = YES;
441 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
442 | CLANG_WARN_UNREACHABLE_CODE = YES;
443 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
444 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
445 | COPY_PHASE_STRIP = NO;
446 | DEBUG_INFORMATION_FORMAT = dwarf;
447 | ENABLE_STRICT_OBJC_MSGSEND = YES;
448 | ENABLE_TESTABILITY = YES;
449 | GCC_C_LANGUAGE_STANDARD = gnu99;
450 | GCC_DYNAMIC_NO_PIC = NO;
451 | GCC_NO_COMMON_BLOCKS = YES;
452 | GCC_OPTIMIZATION_LEVEL = 0;
453 | GCC_PREPROCESSOR_DEFINITIONS = (
454 | "DEBUG=1",
455 | "$(inherited)",
456 | );
457 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
458 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
459 | GCC_WARN_UNDECLARED_SELECTOR = YES;
460 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
461 | GCC_WARN_UNUSED_FUNCTION = YES;
462 | GCC_WARN_UNUSED_VARIABLE = YES;
463 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
464 | MTL_ENABLE_DEBUG_INFO = YES;
465 | ONLY_ACTIVE_ARCH = YES;
466 | SDKROOT = iphoneos;
467 | TARGETED_DEVICE_FAMILY = "1,2";
468 | };
469 | name = Debug;
470 | };
471 | 97C147041CF9000F007C117D /* Release */ = {
472 | isa = XCBuildConfiguration;
473 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
474 | buildSettings = {
475 | ALWAYS_SEARCH_USER_PATHS = NO;
476 | CLANG_ANALYZER_NONNULL = YES;
477 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
478 | CLANG_CXX_LIBRARY = "libc++";
479 | CLANG_ENABLE_MODULES = YES;
480 | CLANG_ENABLE_OBJC_ARC = YES;
481 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
482 | CLANG_WARN_BOOL_CONVERSION = YES;
483 | CLANG_WARN_COMMA = YES;
484 | CLANG_WARN_CONSTANT_CONVERSION = YES;
485 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
486 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
487 | CLANG_WARN_EMPTY_BODY = YES;
488 | CLANG_WARN_ENUM_CONVERSION = YES;
489 | CLANG_WARN_INFINITE_RECURSION = YES;
490 | CLANG_WARN_INT_CONVERSION = YES;
491 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
492 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
493 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
494 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
495 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
496 | CLANG_WARN_STRICT_PROTOTYPES = YES;
497 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
498 | CLANG_WARN_UNREACHABLE_CODE = YES;
499 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
500 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
501 | COPY_PHASE_STRIP = NO;
502 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
503 | ENABLE_NS_ASSERTIONS = NO;
504 | ENABLE_STRICT_OBJC_MSGSEND = YES;
505 | GCC_C_LANGUAGE_STANDARD = gnu99;
506 | GCC_NO_COMMON_BLOCKS = YES;
507 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
508 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
509 | GCC_WARN_UNDECLARED_SELECTOR = YES;
510 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
511 | GCC_WARN_UNUSED_FUNCTION = YES;
512 | GCC_WARN_UNUSED_VARIABLE = YES;
513 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
514 | MTL_ENABLE_DEBUG_INFO = NO;
515 | SDKROOT = iphoneos;
516 | TARGETED_DEVICE_FAMILY = "1,2";
517 | VALIDATE_PRODUCT = YES;
518 | };
519 | name = Release;
520 | };
521 | 97C147061CF9000F007C117D /* Debug */ = {
522 | isa = XCBuildConfiguration;
523 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
524 | buildSettings = {
525 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
526 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
527 | ENABLE_BITCODE = NO;
528 | FRAMEWORK_SEARCH_PATHS = (
529 | "$(inherited)",
530 | "$(PROJECT_DIR)/Flutter",
531 | );
532 | INFOPLIST_FILE = Runner/Info.plist;
533 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
534 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
535 | LIBRARY_SEARCH_PATHS = (
536 | "$(inherited)",
537 | "$(PROJECT_DIR)/Flutter",
538 | );
539 | PRODUCT_BUNDLE_IDENTIFIER = "net.ithinkdiff.vote-prep";
540 | PRODUCT_NAME = "$(TARGET_NAME)";
541 | VERSIONING_SYSTEM = "apple-generic";
542 | };
543 | name = Debug;
544 | };
545 | 97C147071CF9000F007C117D /* Release */ = {
546 | isa = XCBuildConfiguration;
547 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
548 | buildSettings = {
549 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
550 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
551 | ENABLE_BITCODE = NO;
552 | FRAMEWORK_SEARCH_PATHS = (
553 | "$(inherited)",
554 | "$(PROJECT_DIR)/Flutter",
555 | );
556 | INFOPLIST_FILE = Runner/Info.plist;
557 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
558 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
559 | LIBRARY_SEARCH_PATHS = (
560 | "$(inherited)",
561 | "$(PROJECT_DIR)/Flutter",
562 | );
563 | PRODUCT_BUNDLE_IDENTIFIER = "net.ithinkdiff.vote-prep";
564 | PRODUCT_NAME = "$(TARGET_NAME)";
565 | VERSIONING_SYSTEM = "apple-generic";
566 | };
567 | name = Release;
568 | };
569 | /* End XCBuildConfiguration section */
570 |
571 | /* Begin XCConfigurationList section */
572 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
573 | isa = XCConfigurationList;
574 | buildConfigurations = (
575 | 97C147031CF9000F007C117D /* Debug */,
576 | 97C147041CF9000F007C117D /* Release */,
577 | 249021D3217E4FDB00AE95B9 /* Profile */,
578 | );
579 | defaultConfigurationIsVisible = 0;
580 | defaultConfigurationName = Release;
581 | };
582 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
583 | isa = XCConfigurationList;
584 | buildConfigurations = (
585 | 97C147061CF9000F007C117D /* Debug */,
586 | 97C147071CF9000F007C117D /* Release */,
587 | 249021D4217E4FDB00AE95B9 /* Profile */,
588 | );
589 | defaultConfigurationIsVisible = 0;
590 | defaultConfigurationName = Release;
591 | };
592 | /* End XCConfigurationList section */
593 | };
594 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
595 | }
596 |
--------------------------------------------------------------------------------
/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/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : FlutterAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #include "AppDelegate.h"
2 | #include "GeneratedPluginRegistrant.h"
3 |
4 | @implementation AppDelegate
5 |
6 | - (BOOL)application:(UIApplication *)application
7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
8 | [GeneratedPluginRegistrant registerWithRegistry:self];
9 | // Override point for customization after application launch.
10 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
11 | }
12 |
13 | @end
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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mahmudahsan/flutter_firebase_vote/d430a949f32d6d9c27a62e7b247b3a02bbe4e716/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 | 694052778285-lfdh5fnfdjl6p9n5h6f7av7ttl467nrp.apps.googleusercontent.com
7 | REVERSED_CLIENT_ID
8 | com.googleusercontent.apps.694052778285-lfdh5fnfdjl6p9n5h6f7av7ttl467nrp
9 | API_KEY
10 | AIzaSyCM_rF2O3xdUKpnwjwP1kzhpGg_vIYESp0
11 | GCM_SENDER_ID
12 | 694052778285
13 | PLIST_VERSION
14 | 1
15 | BUNDLE_ID
16 | net.ithinkdiff.vote-prep
17 | PROJECT_ID
18 | vote-prep
19 | STORAGE_BUCKET
20 | vote-prep.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:694052778285:ios:ade67d268c6f1c8f6923a4
33 | DATABASE_URL
34 | https://vote-prep.firebaseio.com
35 |
36 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_firebase_vote
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleURLTypes
22 |
23 |
24 | CFBundleTypeRole
25 | Editor
26 | CFBundleURLSchemes
27 |
28 | com.googleusercontent.apps.694052778285-lfdh5fnfdjl6p9n5h6f7av7ttl467nrp
29 |
30 |
31 |
32 | CFBundleVersion
33 | $(FLUTTER_BUILD_NUMBER)
34 | LSRequiresIPhoneOS
35 |
36 | UILaunchStoryboardName
37 | LaunchScreen
38 | UIMainStoryboardFile
39 | Main
40 | UISupportedInterfaceOrientations
41 |
42 | UIInterfaceOrientationPortrait
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 | UISupportedInterfaceOrientations~ipad
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationPortraitUpsideDown
50 | UIInterfaceOrientationLandscapeLeft
51 | UIInterfaceOrientationLandscapeRight
52 |
53 | UIViewControllerBasedStatusBarAppearance
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/ios/Runner/main.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char* argv[]) {
6 | @autoreleasepool {
7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/constants.dart:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Mahmud Ahsan
3 | * https://github.com/mahmudahsan
4 | */
5 |
6 | const kAppName = 'Vote App';
7 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_firebase_vote/screens/result_screen.dart';
3 | import 'package:provider/provider.dart';
4 | import 'screens/launch_screen.dart';
5 | import 'screens/home_screen.dart';
6 | import 'constants.dart';
7 | import 'package:flutter_firebase_vote/state/vote.dart';
8 | import 'package:flutter_firebase_vote/state/authentication.dart';
9 | import 'package:flutter_firebase_vote/utilities.dart';
10 |
11 | void main() => runApp(VoteApp());
12 |
13 | class VoteApp extends StatelessWidget {
14 | @override
15 | Widget build(BuildContext context) {
16 | return MultiProvider(
17 | providers: [
18 | ChangeNotifierProvider(create: (_) => VoteState()),
19 | ChangeNotifierProvider(create: (_) => AuthenticationState()),
20 | ],
21 | child:
22 | Consumer(builder: (context, authState, child) {
23 | return MaterialApp(
24 | initialRoute: '/',
25 | routes: {
26 | '/': (context) => Scaffold(
27 | body: LaunchScreen(),
28 | ),
29 | '/home': (context) => Scaffold(
30 | appBar: AppBar(
31 | title: Text(kAppName),
32 | actions: [
33 | getActions(context, authState),
34 | ],
35 | ),
36 | body: HomeScreeen(),
37 | ),
38 | '/result': (context) => Scaffold(
39 | appBar: AppBar(
40 | title: Text('Result'),
41 | leading: IconButton(
42 | icon: Icon(Icons.home),
43 | color: Colors.white,
44 | onPressed: () {
45 | Navigator.pushReplacementNamed(context, '/home');
46 | },
47 | ),
48 | actions: [
49 | getActions(context, authState),
50 | ],
51 | ),
52 | body: ResultScreen(),
53 | )
54 | },
55 | );
56 | }));
57 | }
58 |
59 | PopupMenuButton getActions(
60 | BuildContext context, AuthenticationState authState) {
61 | return PopupMenuButton(
62 | itemBuilder: (context) => [
63 | PopupMenuItem(
64 | value: 1,
65 | child: Text('Logout'),
66 | )
67 | ],
68 | onSelected: (value) {
69 | if (value == 1) {
70 | // logout
71 | authState.logout();
72 | gotoLoginScreen(context, authState);
73 | }
74 | },
75 | );
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/lib/models/vote.dart:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Mahmud Ahsan
3 | * https://github.com/mahmudahsan
4 | */
5 |
6 | class Vote {
7 | String voteId;
8 | String voteTitle;
9 | List