We may earn an affiliate commission when you visit our partners.
Course image
Sangwook Cho

[All source code has been updated based on flutter 3.x and flutter_bloc 8.1.4, lint rules have been applied, and class modifiers have been applied to state and events.]

To provide better service and improve communication skills in English, AI-dubbed lectures are added at the end of the course.  You can choose bsed on your preference. Thank you so much. I hope my lectures are helpful for you to expand your knowledge.

In the Flutter Bloc Essential course, you can learn in depth about Bloc, the popular Flutter state management solutions.

Read more

[All source code has been updated based on flutter 3.x and flutter_bloc 8.1.4, lint rules have been applied, and class modifiers have been applied to state and events.]

To provide better service and improve communication skills in English, AI-dubbed lectures are added at the end of the course.  You can choose bsed on your preference. Thank you so much. I hope my lectures are helpful for you to expand your knowledge.

In the Flutter Bloc Essential course, you can learn in depth about Bloc, the popular Flutter state management solutions.

In particular, it covers only the most recent version, version 8.0 or higher.

If you want to deepen your understanding of the Flutter Bloc and put all the concepts into practice, then this course is for you.

The lecture was carefully composed to ensure a balance between theory and practice.

And under the belief that repetition is the most important learning method, whenever there is a new concept, we will test the concept by making a small app, and through real-world apps such as TODO, Weather, and Firebase Authentication app, the concepts will come together comprehensively.

In particular, we repeatedly practice the combination of Cubit and Bloc when creating TODO, Weather, and Firebase Authentication apps.

  • TODO App (4 implementations): 1. Combination of Cubit and StreamSubscription, 2. Combination of Cubit and BlocListener, 3. Combination of Bloc and StreamSubscription, 4. Combination of Bloc and BlocListener

  • Weather App (4 implementations): 1. Combination of Cubit and StreamSubscription, 2. Combination of Cubit and BlocListener, 3. Combination of Bloc and StreamSubscription, 4. Combination of Bloc and BlocListener

  • Firebase Authentication App: Cubit + Bloc + StreamSubscription

This is a quick look at everything covered in the course.

  • Cubit/Bloc concept

  • BlocProvider, BlocListener, BlocConsumer, RepositoryProvider, MultiBlocProvider, MultiBlocListener, MultiRepositoryProvider

  • BuildContext extension methods: read, watch, select

  • Passing extra information to Cubit/Bloc: function argument and event payload

  • Cubit/Bloc-to-Cubit/Bloc communication: StreamSubscription, BlocListener

  • Bloc Access and value named constructor: anonymous route access, named route access, generated route access, global access

  • Observing Cubit/Bloc

  • The Event Transformation feature of Bloc

  • Hydrated Bloc

  • TODO App: 4 implementations through various combinations of Cubit, Bloc, StreamSubscription, and BlocListener

  • Weather App: 4 implementations through various combinations of Cubit, Bloc, StreamSubscription, and BlocListener

  • Firebase Authentication App: Combination of Cubit, Bloc, and StreamSubscription

Enroll now

What's inside

Learning objectives

  • Cover flutter bloc version 8.0 or higher
  • Learn two state management methods provided by flutter bloc called cubit and bloc
  • Communication method between cubits, between blocs, and between cubits and blocs
  • Tools that can use functions provided by cubit/bloc in ui
  • How to use on event api introduced in version 8.0
  • How to observe cuibt/bloc
  • Event transformation function of bloc
  • Hydrated bloc
  • Appropriate approaches to two state management tools: cubit and bloc
  • Create many small apps to understand the concept
  • Complete mastery of flutter bloc through 9 production process experiences through 3 apps (todo/weather/firebase auth) and various combinations of cubit/bloc
  • Show more
  • Show less

Syllabus

Introduction
The background and target audience
Tutorial Structure
Tools used in tutorial
Read more

For the APPID key value in the .env file of the open_weather_cubit starter file, give the key value issued by openweathermap.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Focuses on Bloc version 8.0 or higher, which ensures learners are up-to-date with the latest features and improvements in the Flutter Bloc library
Emphasizes the practical application of Cubit and Bloc through the development of multiple small apps, reinforcing theoretical concepts with hands-on experience
Explores various combinations of Cubit, Bloc, StreamSubscription, and BlocListener, providing a comprehensive understanding of state management techniques in Flutter
Requires learners to set up a Firebase project, which may present a barrier to entry for those unfamiliar with Firebase or without the necessary resources
Covers the Equatable package, which is a tool that can help learners write more robust and maintainable code by simplifying equality comparisons in Dart
Features AI-dubbed lectures, which may not appeal to all learners and could potentially detract from the learning experience for some individuals

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

In-depth practical flutter bloc

According to learners, this course offers a very practical and in-depth look at the Flutter Bloc state management library, covering both Cubit and Bloc. Students appreciate the instructor's clear explanations and the focus on real-world projects like the TODO, Weather, and Firebase Authentication apps. While some older reviews noted issues with outdated code, recent reviews and the course description indicate that the code has been updated to support Flutter 3.x and the latest Bloc versions, addressing these concerns. The course is generally seen as a solid foundation for implementing Bloc in applications.
Provides a strong base in Flutter Bloc.
"Really helped solidify my understanding of the asynchronous nature and core principles."
"This course provided me with a strong foundation in using Bloc."
"I gained a solid foundation from completing this course."
Concepts are explained well by the instructor.
"Instructor was clear."
"Good explanations of Bloc concepts."
"The instructor clearly explains the principles and usage."
"I understood complex topics thanks to the clear lectures."
Course code is current with latest versions.
"Big improvement after the update! Code works now and the new sections are great."
"Code was up to date."
"The code was updated based on flutter 3.x and flutter_bloc 8.1.4."
"All source code has been updated based on flutter 3.x and flutter_bloc 8.1.4..."
Learn by building realistic applications.
"very practical with real world examples."
"Projects were helpful, especially the TODO and Weather apps."
"I learned so much by working on the Firebase Auth project."
"The hands-on coding and projects are the strongest part of the course for me."
Some found the speed challenging.
"...sometimes moved a bit fast. Needed to pause often."
"The pace was a bit fast for me in certain sections."
"I had to rewatch some parts to fully grasp them because of the speed."
Older versions caused issues for some learners.
"Code didn't work, outdated libraries."
"It was hard to follow because the code wasn't working initially."
"Needed to spend time fixing code before the updates were released."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Flutter Bloc Essential Course (English) with these activities:
Review Dart Fundamentals
Solidify your understanding of Dart syntax, data types, and control flow to prepare for Flutter development.
Show steps
  • Review Dart documentation and tutorials.
  • Practice writing basic Dart programs.
  • Complete online Dart exercises and quizzes.
Read 'Flutter Apprentice'
Gain a broader understanding of Flutter development to better contextualize the Bloc pattern.
Show steps
  • Obtain a copy of 'Flutter Apprentice'.
  • Work through the book's examples and exercises.
  • Take notes on key Flutter concepts.
Implement a Simple Counter App with Bloc
Practice implementing the Bloc pattern by building a simple counter application from scratch.
Show steps
  • Set up a new Flutter project.
  • Define the events, states, and Bloc for the counter.
  • Implement the UI to dispatch events and display the state.
  • Test the counter app thoroughly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Refactor Existing Flutter Apps to Use Bloc
Gain practical experience by refactoring existing Flutter apps to use the Bloc pattern for state management.
Show steps
  • Identify apps that could benefit from Bloc.
  • Analyze the existing state management approach.
  • Implement Bloc and migrate the state management logic.
  • Test the refactored app thoroughly.
Read 'Effective Dart'
Improve your Dart coding skills to write more effective and maintainable Bloc implementations.
Show steps
  • Obtain a copy of 'Effective Dart'.
  • Read the book and take notes on key concepts.
  • Apply the principles to your Flutter projects.
Write a Blog Post on Bloc vs. Cubit
Deepen your understanding by explaining the differences between Bloc and Cubit in a blog post.
Show steps
  • Research the key differences between Bloc and Cubit.
  • Outline the structure of the blog post.
  • Write the blog post with clear explanations and examples.
  • Edit and publish the blog post.
Contribute to a Flutter Bloc Library
Enhance your skills by contributing to an open-source Flutter Bloc library.
Show steps
  • Identify a Flutter Bloc library on GitHub.
  • Review the library's issues and contribute a fix or feature.
  • Submit a pull request with your changes.
  • Respond to feedback and iterate on your contribution.

Career center

Learners who complete Flutter Bloc Essential Course (English) will develop knowledge and skills that may be useful to these careers:
Flutter Developer
A Flutter developer specializes in building cross-platform applications using the Flutter framework. This course is directly relevant to the skills a Flutter developer needs in their daily work since it focuses on Flutter's Bloc library, a key component for state management. The course covers the Cubit and Bloc state management solutions in depth, and provides insights into how to apply them using real-world applications. This course explores various combinations of Cubit and Bloc with StreamSubscription and BlocListener. These are valuable skills for the Flutter developer. For a Flutter developer seeking a deeper understanding of state management, this course will be highly beneficial.
Mobile Application Developer
A mobile application developer creates software for smartphones and tablets. They work with development frameworks such as Flutter, and this course provides an in-depth understanding of the Flutter Bloc state management library. This course will be beneficial because the curriculum covers core elements of the Bloc library, like Cubit and Bloc, as well as tools for accessing the functions in the UI. Further, the course will help a mobile application developer learn to implement these concepts in real-world apps such as a TODO application, a weather application, and a Firebase authentication application, each of which uses a variety of implementations of common state management patterns. Developers will find this course a good fit to learn about state management in Flutter, a popular open source UI framework.
Software Engineer
A software engineer designs, develops, and maintains software systems and applications. This role often requires a deep understanding of various programming paradigms and state management principles, and this course helps software engineers understand how to use Flutter Bloc to manage application states effectively. The course emphasizes techniques for implementing Cubit and Bloc, specifically, such as event handling and data streams. Software engineers will find it useful to learn how to apply these techniques by creating multiple apps. This practice helps build a practical understanding of the topic. Further, the course covers important topics such as Bloc access, event transformation, and hydrated bloc, necessary for a software engineer.
UI Engineer
A UI engineer focuses on the implementation of user interfaces, bringing designs to life through code. This work requires a solid understanding of state management, and this course provides UI engineers an in-depth look at Flutter Bloc. The course covers how to use tools provided by Cubit and Bloc in the UI. A UI engineer can use the course to learn about the various implementations using Cubit and Bloc. A key feature of the course is the building real-world applications such as TODO, weather, and Firebase Authentication apps. Since this course is designed to be both theoretical and practical, it will help the UI engineer master the details of the Flutter Bloc library and its application in production.
Application Architect
An application architect is responsible for the design and the structure of software applications. They need to have a deep understanding of various architectural patterns, including state management. This course helps the application architect understand how to implement state management using Flutter Bloc. The course curriculum covers different ways to implement Cubit and Bloc, along with communication strategies. It covers various ways to access bloc, observe bloc and also covers event transformations, all of which are important to an application architect. This course will be helpful for the architect who seeks a strong practical foundation in managing application state in Flutter.
Frontend Engineer
A frontend engineer builds the user-facing elements of a software application. A frontend engineer may find this course useful as it focuses on Flutter, a popular framework for building frontends. The course specifically focuses on the Bloc library, which is key to managing application and UI state. The course curriculum covers numerous state management patterns including Cubit and Bloc. The course also covers how to use BlocProvider, BlocListener, and BlocConsumer. These are important for any frontend engineer who works with Flutter.
Software Architect
A software architect is responsible for making high-level design choices and setting technical standards for software projects. State management is a crucial aspect of software architecture. This course may be useful for software architects because it covers the Flutter Bloc library, which is a common choice for managing state in Flutter applications. This course helps software architects learn how to implement Cubit and Bloc. It also explores communication patterns, Bloc access, event transformation, and hydrated bloc. This in-depth knowledge is useful to any architect who needs to make informed decisions about application architecture. Typically, this role requires an advanced degree.
Technical Lead
A technical lead provides guidance and direction to a team of developers. They need a strong understanding of the tools and technologies used by their team and must understand the principles of application architecture, including state management. This course may be useful for the technical lead to gain a comprehensive understanding of the Flutter Bloc library, which is essential for any project using Flutter. This course covers the usage of Cubit and Bloc. It also covers how to use various tools within the Flutter Bloc library, such as the BlocProvider, BlocListener, and BlocConsumer, among others. The course covers complex topics and also has a strong practical element, which will help the technical lead guide their team.
Mobile Team Lead
A mobile team lead is responsible for managing and coordinating a team of mobile developers. They often need a strong understanding of various mobile development technologies and processes, including state management. This course may be helpful for a mobile team lead as it explores in-depth the Flutter Bloc library, a popular option for state management in Flutter applications. The course curriculum covers the use of Cubit and Bloc state management techniques, as well as important patterns such as communication between blocs and error handling patterns. By completing this course, a mobile team lead will have a better understanding of the technical aspects of state management, and will be well-positioned to provide guidance and support to their team.
Software Developer
A software developer writes and tests code for software applications. This often includes understanding and implementing different state management solutions, and this course may be useful for a software developer who wants to learn how to use Flutter Bloc. The course curriculum includes information about the popular Cubit and Bloc state management methods. Further, the course covers how to implement them using real-world apps. The course also helps the software developer deepen their understanding with best practices and various implementations of Cubit and Bloc. Because the course is both theoretical and practical, it will be helpful for a software developer wishing to improve their skills.
Applications Engineer
An applications engineer works to develop, test, and maintain software applications. This work requires a solid understanding of different technologies, such as mobile development frameworks and their state management solutions. This course may be useful for an applications engineer since it teaches the Flutter Bloc library, a popular solution for state management. The course curriculum covers the Cubit and Bloc patterns, as well as communication strategies and options. The course also covers event handling and data streams. By studying this course an applications engineer can learn how to manage the application state in an effective manner.
Full-Stack Developer
Full stack developers are proficient in both frontend and backend technologies. They are often involved in all aspects of application development, including state management. This course may be useful for a full stack developer who wants to expand their knowledge of frontend development with Flutter. This course introduces them to the Flutter Bloc library and how to manage application state with it. Learning to implement Cubit and Bloc with real world examples may help any developer better manage application state. The course also covers communication between blocs and access patterns for information.
Technical Consultant
A technical consultant provides expert advice to clients on technology-related matters. They would benefit from a solid foundation in state management, especially when dealing with clients who use Flutter. This course may be useful for the technical consultant, since it provides a thorough understanding of the Flutter Bloc library. This course covers both the theoretical and practical aspects of Cubit and Bloc implementation. The course also covers key architectural patterns and communication strategies. By completing this course a technical consultant can better serve their clients by making informed recommendations.
Mobile UI/UX Designer
A mobile UI/UX designer creates the user interface and user experience for mobile applications. They should have a solid understanding of the ways in which user interfaces are built and the ways in which data is handled. While this course does not teach design, it may be helpful for a mobile UI/UX designer since this course covers how to implement state management in a Flutter application using the Bloc library. The course can help the designer understand how the UI interacts with application data which can help them design interfaces that are easier to develop. Knowledge about Bloc, Cubit architecture, and how they interact with UI components may lead to better design practices.
Mobile Product Manager
A mobile product manager is responsible for the strategy, roadmap, and execution of mobile products. This role requires knowledge of the technical aspects of mobile development, including state management techniques. This course may be helpful for a mobile product manager, since it provides them with a foundation in a key software library, Flutter Bloc. The course covers how to implement both Cubit and Bloc as state management solutions which are important architectural and implementation details. By studying this course, a mobile product manager can learn about the practical realities of building a Flutter application. This may improve their ability to communicate with their team and make informed decisions.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Flutter Bloc Essential Course (English).
Provides a comprehensive introduction to Flutter development, covering widgets, layouts, and state management. It's a great resource for beginners to get hands-on experience building Flutter apps. While it may not focus specifically on Bloc, it provides a solid foundation for understanding Flutter's core concepts. It is more valuable as additional reading than as a current reference.
Focuses on writing clean, maintainable, and efficient Dart code. While not directly related to Bloc, it helps improve your overall Dart programming skills, which are essential for effective Flutter development. It is more valuable as additional reading than as a current reference. It provides best practices and guidelines for writing high-quality Dart code.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser