
Heidi introduces a Flutter 1.2 shop app built with a Firebase backend, covering authentication, sign-in methods, displaying products from Firebase store, and clean, efficient state management.
Build a grocery app with flutter 3.0 and firebase, featuring stripe payments, a user app to add to cart and view products, plus an admin panel to manage products.
Build a Flutter shop app from scratch with Firebase authentication, including email/password, guest, and Google sign-in; browse by category or brand, view product details, search, and manage cart and wishlist.
Master null safety in Flutter 2.0, migrate your project or downgrade to pre-2.0 sdk, and follow setup tips for widgets and Firebase integration.
Explore null safety in Flutter with practical examples of variable initialization in a stateful widget, handling nullable strings and text fields to keep your app safe and responsive.
Added Stripe payment gateway to process orders and save them in Firestore with user-specific access. Demonstrates a test card transaction, basic order management including delete, and forget password alert.
This course was build for education purposes. This is a one store app! not a multistore app. it can be converted to a multistore app as your wish.
Download the attached resources and read after each lecture, watch the tutorial again, understand each section, ask questions, avoid copying code, and focus on understanding before practicing.
Master clean, reusable Flutter code with efficient state management, enabling smooth navigation between categories and popular products, plus Firebase authentication and Firestore support.
https://www.youtube.com/channel/UCTGDYkqUtgCelc6G09LUm6w/videos
Explore the Flutter helper kit to build real-life Flutter apps, with email or Google sign-in, guest mode, interactive posts, wishlists, likes, comments, YouTube viewing, and design requests.
Lock the Flutter app to portrait mode to prevent overflow in landscape, using device orientations and import services, ensuring the app runs only in portrait.
Demonstrates building a Flutter shop app screen structure from scratch, creating screens for feeds, search, cards, and user, and implementing a notched bottom navigation bar with a floating action button.
Demonstrates building a Flutter bottom navigation bar with home, feed, search, and user screens, using an indexed page map and a center docked floating action button with a notch.
Fix bottom bar null safety by initializing variables before use and applying the state modifier, as explained in the safety lecture.
Learn to replace deprecated bottom bar titles with global label styles, adjust spacing, font size, and apply global style settings to bottom navigation items in a Flutter app.
Learn to add custom icons in Flutter with the flutter icons package, save changes, and use a centralized icons class to swap material and community icons across the app.
Build the user info and settings screen with a collapsing toolbar, a dynamic list of items with icons and subtitles, and reusable widgets wrapped in InkWell and Material.
Create a dynamic widget that can be used everywhere. And simplify our code
Learn two methods to add a switch tile for theme toggling in a Flutter 1.2 app, including a native switch and a package-based solution, with code setup and live demonstration.
Lecture has been recycled later in the course
Lecture has been recycled later in the course
Learn to build a sliver app bar in Flutter from scratch using a custom scroll view, with expanded height, background color, and a sliver list driven by a delegate.
This lecture demonstrates building a Flutter shop UI with a sliver app bar, scroll-controlled floating action button, and animated opacity, using a scroll controller, flexible space bar, and sliver adapters.
Implement a dark and light theme in the Flutter app by creating a dark theme provider, wiring a switch, and using a consumer to update colors.
In this tutorial you will learn how to save user setting into his phone. so it will not be lost once he close and open up the app again.
The chosen theme will be displayed once he open the app.
In this tutorial I wrote the code of the empty cart screen design.
This page appear once the user cart is empty. That's why I named it like that.
In this tutorial I wrote the code of the Full cart screen design.
This page appear once the user add a product to his cart. That's why I named it like that.
So once he add any product to his cart later. this screen will be displayed instead of the empty cart screen.
Build the app bar and checkout section in the cart screen with a bottom sheet, a list builder for items, and styled text to show the total price.
Enhance the cart screen design by updating gradient and background colors using color constants. Organize code by moving widgets to a widgets folder for better optimization.
Implement the Feeds screen by splitting its code into widgets. And in this tutorial I implemented the products shape design
Implement a responsive GridView in the feeds screen by adjusting the child aspect ratio, adding padding and cross axis spacing, and wrapping containers to prevent overflow.
Implement a staggered grid view in the feeds screen instead of a normal grid view, using a package and adjusting padding and spacing to fix overflow in Flutter.
Apply a background color to the floating action button on the user info screen to avoid accent color clashes, replicate it on full-screen widgets, and test the dark theme.
Update the user info screen by fixing duplicate icons through adjusting the list widget indexing and icons mapping, ensuring each icon changes correctly after edits.
Install a new Flutter package and update pubspec to add a badge on product images in the feeds screen. Wrap the widget, set bottom-left radius, pink color, and enable animation.
Learn how to align a badge in Flutter by using the positioned widget, setting bottom, right, left, or top values, and optionally padding to control placement.
Build the home screen with the new backdrop package, import and apply a backdrop layout, customize a gradient background and background image, header height, rounded corners, and a circular avatar.
Add a carousel widget to the home screen by integrating a package, configuring a 190 tall full-width container, and loading multiple assets into a rotating image gallery.
Add a swiper widget to the home screen using the flutter swiper package, wiring in image assets and styling to create a polished shop carousel.
The purpose of this widget is to allow the users to browse using products category
Build a popular products widget on the home screen with a stateful popular_products widget in Flutter, featuring an image, title, price, description, and a wishlist icon that opens product details.
Later on this screen will be used to show products according the its categories.
Build backdrop back-layer in flutter with inked containers, borders, and transforms; create tappable inkwell items and a reusable content widget to navigate to wish list, cards, and upload pages.
Just as the cart screen. this page will be displayed where the Wishlist is empty.
Just as the cart screen. this page will be displayed where there is items in the Wishlist screen
Build a product details screen UI in Flutter 1.2 with a scrollable layout. Show image, title, price, and description, with bottom add-to-cart, buy-now, and favorites actions.
Create the product model class with final attributes for id, title, description, price, image, category name, product name, quantity, and flags for favorite and popular. Provide a constructor for initialization.
Populate the feeds screen with dynamic product data by building a products list (id, title, description, price, quantity, image) and passing it through constructors instead of static data.
Learn why state management is essential for a Flutter shop app, enabling a single, global data source for products, categories, and popular products to reduce repetition across widgets.
Create a products provider class using the provider package and ChangeNotifier, wire up multi provider, and implement a get products method for offline data and future server data.
In this tutorial, the main thing that I explained is that to use better way instead of dependency injection
Manage state in flutter to display products by category on the home screen, sending category names or indices to the category screen and dynamically filtering items.
Finalize the categories state management by refactoring into a separate categories feed screen, access it via provider, and implement category-based product fetching with case-insensitive matching.
Display products by brand on the home screen with a brands widget, using index-based navigation and a provider to load brand-specific products.
Learn to display only popular products on the home screen by building a popular products retrieval method, using a product provider with dependency injection, and wiring navigation to product details.
Finish wiring the product details screen by using the product provider and product id to fetch and display attributes like title, price, brand, and category, while fixing overflow.
Learn to handle the home screen brand filter by implementing an all-brands option that shows all products, fixes when the list is empty, and updates the selected index accordingly.
Navigate from the home screen to a dedicated popular products screen in a Flutter shop app, pass arguments, and display only popular items with a provider.
Create a cart model class with id, title, quantity, price, and image attributes, importing material package, mark price as final, and implement an unnamed constructor.
Create a cart provider class using change notifier, implement a map of cart items, and add a total getter that sums price times quantity and returns the total amount.
Create an add to cart method with product id, price, title, and image that updates quantity if the item exists, or adds a new item and notifies listeners.
Implement dependency injection for the cart by wiring the card provider across product and cart screens and accessing it to manage items, price, quantity, and subtotal.
learn to detect when a product is already in the cart and disable the add to cart button, preventing duplicate orders and adjusting quantity for a smooth checkout.
Using Change Notifier Provider we become able to use the cart model class as a provider class and reduce and simplify the code
Enable adding items to the cart from the popular products widget using a provider for product attributes, and update the UI with a check icon after addition.
Implement plus and minus quantity buttons in the cart using the provider, pass product id and price, and update the cart subtotal and item state in real time.
Enable users to remove a single item or clear the cart in the flutter shop app, using the cart provider and a confirmation dialog with cancel and ok actions.
Show the cart total in a Flutter 1.2 app with Firebase and Stripe by wiring a provider to compute and format the total, updating the cart screen.
Create a dynamic alert dialog method by building a reusable global methods class in a service folder, wired from the cart screen using context for item and wish list dialogs.
Learn to implement wishlist state management in a Flutter app by building a favorites model and provider, wiring add and remove actions, and updating the UI.
Once the user add a product to his Wishlist. The favorite icon color will turn red in this case. To flag it as a Wishlist product.
Add animated badges for the wishlist and cart, reflecting item counts as favorites and cart items change, using provider and consumer widgets for state management.
Add an AppBar to the feeds screen, set its title, and use the consumer pattern for providers while implementing favorite interactions and a cohesive background color.
Create a feeds dialog by adding a new file, styling background and elevation, and using a responsive image container with dynamic text and wishlist-aware icons.
Replace dummy data with live product details in the feeds dialog using product and current providers. Implement favorite and wishlist actions and update navigation to reflect product attributes.
Implement a search screen in the Flutter shop app, wire a search header and text field to the product provider, implement clear action, and show results or a not-found message.
Build a landing page for a Flutter shop app, introducing the authentication flow and a dynamic moving wallpaper, with a network image backdrop and sign-up and continue actions.
Create the landing page with sign-in options, including Google sign-in and guest access, style the buttons and borders, add an animated background slideshow, and plan Firebase integration later.
Implement the login screen with a form for email and password, including validation and a password visibility toggle, plus a moving background using a wave animation package.
Submit method to save the current form and check for validation. and allow users to jump from TextField to another.
Implement the signup screen by adding a full name, email, and phone number field with validation, aligning the form to the design and setting the phone keyboard to numeric.
Implement the top profile preview widget on the sign up screen to let users pick an image via camera or gallery, displayed in a circular avatar with a border.
Integrate an image picker in your Flutter shop app by adding a dedicated package and creating camera and gallery methods, set the image path, and update the sign-up screen.
Navigate from the landing page to the main screen with a bottom bar, guest access, and sign-up/logout flows, while refining the UI background color.
Develop the upload a new product screen for a Flutter 1.2 shop app with Firebase and Stripe, featuring image capture, category dropdown, numeric price input, and product details form.
Learn to implement a left swipe gesture in Flutter to navigate from the main screen to the upload product screen, using a page view and scaffolding setup.
If the Sha- 1 command didn't work, apply this command "keytool -list -v -keystore c:\users\yourname\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android"
Enable user sign-up with email and password using Firebase authentication, initialize Firebase in the sign-up screen, and configure the required packages to create a new user and handle email validation.
Initialize Flutter binding and Firebase to enable email and password sign-up, show a loading indicator during authentication, and activate email/password in the Firebase console.
Demonstrate error handling in the sign-up flow with try catch for future-based operations, print and display user-friendly error messages through dialogues, and add a loading spinner to indicate progress.
Implement a login flow that signs in users with email and password, converts the email to lower case, shows a circular progress indicator during loading, and displays clear errors.
Use a stream builder to render different screens based on the user's login state, showing the main screen when signed in and the landing page otherwise.
Implement the sign out method in a Flutter 1.2 app with Firebase and Stripe, using a global sign out function and a confirmation dialogue before returning to the landing page.
Learn how to implement Google sign-in in a Flutter app using the google_sign_in package and Firebase auth, including initialization, credential handling, and enabling sign-in in the Firebase console.
Master Google sign-in error handling in a Flutter app with Firebase and Stripe using try-catch to show token errors and plan extra user data like email and join date.
Learn how Firebase Firestore organizes data into collections and documents, and see how to set up a users collection, add documents with fields, and generate unique IDs during user registration.
Read more about 64k Multidex error, https://developer.android.com/studio/build/multidex
Learn to upload a user-selected image to Firebase storage, obtain its download URL, and save the image link in Firestore under a user-specific path, with authentication and error handling.
Fetch user information from Firestore by initializing user id, retrieving display name, email, and phone number, and reading document snapshots to populate the user profile in a Firebase Flutter app.
Display the user email and image with error handling, refresh widgets, and enable sign up or sign in with email or Google, preparing to save products in the file store.
Fetch the user's display name and photo URL from input, update the user profile during sign up, and manage profile fields in a Flutter 1.2 app with Firebase.
Activate anonymous sign-in in firebase authentication, initialize anonymous users, and handle loading and errors while creating and managing multiple anonymous accounts.
Demonstrate saving user information to Firestore during Google sign-in in a Flutter app, capturing user ID, display name, and phone number to ensure seamless sign-in data handling.
Upload products to Firestore by creating a products collection and storing title, price, category, description, quantity, image, and a uuid-generated product id, with Firebase storage for images.
Learn to fetch products from Firestore and display them across categories, brands, and popular items by integrating a products provider, using snapshots, and maintaining app-wide state.
Implement a forget password screen in Flutter to allow users to submit their email and receive a Firebase password reset email, with styled UI elements, navigation, and toast confirmations.
Fix the range index error by making the product item count dynamic in the detail screen, using a length check to render the list safely.
Integrate the Stripe payment gateway with Flutter and Firebase, collecting card details, obtaining a token via the REST API, and ensuring the amount is an integer for successful transactions.
Explore Stripe integration in a Flutter app by configuring keys and headers, creating a payment intent via API with stripe_payment and http, and displaying a loading dialog during processing.
Implement the orders design by restructuring files into an orders folder, building an empty orders screen, updating UI components, icons, and state management, and preparing Firebase-based integration.
Create an order model class in flutter, using provider for change notification, with id, userId, productId, title, price, image, quantity, and orderDate as timestamp, ready for uploading.
Upload a user order to firestore by creating an order document with id, user id, product details (title, price, quantity, image) and a timestamp, using the cart and checkout flow.
Fix a Flutter shopping app error that overwrites order IDs in a loop, enabling all cart items to checkout correctly and paving the way to fetch orders with a provider.
Create the orders provider to manage Firestore orders by reading order documents, mapping fields like user id, product id, price, quantity, and date, and prepare for fetching and updates.
Fetch and display user-specific orders in a Flutter shop app using FutureBuilder and a provider, showing order id, title, price, and quantity.
Fetch only correspondent orders for each user by filtering the Firebase orders collection with the logged-in user’s ID, initialize the user data, and validate results across emulators.
Show different screens based on Firestore orders by using an orders provider, fix the data flow with a future builder, and validate Firebase updates in the Flutter shop app.
Delete an order by removing its document from the order collection and update the user interface automatically via notifyListeners, with a progress indicator and error handling.
Validate the checkout response and place an order only if the transaction succeeds. Handle errors when the payment fails and ensure no orders are created until success.
Handle empty products in brands and categories by checking for emptiness and showing a styled 'no products' message with icons and centered layout.
The theme wasn't changing once we try to switch it, in this tutorial we will fix it
Add a refresh indicator to the feeds screen in a Flutter app. Fetch products through a provider and refresh the screen when data loads.
Course prerequisites:
Basic knowledge in programming to get started
Basic knowledge of Flutter
Concepts are explained clearly. You will always learn what you're building and why, and then how to do it.
How this course can be of help:
Gaining more knowledge in Flutter and Firebase with payment gateway
Learn how to make an online shopping application simply
What's in the course:
Complex UI has done simply
State management
Firebase
Clean code and avoid Boilerplate code
Styles for UI
State Management: setState, lifting state up via callbacks, global access, scoped access with Provider and ChangeNotifier
Navigation
Dart
Forms, input handling, and validation
Managing and updating packages
Databases and Cloud Firestore
ListViews and multiple UI states
Firebase Authentication
Firebase Firestore
Firebase Storage
Dart Programming Language - Fundamentals and intermediate topics
How to understand Flutter Mobile Development by building apps incrementally.
How to design, build, and debug Flutter Android apps
How to get Flutter apps to communicate with a real-time database - Firestore
How to build robust apps with Flutter
Flutter AppBar
Flutter Material Design
Flutter Row and Column
Flutter ListView Builder
Stripe payment gateway
Course structure:
approximately 15 hours of content and updated regularly
Requirements:
Windows application development OR Mac application development
Access to a computer with an internet connection.
and you are ready for the journey
Love learning about applying cutting-edge algorithms to practical cases!
What Should I Expect After this Course?:
The ability to build a fully functional shopping application with a Firebase
New information regarding Flutter
Note that the course builds on Windows, so I didn't have a chance to cover the IOS configurations! But feel free to ask anything about it. I will be there to help.
Important note: This course is structured around the SDK version 1.23 of Flutter. Should you already possess a sound understanding of Flutter, I encourage you to enroll, as the course comprehensively addresses a wide array of content and showcases various UI implementations.
For those interested in the most recent advancements in Flutter, I have curated courses based on the latest Flutter version. These courses present similar concepts, albeit with updated code structures and varied UI design perspectives. It is advisable to peruse these updated courses prior to embarking on this particular module.