
Download starter codes from the lectures and use the resources section, then follow along, code along, answer quizzes, and recap each section to build your own app.
Learn to create internal Flutter packages within your project by adding a packages folder and using flutter create with a package template for a task repository, including its pubspec.yaml.
Create an internal package with a task repository and export src in lib, using repositories that connect to APIs and Firebase Firestore via the Bloc pattern from the Block Library.
Define a task model with a status enum and export it from the internal package. Create a broadcast stream controller for task lists and expose a getter to stream it.
Define a BLoC state class with two properties: selected category and list of todos, driven by a TaskCategory enum (done, pending, all); default to all and an empty list.
Build scalable Flutter apps with BLoC by handling events like select category and get all tasks; ensure the BLoC processes events, emits new states, and the UI rebuilds accordingly.
Create a task bloc that extends bloc base with task event and state types, initializes with an empty task list, and registers callbacks for get all tasks and select category.
Tap the category card to dispatch a select category event to the bloc, update the selected category, and trigger a bloc builder to rebuild with updated todos, pending, and done.
Learn to build scalable Flutter apps with bloc by implementing a dynamic to-do list that filters tasks by selected category and handles empty states.
Learn to implement the equitable package in Flutter to compare add task state objects by their properties, using props and override for accurate state equality across memory addresses.
Learn how to implement a delete task feature in a Flutter app using BLoC, dispatch delete task events with a task id, and update the home page and task card.
Edit an existing task within a Flutter app using BLoC by passing a nullable task to the edit page, initializing the text input, and updating status and details on submit.
Explore scaffolding a Flutter app using the very good cli starter template, including multiple flavors (development and production), localization setup, bloc state logging, and a modular pages structure.
Implement onGenerateRoute in a Flutter BLoC app by creating a router file with global navigation keys, route names, and material page routes for multiple pages, including a default invalid route.
Learn to implement nested navigation in Flutter using the navigator widget, initial route and navigator key, with separate home, notifications, and settings tabs whose navigation persists across tab switches.
In case you want the code for the go backend - clone this public repo >https://github.com/dmgcoding/flc_backend
Register a locator with get_it to perform dependency injection, and register storage, api client, and repositories as singletons. Initialize dependencies in the bootstrap before runApp for app-wide access.
Explore building a register flow using form validation with formz in flutter, wiring email and password inputs to a register block while running and testing a backend server.
Add a bloc listener on the register screen to show a snackbar for submission errors and success, including user created successfully please login, and display a loading indicator during submission.
Develop a login screen in a flutter app using bloc, with email and password inputs, login event, form validation and loading indicator, and navigate to the home page on success.
Review the section contents: running the backend server, accessing the public repo and resources, and practicing login, sign up, splash screen behavior, and notifications.
PLEASE READ(UPDATE) - I am not updating this course, so I recommend you DON'T buy the course. Since this is the first course I created - it lacks in some ways. I am working on a new course with what I learned from this. Thanks!
Go from knowing nothing or little about Flutter BLoC to becoming a expert. In the end of this course you will have the knowledge and skills to build large, scalable Flutter apps using BLoC. You'll learn about BLoC, Cubit, how to properly implement common features like app localization, theme change, fonts, using internal packages, forms handling, REST api integration, app destribution for testing, and more.
This course covers more about practical side than theory. Meaning you won't end up learning but without knowing how to implement it in code.
Who this course is for?
anyone who want to learn BLoC,
anyone who want to build large apps with Flutter and BLoC,
anyone who want to get to the next level with Flutter.
We will build multiple apps using the stuff you learn in the course. Starter code will be available to you in the beginning of the section and end result will be available in the end of the lectures.
Here's a rundown of everything you will learn in this course.
a starter template for new flutter projects which comes common features already integrated out of the box.
proper architecture and folder structure
how to separate UI code
creating and using internal packages in flutter
dependency injection
how BLoC/Cubit works. cover basics.
generating BLoC code
how to access BLoC in UI
connecting BLoC with UI
completing a task/todo app with what is learned.
properly implement localization(easily reusable for any new project)
properly implement light/dark theme(easily reusable for any new project)
IndexedStack and Navigator widget
properly implement navigation
navigating without BuildContext
best way to implement nested navigation(most devs do this wrong way)
consuming REST apis with BLoC
learn to do user authentication with REST apis and BLoC
how to implement splash screen
how to implement user logout
how to handle forms with BLoC(forms validation, submit, loading, etc)
pusing the app to testflight
Sample backend will be given to you in the REST api integration section. So you can run that server locally and follow the course. Don't worry you just have to double click on the file. It's already done for you. Backend is done in go lang if you are curious about that.
More stuff will be added to the course. You can also request new lessons/points from me.
Why should you buy this course?
to go from zero to expert in BLoC
learn up to date/standard ways of implementing code
most of the stuff you learn in this course will be easily reusable in all of your new flutter projects.
learn how to consume REST apis and manage state in the app using BLoC(almost all courses don't cover this).
more than just BLoC is covered in the course.
this is complete package to learn to build real world production apps in Flutter and BLoC.
more sections will be added to the course in the future(CI/CD, writing advanced tests, firebase, pushing to app/play stores.
Let's see inside the course!