Table of Contents
Interduction of Flutter BLoC Architecture
In the realm of mobile app development, staying ahead in the competitive market demands not only intuitive user interfaces but also efficient state management. Flutter, Google’s UI toolkit, has gained immense popularity for its capability to build natively compiled applications for mobile, web, and desktop from a single codebase. Amidst various state management solutions available for Flutter, one architecture stands out for its robustness and scalability – the BLoC (Business Logic Component) architecture.
Understanding BLoC Architecture
BLoC architecture revolves around the principle of separating business logic from the presentation layer, ensuring a clear and structured codebase. It comprises three major components:
- Business Logic Component (BLoC): This component acts as a bridge between the data layer and the presentation layer. It holds the business logic of the application and exposes streams of data to the UI.
- Events: Events represent user interactions or any other occurrences that trigger changes in the application state. These events are sent to the BLoC, which processes them and emits new states accordingly.
- States: States represent the current condition of the application. Whenever the BLoC processes events, it emits new states reflecting the updated data, which in turn triggers UI changes.
Key Benefits of Using BLoC Architecture
- Separation of Concerns: BLoC architecture promotes a clear separation of concerns, making it easier to manage and scale applications, especially in complex scenarios.
- Reactive Programming: Leveraging streams and sinks, BLoC enables reactive programming, allowing for seamless data flow and handling asynchronous operations effortlessly.
- Testability: With business logic decoupled from the UI, testing becomes more straightforward. Unit testing BLoCs ensures the reliability and stability of the application.
- Reusable Components: BLoC architecture encourages the creation of reusable business logic components, facilitating code reusability and maintainability across different parts of the application.
Implementing BLoC Architecture in Flutter
Implementing BLoC architecture in Flutter involves the following steps:
- Define BLoC Classes: Create BLoC classes for different features or sections of your application. These classes will handle the business logic and expose streams of data.
- Handle Events: Define event classes to represent different user interactions or application events. These events will be sent to the corresponding BLoC for processing.
- Emit States: Implement logic within BLoC classes to process events and emit new states accordingly. These states will be observed by the UI to reflect changes in the application’s data.
- Connect BLoCs with UI: Use Flutter’s widget or from the package to connect BLoCs with the UI layer. This enables the UI to react to state changes emitted by the BLoCs.
What is Flutter BLoC Architecture?
In the realm of Flutter development, architects and developers often find themselves navigating through various design patterns and architectures to build robust and scalable applications. One such architecture that has gained significant traction is the BLoC (Business Logic Component) architecture. In this article, we’ll delve into what Flutter BLoC architecture is, its key components, and how it revolutionizes the way we manage state in Flutter applications.
What is Flutter BLoC Architecture?
Flutter BLoC architecture is a design pattern that facilitates the separation of business logic from UI components in Flutter applications. BLoC stands for Business Logic Component, and it acts as a mediator between the UI and the data model. This architecture promotes a reactive programming style by using streams to manage state and handle asynchronous operations.
Key Components of Flutter BLoC Architecture
- BLoC: The central component of this architecture is the BLoC itself. It encapsulates the business logic of the application and exposes streams of events and states. BLoCs are responsible for processing events, updating states, and emitting new states to be rendered by the UI.
- Events: Events represent user actions or any external input that triggers a state change in the application. These events are passed to the BLoC, which processes them and updates the state accordingly.
- States: States represent the current condition or snapshot of the application at any given moment. BLoCs emit new states in response to events, and UI components listen to these states to update their appearance accordingly.
- Streams: Streams are a fundamental part of Flutter BLoC architecture, facilitating the flow of data between components. BLoCs expose streams of events and states, allowing for asynchronous communication and reactive updates.
How Flutter BLoC Architecture Works
- Event Handling: When a user interacts with the UI, such as tapping a button or entering text in a form field, it generates events. These events are dispatched to the corresponding BLoC, which processes them and updates the state accordingly.
- State Management: BLoCs maintain the application state and emit new states in response to events. UI components subscribe to these state changes and update their appearance based on the latest state emitted by the BLoC.
- Reactive Updates: Flutter BLoC architecture enables reactive updates, ensuring that the UI remains in sync with the underlying state of the application. Whenever the state changes, UI components are automatically re-rendered to reflect the updated state.
Advantages of Flutter BLoC Architecture
- Separation of Concerns: BLoC architecture promotes a clear separation of concerns by decoupling business logic from UI components. This separation makes the codebase more maintainable, testable, and scalable.
- Reusability: BLoCs can be reused across multiple UI components and screens within the application, leading to better code organization and improved code sharing.
- Asynchronous Support: Flutter BLoC architecture seamlessly handles asynchronous operations, such as network requests and database queries, using streams. This asynchronous support simplifies complex workflows and ensures a smooth user experience.
- Testability: By isolating business logic in BLoCs, developers can write unit tests to verify the behavior of individual components independently of the UI. This testability enhances code quality and reduces the likelihood of bugs.
How Do Flutter BLoC Architecture Work?
In the realm of Flutter app development, efficiency and scalability are paramount. One architectural pattern that has gained widespread adoption for managing state and handling asynchronous data streams is BLoC (Business Logic Component). Flutter BLoC Architecture revolutionizes the way developers structure their apps, providing a robust framework for building complex applications with ease. Let’s delve into how Flutter BLoC architecture works and why it’s considered indispensable in modern app development.
What is Flutter BLoC Architecture?
BLoC Architecture stands for Business Logic Component. It separates the presentation layer from the business logic layer in your application. At its core, BLoC is essentially a design pattern where components communicate through streams. In Flutter, streams are utilized to handle and propagate asynchronous data. BLoC acts as a bridge between the UI layer and the business logic layer, facilitating the flow of data and events seamlessly.
How Does Flutter BLoC Architecture Work?
- Sink and Stream: BLoC relies heavily on streams. It typically consists of two main components: Sink and Stream. The Sink is responsible for accepting input events from the UI layer, while the Stream emits the output data to the UI layer. This unidirectional flow ensures a clear separation of concerns, making the codebase more maintainable and testable.
- Event Handling: In Flutter BLoC architecture, events trigger state changes within the business logic layer. For instance, user interactions such as button clicks or data fetching requests are translated into events that are processed by the BLoC. The BLoC then updates its state accordingly, which in turn triggers UI updates.
- State Management: BLoC maintains its state internally, encapsulating the business logic within itself. This decoupling of state management from the UI layer enhances code reusability and facilitates easier unit testing. Moreover, by adopting immutable state objects, Flutter BLoC ensures predictable state changes, thereby minimizing bugs and enhancing app stability.
- Dependency Injection: Flutter BLoC architecture encourages the use of dependency injection for providing dependencies to BLoC instances. This promotes modularization and simplifies the management of dependencies within the application. By injecting dependencies from the outer layers, BLoC remains isolated and independent, making it easier to maintain and scale the application.
- Reactive Programming: BLoC leverages the power of reactive programming to handle asynchronous data streams efficiently. With the help of libraries like RxDart, developers can easily compose and manipulate streams, making asynchronous programming more intuitive and manageable.
Why Flutter BLoC Architecture?
- Separation of Concerns: Flutter BLoC architecture enforces a clear separation of concerns between the UI and business logic layers. This promotes code organization, making it easier to understand, maintain, and debug the application.
- Scalability and Maintainability: By decoupling the UI from the business logic, Flutter BLoC architecture facilitates scalability and maintainability. Developers can easily extend or modify the application without impacting other parts of the codebase.
- Testability: BLoC architecture promotes test-driven development by providing a clear boundary between the presentation and business logic layers. Unit testing becomes more straightforward as developers can easily mock dependencies and test individual components in isolation.
- Reusability: BLoC instances are inherently reusable, making it easier to share business logic across different parts of the application. This leads to a more modular and efficient codebase, reducing development time and effort.
10 Must have Features Flutter BLoC Architecture
In the realm of Flutter app development, choosing the right architecture is crucial for building robust, scalable, and maintainable applications. One such architecture gaining traction is the BLoC (Business Logic Component) pattern. Flutter BLoC architecture provides a clear separation of concerns and facilitates reactive programming, making it an ideal choice for complex applications. In this article, we will delve into the 10 must-have features of Flutter BLoC architecture that contribute to its effectiveness.
- Separation of Concerns (SoC): At the core of BLoC architecture is the principle of SoC. It divides your app into distinct layers: presentation, business logic, and data. This separation ensures that each component has a single responsibility, making code easier to understand, test, and maintain.
- Stream-based Communication: BLoC architecture leverages streams for communication between different layers of the application. Streams facilitate asynchronous data flow, enabling real-time updates and responsiveness in your app.
- Reactive Programming: BLoC architecture embraces reactive programming paradigms, where changes in data automatically trigger updates in the user interface. This reactive approach enhances the responsiveness of your app and simplifies state management.
- State Management: With BLoC, state management becomes streamlined and predictable. The business logic layer, represented by BLoCs, manages the application state independently of the UI layer. This ensures that your UI remains consistent and synchronized with the underlying data.
- Dependency Injection: BLoC architecture encourages the use of dependency injection to provide instances of BLoCs to various parts of the application. Dependency injection promotes modularity and testability by decoupling components and facilitating easier integration of new features.
- Testability: BLoC architecture promotes test-driven development by making components highly testable. Since business logic is separated from UI, you can write unit tests for BLoCs without involving UI components, ensuring that your app behaves as expected under different scenarios.
- Hot Reload Support: Flutter’s hot reload feature pairs seamlessly with BLoC architecture, allowing developers to make changes to the codebase and see the results instantly without losing the application state. This rapid iteration cycle enhances productivity and accelerates the development process.
- Scalability: BLoC architecture scales well with the complexity of your application. As your app grows, you can add new BLoCs to encapsulate additional business logic without significantly impacting existing code. This scalability ensures that your app remains maintainable and adaptable to evolving requirements.
- Platform Agnosticism: BLoC architecture is platform-agnostic, meaning it can be used across different platforms supported by Flutter, such as iOS, Android, web, and desktop. This consistency in architecture simplifies cross-platform development and reduces code duplication.
- Community Support and Resources: Flutter BLoC architecture has gained widespread adoption within the Flutter community. As a result, there are numerous libraries, tutorials, and resources available to help developers implement BLoC architecture effectively. Leveraging these resources can expedite the development process and address common challenges.
What is the Cost to Build Flutter BLoC Architecture?
In the dynamic realm of app development, efficiency and scalability are paramount. Flutter, Google’s UI toolkit, has gained immense popularity due to its ability to create beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. When it comes to managing state and handling complex business logic in Flutter, the BLoC (Business Logic Component) architecture emerges as a robust solution. However, as with any development endeavor, understanding the costs associated with implementing such architecture is crucial. Let’s delve into the intricacies of the expenses involved in building Flutter BLoC architecture.
- Resource Allocation: Before delving into monetary expenses, it’s essential to consider the allocation of resources, primarily human resources. Building a robust BLoC architecture requires skilled developers proficient in Dart and experienced in using Flutter. The cost here revolves around salaries, benefits, and potentially outsourcing fees if your team lacks the necessary expertise.
- Development Time: Time is money, as the saying goes. Developing a BLoC architecture involves careful planning, implementation, and testing. The longer it takes to develop, the higher the cost. Considerations such as the complexity of your app’s requirements, the number of features, and the intricacy of the business logic all influence the development time and subsequently, the cost.
- Third-Party Packages and Tools: While Flutter provides a robust foundation, you may need to invest in third-party packages or tools to streamline the BLoC development process. These could include libraries for state management, dependency injection, or testing frameworks. While some packages are open-source and free to use, others may require purchasing licenses or subscriptions, adding to the overall cost.
- Infrastructure and Hosting: Once your BLoC architecture is developed, you’ll need infrastructure to deploy and host your app. The cost here varies depending on factors such as server requirements, scalability needs, and chosen hosting providers. Whether you opt for cloud-based solutions like Firebase or AWS, or prefer self-hosting, there will be associated expenses.
- Maintenance and Updates: Building the BLoC architecture is just the beginning. Over time, your app will require maintenance, bug fixes, and updates to adapt to changing requirements and technological advancements. Factor in the ongoing costs of maintaining your BLoC architecture, including developer salaries, infrastructure upkeep, and any additional third-party services you rely on.
- Testing and Quality Assurance: Ensuring the reliability and performance of your BLoC architecture necessitates thorough testing and quality assurance procedures. This includes unit tests, integration tests, and user acceptance testing. Allocating resources for testing is crucial to identify and rectify issues early on, minimizing future costs associated with bug fixes and user dissatisfaction.
- Scalability Considerations: As your app grows in popularity and user base, scalability becomes a key concern. Your BLoC architecture should be designed to scale efficiently, accommodating increased traffic and data processing demands without compromising performance. Investing in scalable infrastructure and optimizing code for performance may entail additional expenses.
Advantages and Disadvantages of Flutter BLoC Architecture
Flutter has gained immense popularity among developers due to its flexibility and efficiency in building cross-platform applications. One of the architectural patterns commonly used in Flutter development is the BLoC (Business Logic Component) architecture. BLoC architecture separates the presentation layer from business logic, providing numerous benefits but also presenting some challenges. Let’s delve into the advantages and disadvantages of Flutter BLoC architecture in detail.
Advantages of Flutter BLoC Architecture:
Advantages | Description |
---|---|
Separation of Concerns | BLoC architecture facilitates the separation of UI components and business logic, enhancing code organization and maintainability. |
Reusability | BLoC components are reusable across different parts of the application, reducing redundancy and promoting code efficiency. |
Testability | BLoC architecture enables easy testing of business logic independently from UI components, ensuring robustness and reliability of the app. |
Scalability | With BLoC architecture, the application can scale efficiently as new features and functionalities are added, without impacting existing code. |
Streamlined UI Updates | BLoC pattern utilizes streams to propagate changes, resulting in streamlined UI updates and improved user experience. |
Disadvantages of Flutter BLoC Architecture:
Disadvantages | Description |
---|---|
Learning Curve | Adopting BLoC architecture requires a learning curve for developers, especially those new to reactive programming concepts and streams. |
Boilerplate Code | Implementing BLoC architecture often involves writing boilerplate code, which can increase development time and complexity. |
Overhead | BLoC architecture may introduce additional overhead due to the need for managing streams and handling data flow, impacting performance. |
Complexity | As the application grows in complexity, managing multiple BLoCs and their interactions can become challenging and lead to code complexity. |
Potential Over-Engineering | Without careful planning, there is a risk of over-engineering the application by introducing unnecessary abstractions with BLoC architecture. |
How to Create a Flutter BLoC Architecture App
Flutter has emerged as one of the most popular frameworks for building cross-platform mobile applications. Its flexibility, performance, and ease of use make it a favorite among developers worldwide. When it comes to managing state in Flutter applications, one of the most effective approaches is using the BLoC (Business Logic Component) architecture. In this guide, we’ll walk through the process of creating a Flutter app using the BLoC architecture, step by step.
Understanding BLoC Architecture: BLoC architecture is based on the separation of concerns principle, where the UI, business logic, and data layers are decoupled. This separation facilitates better code organization, maintainability, and testability of the application. At the core of the BLoC architecture are three main components:
- BLoC: Business Logic Component, responsible for managing the application’s business logic and state.
- Events: Actions or user interactions that trigger a change in the application’s state.
- States: Different representations of the application’s state based on the events triggered.
Step-by-Step Guide to Creating a Flutter BLoC Architecture App:
- Setup Flutter Project: Begin by creating a new Flutter project using your preferred IDE or the command line. Ensure that you have Flutter and Dart SDK installed on your system.
- Add Dependencies: Include the necessary dependencies for implementing BLoC architecture in your Flutter project. These dependencies typically include for BLoC management and for value equality comparisons.
- Define BLoC Classes: Create separate BLoC classes for each feature or section of your application. Each BLoC class should extend the class provided by the package and define the initial state and event-handling logic.
- Implement Events and States: Define event classes representing user actions and state classes representing different states of your application. Each event should trigger a state change in the corresponding BLoC class.
- Create UI Components: Design the UI components of your application using Flutter’s widget library. Use widget provided by the package to rebuild UI components in response to state changes.
- Integrate BLoC with UI: Connect the BLoC classes with the UI components by wrapping them with widgets. This provides access to the BLoC instances throughout the widget tree.
- Handle State Changes: Implement logic to handle state changes in your UI components. Update the UI based on the current state emitted by the corresponding BLoC instance.
- Test and Debug: Thoroughly test your application to ensure that the BLoC architecture is functioning as expected. Use Flutter’s built-in testing framework for unit and widget testing, and debug any issues that arise.
- Optimize Performance: Fine-tune your application for optimal performance by optimizing widget rendering, reducing unnecessary rebuilds, and minimizing resource consumption.
Key Components of Flutter BLoC Architecture
In the realm of Flutter app development, understanding the architectural patterns is paramount for crafting robust and maintainable applications. Among these patterns, the BLoC (Business Logic Component) architecture stands out for its capability to efficiently manage state and business logic. Let’s delve into the key components of Flutter’s BLoC architecture to grasp its essence and leverage its power in our projects.
- BlocProvider: At the heart of BLoC architecture lies the BlocProvider, which acts as a provider for the BLoC instances throughout the widget tree. It facilitates the injection of BLoCs into widgets, ensuring easy access to their functionality and state. By wrapping the root widget with BlocProvider, you establish a centralized point for managing and accessing BLoCs across your application.
- BLoC: The core component of BLoC architecture is, of course, the BLoC itself. It encapsulates the business logic of your application, acting as a mediator between the UI layer and the data layer. A BLoC receives input events from the UI, processes them, and emits output states, which are then reflected in the UI. Separating business logic into distinct BLoCs promotes code reusability, testability, and maintainability.
- Events: Events represent user interactions or any other external triggers that initiate state changes within a BLoC. These events are dispatched to the respective BLoC instances, prompting them to process the event and emit new states accordingly. By decoupling the UI from the business logic, events enable seamless integration of complex user interactions and asynchronous operations.
- States: States encapsulate the current state of the application or a specific feature managed by the BLoC. Whenever a BLoC processes an event, it emits a new state reflecting the updated data or UI state. Widgets listening to the BLoC’s state changes can then react accordingly, updating their appearance or behavior to reflect the latest state of the application.
- StreamController: Under the hood, BLoC architecture relies heavily on streams and StreamControllers to manage data flow and state propagation. A StreamController serves as a source of data events, which are then broadcasted to all subscribed listeners (typically BLoCs or widgets). By leveraging streams, Flutter enables efficient and reactive programming, facilitating real-time updates and seamless UI interactions.
- Sink and Stream: Sinks and streams are fundamental constructs of asynchronous programming in Dart, the language used for Flutter development. A sink represents the input side of a stream, allowing data to be added to the stream for processing. On the other hand, a stream represents the output side, delivering data asynchronously to its listeners. BLoCs utilize sinks to receive events and streams to emit states, orchestrating the flow of data within the application.
- Dependency Injection: BLoC architecture promotes the use of dependency injection to provide BLoC instances to widgets efficiently. By leveraging libraries like Provider or Riverpod, developers can effortlessly inject BLoCs into widget subtrees, ensuring proper separation of concerns and facilitating modularization. Dependency injection plays a pivotal role in maintaining a clean and scalable codebase, free from tight coupling and unnecessary dependencies.
Top Flutter BLoC Architecture Companies
In the dynamic landscape of mobile app development, selecting the right architecture plays a pivotal role in ensuring scalability, maintainability, and efficiency. Among the myriad of options available, Flutter BLoC (Business Logic Component) architecture stands out for its simplicity and effectiveness in managing state and business logic. To aid your quest for excellence in app development, let’s delve into some of the top Flutter BLoC architecture companies leading the charge in revolutionizing the digital realm.
-
-
Next Big Technology:
Next Big Technology is the leading mobile app and web development company in India. They offer high-quality outcomes for every project according to the requirements of the client. They have an excellent in-house team of skilled and experienced developers. They provide timely project delivery as per the given deadline and always deliver client-oriented and requirement-specific projects.Next Big Technology is one of the top development companies for the high-quality development of mobile apps and web development services. They have having experienced in-house team of developers who provide top-notch development services according to the business requirements. NBT provides highly business-oriented services and implements all the latest and trending tools and technologies. They always work hard to deliver a top-notch solution at an affordable cost. They are having experience of more than 13 years and delivered lots of projects around the globe to businesses and clients.NBT is highly focused on providing top-notch development solutions at a very affordable cost. By using their market experience and development experience, they are delivering proper solutions to clients and various industries for their custom requirements.Location: India, USA, UK, AustraliaHourly Rate :< $25 per HourEmployees: 50 – 249Focus Area
- Mobile App Development
- App Designing (UI/UX)
- Software Development
- Web Development
- AR & VR Development
- Big Data & BI
- Cloud Computing Services
- DevOps
- E-commerce Development
Industries Focus
- Art, Entertainment & Music
- Business Services
- Consumer Products
- Designing
- Education
- Financial & Payments
- Gaming
- Government
- Healthcare & Medical
- Hospitality
- Information Technology
- Legal & Compliance
- Manufacturing
- Media
-
- Bloc: Specializing in Flutter app development, Bloc is a dedicated team of experts passionate about delivering exceptional user experiences through BLoC architecture. Their comprehensive understanding of Flutter’s reactive programming model enables them to design scalable and maintainable solutions tailored to clients’ specific needs. With a proven track record of successful projects across various industries, Bloc empowers businesses to stay ahead in the competitive app market.
- Fueled: Renowned for crafting award-winning digital experiences, Fueled embraces Flutter BLoC architecture as a cornerstone of their development approach. By combining creativity with technical prowess, Fueled ensures that every app they build not only meets but exceeds client expectations. Their meticulous attention to detail, coupled with a focus on performance optimization, results in visually stunning and high-performing apps that resonate with users worldwide.
- Appinventiv: With a global presence and a diverse portfolio spanning multiple domains, Appinventiv emerges as a leader in implementing Flutter BLoC architecture for innovative app solutions. Their team of seasoned developers employs best practices and industry standards to deliver robust, scalable, and future-proof apps that drive business growth. Through a collaborative approach and a commitment to excellence, Appinventiv remains a trusted partner for businesses seeking transformative digital solutions.
- Agile Infoways: Recognized for their agility and adaptability, Agile Infoways excels in harnessing the power of Flutter BLoC architecture to build feature-rich and responsive mobile apps. With a focus on iterative development and continuous improvement, they ensure rapid delivery without compromising quality. By staying abreast of the latest technological advancements, Agile Infoways empowers clients to stay ahead of the curve in today’s fast-paced digital landscape.
FAQs on Flutter BLoC Architecture
Flutter BLoC (Business Logic Component) architecture has gained significant traction among developers for its efficiency in managing state in Flutter applications. However, it’s common for developers, especially those new to Flutter, to have several questions about BLoC. In this article, we’ll address some frequently asked questions (FAQs) surrounding Flutter BLoC architecture to provide clarity and understanding.
- What is Flutter BLoC Architecture? Flutter BLoC is an architectural pattern that separates business logic from UI components in Flutter applications. It consists of three main components: the Stream (or BehaviorSubject) to manage state, the BLoC to handle business logic, and the UI layer to display the data.
- How does BLoC differ from other state management solutions in Flutter? Unlike traditional state management solutions like setState(), BLoC separates concerns by keeping UI components and business logic decoupled. It utilizes streams to propagate state changes, resulting in a more organized and scalable codebase.
- When should I use Flutter BLoC Architecture? Flutter BLoC is ideal for medium to large-scale applications where managing state becomes complex. It’s particularly beneficial when dealing with asynchronous operations, such as fetching data from APIs or handling user inputs.
- Is Flutter BLoC suitable for small projects? While Flutter BLoC can be implemented in small projects, its overhead might outweigh the benefits in simpler applications. For smaller projects, simpler state management solutions like setState() or Provider might be more suitable.
- How do I implement Flutter BLoC Architecture? To implement BLoC architecture in Flutter, you need to create BLoC classes that handle business logic and expose streams to communicate with the UI layer. Additionally, you’ll use StreamBuilder widgets in your UI to react to changes in BLoC state.
- Can I use Flutter BLoC with other state management solutions? Yes, Flutter BLoC can be combined with other state management solutions like Provider or Riverpod to achieve more flexibility and functionality. For instance, you can use Provider for dependency injection while utilizing BLoC for managing complex state.
- Are there any downsides to using Flutter BLoC? While Flutter BLoC offers several benefits, it might introduce a learning curve for developers unfamiliar with reactive programming and streams. Additionally, managing too many BLoC instances can lead to increased memory consumption if not handled properly.
- What are some best practices for using Flutter BLoC? Some best practices for using Flutter BLoC include keeping BLoC classes focused on a single responsibility, using streams efficiently to minimize resource usage, and leveraging libraries like flutter_bloc for added functionality and convenience.
Thanks for reading our post “How to Use Flutter BLoC Architecture To Build High-Performance App”. Please connect with us to learn more about Flutter BLoC Architecture.