Flutter Foundations Course - Documentation
This is the documentation website for the Flutter eCommerce app that we will build as part of my Flutter Foundations Course.
It contains FAQs and additional resources you may find useful.
Articles & Reference Guides
I often publish in-depth articles that are a great complement to the course lessons.
Here's a complete list:
FAQ
This section contains answers to common issues regarding:
- Getting the starter project to run
- Android emulator and gradle issues
- Cocoapods and running on iOS/macOS
Head over to sidebar to read all the FAQs.
Course Updates
Here's a list of all the course updates I've made so far:
- October 2022 Update (Flutter 3.3, Riverpod 2.0, GoRouter 5.0)
- November 2022 Update
- February 2023 Update
- May 2023 Update (Flutter 3.10, Dart 3.0, Riverpod 2.3, GoRouter 7.0)
- August 2023 Update (Flutter 3.13, Dart 3.1, GoRouter 10.1)
- November 2023 Update (Flutter 3.16, Dart 3.2, GoRouter 12.1)
- May 2024 Update (Flutter 3.22, Dart 3.4)
Flutter Web Demo
A Flutter web build of the completed app is available at this link:
This is intended as a reference eCommerce app for viewing and purchasing products, and includes the following features:
- Products List
- Product Page
- Product Reviews
- Shopping Cart
- Checkout using Stripe
- Orders List
- Sign in & sign out flows
- Admin pages (manage products and orders)
Flutter Client
The demo includes a Flutter app that runs on iOS, Android and web.
The primary packages in use by the reference app are:
flutter_riverpod
andfreezed
for state managementgo_router
for navigation and routingflutter_stripe
,flutter_stripe_web
andpay
for paymentssembast
andsembast_web
for local data persistencefirebase_auth
cloud_firestore
cloud_functions
flutter_layout_grid
for layouts based on CSS-gridcached_network_image
to show images from the Internet and keep them in the cache directorymocktail
for testing
Architecture
The client app uses the controller-service-repository pattern and defines four layers:
- Data layer using repositories to access to the outside world (Firebase) and expose data classes to the rest of the app via Futures and Streams
- Domain layer containing all the models/entities needed by the app, along with the business logic to manipulate them
- Application layer using service classes to mediate between the repositories and the levels below
- Presentation layer containing the widgets along with the controllers that manipulate their state and call APIs from the layers above
Learn more in the articles & reference guides.