{"id":19466681,"url":"https://github.com/mahmudahsan/flutter_firebase_vote","last_synced_at":"2025-04-25T09:33:53.249Z","repository":{"id":78239327,"uuid":"213831084","full_name":"mahmudahsan/flutter_firebase_vote","owner":"mahmudahsan","description":"A flutter application named Vote, based on firebase auth and firestore database.","archived":false,"fork":false,"pushed_at":"2020-05-27T14:43:14.000Z","size":22806,"stargazers_count":73,"open_issues_count":0,"forks_count":17,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T20:01:59.848Z","etag":null,"topics":["firebase","firebase-auth","firebase-database","flutter","flutter-apps","flutter-demo","flutter-examples"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/playlist?list=PLlMOodDAsO4zQ243zMHKKrV316PJU9q0E","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mahmudahsan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-09T05:46:20.000Z","updated_at":"2024-12-24T18:01:25.000Z","dependencies_parsed_at":"2023-02-26T02:46:27.223Z","dependency_job_id":null,"html_url":"https://github.com/mahmudahsan/flutter_firebase_vote","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmudahsan%2Fflutter_firebase_vote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmudahsan%2Fflutter_firebase_vote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmudahsan%2Fflutter_firebase_vote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmudahsan%2Fflutter_firebase_vote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mahmudahsan","download_url":"https://codeload.github.com/mahmudahsan/flutter_firebase_vote/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250790376,"owners_count":21487796,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","firebase-auth","firebase-database","flutter","flutter-apps","flutter-demo","flutter-examples"],"created_at":"2024-11-10T18:29:39.306Z","updated_at":"2025-04-25T09:33:53.241Z","avatar_url":"https://github.com/mahmudahsan.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"cover.png\" alt=\"Flutter\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.youtube.com/channel/UCtHlgyUw0wLE5Ous9swfFlg\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/my-youtube channel-red.svg\" alt=\"Youtube\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://ithinkdiff.net/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/mobile-apps-yellow.svg\" alt=\"ithinkdiff.net\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://twitter.com/mahmudahsan\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/contact%40-mahmudahsan-blue.svg\" alt=\"Twitter: @mahmudahsan\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\n# Vote - A full Flutter Application\n- [Video Tutorial 1: Building the app](https://www.youtube.com/watch?v=Iu9DpbzR83s)\n- [Video Tutorial 2: Add Firebase Authentication and Firestore Database](https://youtu.be/N6DF-zz9c6o)\n- [Video Tutorial 3: Migrating Provider 4.0 and Fix Android Firebase Authentication issues](https://www.youtube.com/watch?v=8W8zT0MKLWk)\n\n\u003e - [Migration to Provider 4.0](#migration-to-provider-4)\n\u003e - [Firebase configuration for android](#firebase-configuration-for-android)\n\n\u003e A flutter and firebase based vote application. \nFor state management we used, [Provider](https://pub.dev/packages/provider). \n\n\u003e If you need to know how to use [Provider](https://pub.dev/packages/provider), please\n\u003e - [How to use Provider 3.0](https://www.youtube.com/watch?v=fEIdWV8MAso)\n\u003e - [Migrating Provider 3 to 4](https://youtu.be/xR-2rM_99-E)\n\n### Demo 2.0\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo3.gif\" alt=\"Firebase auth\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo1.jpg\" alt=\"Demo\" /\u003e\n\u003c/p\u003e\n\n### Features and Updates\n\u003e Version 3.0\n\u003e 1. Provider library updated to version 4.0\n\u003e 2. All other 3rd party libraries updated\n\u003e 3. All related app code updated to support provider 4.0\n\u003e 4. Android auth fix in firebase and in config \n\n\u003e Version 2.0\n\u003e 1. User can sign in\n\u003e 2. User can see vote List from Firebase\n\u003e 3. User can vote\n\u003e 4. User can see result\n \n ### Authentication Flow Chart\n \u003cp align=\"center\"\u003e\n     \u003cimg src=\"authentication.png\" alt=\"authentication\" /\u003e\n \u003c/p\u003e\n\n ### Migration to Provider 4\n - [Update Provider 3.0 to 4.0](https://pub.dev/packages/provider)\n - [Changes committed](https://github.com/mahmudahsan/flutter_firebase_vote/commit/0f82330911cb3b4b398488cf00dbf5a7b4ada337)\n\n ### Firebase configuration for android\n ***Sometimes firebase and google auth doesn't work on Android Emulators, so preferred way to to test in a real device***\n \n \u003e 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.\n \n \u003e 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) \n\n - Update all 3rd party libraries in pubspec.yaml\n - 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\n - Download `google-service.json` file from firebase\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"firebase_android.png\" alt=\"Firebase auth\" /\u003e\n\u003c/p\u003e\n\n- Copy `google-service.json` file and put it `android/app/google-service.json`\n- Update `android/build.gradle` by adding `multiDexEnabled true` to `defaultConfig`\n```\n    defaultConfig {\n        multiDexEnabled true\n    }\n```\n- Update `android/gradle.properties` if you already didn't migrated https://flutter.dev/docs/development/androidx-migration\n```\n    android.useAndroidX=true\n    android.enableJetifier=true\n```\n- update android/build.gradle to latest versions\n```\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.6.3'\n        classpath 'com.google.gms:google-services:4.3.3'\n    }\n```\n- Update distributionUrl to latest `android/gradle/wrapper/gradle-wrapper.properties`\n```\n    distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.4-all.zip\n```\n- Android Google Sign In. Run the following command generate SHA-1 and SHA-256 keys and add in Firebase\nhttps://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate\n```\n    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android \n```\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"firebase_android.png\" alt=\"Firebase auth\" /\u003e\n\u003c/p\u003e\n\n### Widgets\n\n\u003e  [Widget Index](https://flutter.dev/docs/reference/widgets)\n\n- [Stepper Class](https://api.flutter.dev/flutter/material/Stepper-class.html)\n- [MaterialApp](https://api.flutter.dev/flutter/material/MaterialApp-class.html)\n- [Scaffold](https://api.flutter.dev/flutter/material/Scaffold-class.html)\n- [Container](https://api.flutter.dev/flutter/widgets/Container-class.html)\n- [Column](https://api.flutter.dev/flutter/widgets/Column-class.html)\n- [Row](https://api.flutter.dev/flutter/widgets/Row-class.html)\n- [Expanded](https://api.flutter.dev/flutter/widgets/Expanded-class.html)\n- [LimitedBox](https://api.flutter.dev/flutter/widgets/LimitedBox-class.html)\n- [IntrinsicHeight](https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html)\n- [InkWell](https://api.flutter.dev/flutter/material/InkWell-class.html)\n\n\n### 3rd Party Libraries\n\n- [UUID](https://pub.dev/packages/uuid)\n- [Provider](https://pub.dev/packages/provider)\n- [Charts Flutter](https://pub.dev/packages/charts_flutter)\n    - [Chart Gallery](https://google.github.io/charts/flutter/gallery.html)\n- [Firebase Auth](https://pub.dev/packages/firebase_auth)\n    - [Firebase Setup](https://firebase.google.com/docs/flutter/setup)\n- [Google Sign In](https://pub.dev/packages/google_sign_in)\n    - [Firebase Plugins](https://github.com/FirebaseExtended/flutterfire)\n- [Cloud Firestore](https://pub.dev/packages/cloud_firestore)\n- [Loading](https://pub.dev/packages/loading)\n    \n\n### Tutorials\n1. [Youtube - Flutter Playlist 1](https://www.youtube.com/playlist?list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ)\n2. [Youtube - Flutter Playlist 2](https://www.youtube.com/playlist?list=PLlMOodDAsO4zQ243zMHKKrV316PJU9q0E)\n\n### Flutter Full Application\n1. [Vote](https://git.io/JeRjb) | [Tutorial](https://www.youtube.com/watch?v=Iu9DpbzR83s\u0026list=PLlMOodDAsO4zQ243zMHKKrV316PJU9q0E\u0026index=2\u0026t=0s)\n2. [Todos](https://github.com/mahmudahsan/flutter_todos) | [Tutorial](https://youtu.be/OQG3MxenJsM)\n\n### Flutter Tutorials Beginners\n1. [Dart Programming Language for Beginners](https://www.youtube.com/watch?v=Ej_Pcr4uC2Q\u0026list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ\u0026index=2\u0026t=10s)\n2. [Flutter for Beginners - Creating First App](https://www.youtube.com/watch?v=HFl29MoZ6MA\u0026list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ\u0026index=3\u0026t=0s)\n3. [How to Create a Profile Page App](https://www.youtube.com/watch?v=ULxYR66BRb4\u0026list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ\u0026index=5\u0026t=0s)\n\n### Flutter Tutorials Managing States\n\n1. [Stateful Widget](https://www.youtube.com/watch?v=8iHfqfHclTQ\u0026list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ\u0026index=17\u0026t=0s)\n2. [State: Provider](https://git.io/Je4ZP) | [Tutorial](https://www.youtube.com/watch?v=fEIdWV8MAso)\n3. [State: Redux](https://git.io/Je4Z6) | [Tutorial](https://www.youtube.com/watch?v=vzCszJQ_qZQ\u0026t=793s)\n4. [State: Bloc](https://git.io/Je4s5) | [Tutorial](https://youtu.be/BHC_D52TecY)\n\n### Flutter Mixed\n- [Form](flutter/form) | [Tutorial](https://www.youtube.com/watch?v=S-nLT3TRJFY\u0026t=1646s)\n\n### Quick Reference\n\n1. [Dart Language](https://github.com/mahmudahsan/flutter/tree/master/dart) | [Video](https://www.youtube.com/watch?v=Ej_Pcr4uC2Q\u0026list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ\u0026index=3)\n2. [Flutter](https://github.com/mahmudahsan/flutter/tree/master/flutter) | [Video](https://www.youtube.com/playlist?list=PLlMOodDAsO4xrTgVEkKXfVf7sSVEsmWKQ)\n\n### Resources\n\n- [Official Site](https://flutter.dev/)\n- [Widget Category](https://flutter.dev/docs/reference/widgets)\n- [Pub.Dev](https://pub.dev/)\n\n\n## Support\nIf 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). \n\n## Questions or feedback?\n\nFeel free to open an issue, or find me [@mahmudahsan on Twitter](https://twitter.com/mahmudahsan).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmudahsan%2Fflutter_firebase_vote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahmudahsan%2Fflutter_firebase_vote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmudahsan%2Fflutter_firebase_vote/lists"}