Building a Diary Web App with Flutter and Firestore Online Course
This course shows you how to use your Flutter/Dart skills to build dynamic, scalable web apps with Flutter 2.0. Through a capstone project, DiaryBook, you’ll create a complete Flutter web app with FirebaseAuth for authentication, Firestore for managing diary entries, and providers with StreamBuilders for state management. You’ll also learn advanced routing, user authentication with Google Cloud Firebase, and finally deploy your app to Firebase hosting. By the end, you’ll have the skills to build and deploy adaptive Flutter web apps that can also be ported to desktop.
Who should take this course?
This course is perfect for beginners, students, and aspiring developers who want to learn how to build practical web applications using Flutter and Firestore. It’s well-suited for those interested in combining front-end development with a cloud-based backend to create interactive, data-driven apps. Whether you’re new to app development or looking to strengthen your portfolio with a real-world project, this course will guide you through building a functional diary web app step by step.
What you will learn
- Build a complete web app with Flutter web and Cloud Firebase Firestore
- Master advanced Flutter APIs such as providers and routing
- Learn how to use FirebaseAuth to authenticate web app users
- Build adaptive, dynamic web apps with Flutter 2.0
- Create, edit, delete, update diary entries with Cloud Firestore backend
- Deploy Flutter web apps to Firebase hosting
Course Outline
Introduction
- Introduction and Course Prerequisites
- What You will be Building in this Course
Machine Setup - Windows Users Only
- Set Up Your Windows Machine for Flutter Web Development
Machine Setup - Mac Users Only
- Set Up Your Mac Machine for Flutter Web Development
Build a DiaryBook Flutter Web App
- Set Up DiaryBook Project
- Adding AppBar and DiaryBook Logo
- Refactoring the MainPage Code
- Adding a DropDown Menu
- Changing the State of the DropDown Button
- Setting Up AppBar's Circular Avatar and Signout
DiaryBook Web App - The Main Body
- Setting Up the Main Page Body - The Left Side
- Adding a DatePicker Package
- Adding a Card Button and a Floating Action Button
- Setting Up a Placeholder Listview - Right Side
DiaryBook Web App - FirebaseAuth and Cloud Firebase Firestore
- Setting Up Firebase and Firestore Project
- Reading Items from Firestore
- Setting Up the Getting Started Page
- Navigating to Login Page
- Setting Up the Login Form
- Login Form - Creating the BuildInput Decoration
- Adding the Password Field and Refactoring the Form
- Login Form - Adding Validation
- Login a User - FirebaseAuth
- Toggling Create Account Form and Login Form
- Login User and Taking them to the Main Page
DiaryBook Web App - The User Profile
- User Creation Structure
- Crating a User and Adding to Firestore Users Collection
- Creating a User Data Class
- Creating a Service Class and Code Refactoring - Login Created for Users and Showing Them
- Filtering Users and Showing Names on AppBar
- Showing User Avatar and Changing the Flutter Web Renderer
- Creating the CreateUserProfile Class
- Constructing the CreateUserProfile Class - Dialogs and Fields
- Updating a User Profile
- Code Refactor - Update User Profile Dialog Class
- Signing User Out
DiaryBook Web App - Creating, Updating, Deleting, and Showing Diary Entries
- Introduction - Creating Diary Entries
- Diary Entry Alert Dialog - Adding Two Buttons
- Diary Entry Alert Dialog - Adding the Image Container
- Diary Entry Alert Dialog - Adding TextFields
- Diary Entry Alert Dialog - Refactor Code
- Diary Entry Alert Dialog - Saving a Dummy Entry and Adding Saving Animation
- Creating the Diary Model Class and Saving the Diaries with All Fields
- Adding and Showing Filtered Diaries by UserId
- Passing the Date to the Dialog
- Showing and Saving the Date along with the Diary Entry
- Refactoring our DiaryListView Code
DiaryBook Web App - Diary Listview and Saving Images to Firebase Storage
- Refactoring and Setting Up the Diary Listview Card
- Fixing the Expanding Issues and Adding Description and Dummy Image to Listview Card
- Date Format - Show Full Date and Time
- Adding an ImagePicker and Showing the Picked Image
- Setting Up Firebase Storage and the Infrastructure to Save Images to Storage
- Saving and Showing Images from Cloud Storage
- Deleting an Entry
- Refactor Our Delete Entry Dialog
- Creating the Edit-Update Dialog: Delete Functionality Setup
- Setting Up the Update-Details Dialog
- FIX: Overflow Issues and Adding FutureDelay when Saving Images - Potential Bug Fix
- Refactoring the List Card
DiaryBook Web App - Set Up the Update Dialog
- Setting Up the Update Entry Dialog
- Update Dialog - Adding Icons and Image
- Update Dialog - Creating Fields and Pulling in the Diary Data
- Update Dialog - Refactoring Code
- Update Dialog - Setting Up the Image Picker and Delete Buttons
- Update Dialog - Setting Up the Update Code
- Fixing Some Null Issues
- Passing a Widget as Parameter
DiaryBook Web App - Filtering Entries by Date and Updating the ListView
- Filtering Entries by Date
- Setting Up the GetSameDayDiaries Method
- Indexing Firestore Database and Checking that We are Filtering Entries
- Setting Up a List of Diaries
- Showing Filtered Diaries by Date Picked
- Restructuring the Filtered Diaries to be Shown and Showing the Empty Diary Card
- Adding All Entries to a Provider Object
- Filtering DiaryList by Current User and Adding a User Provider
DiaryBook Web App - Filtering Diary Entries Further - Earliest and Latest
- Filtering Diary Entries Further - Earliest and Latest
- Filtering by Latest and Earliest Added Diaries
- Adding onPress to FAB
- Adding a Delayed Animation to the Listview
DiaryBook Web App - Advanced Routing
- Advanced Routing
- Page Not Found and Restructuring Routing
- Final Remarks
Deploying the Web App to Firebase Hosting
- CLI Setup - Instructions
- Deploying the Web App to Firebase Hosting