abstract_bloc

abstract_bloc is a Flutter package that provides a set of abstract base classes to implement the BLoC (Business Logic Component) pattern. It allows for a structured approach to state management, simplifies the creation of reusable components, and promotes maintainable code practices.

📌 Why Use abstract_bloc?

  • Abstract Base Classes – Standardizes the implementation of Cubits and Blocs, encouraging best practices.
  • Flexible Components – Easily create flexible and reusable components for managing application state.
  • Decoupled State Management – Clearly separate presentation logic from business logic for better maintainability.
  • Rich Functionality – Streamlines handling of common use cases, such as lists and forms.

🚀 Getting Started

1️⃣ Install the Package

Add the package to your pubspec.yaml:

dependencies: abstract_bloc: latest_version

Run:

flutter pub get

Features

  • Load, Refresh and Load more data from cache + network with seamless flow
  • Show error widget when network error occures and allow the user to reload the data
  • Show info icon telling the user that cached data is being shown and allow them to reload the data

Please refer to the example project for more detailed insight into the usage of AbstractBloc

🛠️ Advanced Use Cases

  • Nested BLoCs: Create nested BLoCs or Cubits to manage complex states in larger applications.
  • Reactive Forms: Enhance form handling with reactive state management, leveraging the AbstractFormCubit.
  • Global State Management: Implement a globally accessible state using a combination of Cubits and Blocs.

🏆 Conclusion

The abstract_bloc package provides a foundation for building robust and scalable applications using the BLoC pattern. By leveraging abstract classes tailored for various use cases, you can effectively manage state and encapsulate business logic in your Flutter applications.


📜 License

MIT License


Happy coding! 🚀

Libraries

abstract/_all
abstract/copy_with
abstract_bloc
abstract_form/_all
abstract_form/state_management/_all
abstract_form/state_management/blocs/_all
abstract_form/state_management/blocs/abstract_form_bloc
abstract_form/state_management/blocs/abstract_form_bus_bridge_bloc
abstract_form/state_management/blocs/abstract_form_bus_observer_bloc
abstract_form/state_management/blocs/abstract_form_bus_publisher_bloc
abstract_form/state_management/blocs/abstract_item_bus_bridge_cubit
abstract_form/state_management/blocs/abstract_item_bus_observer_cubit
abstract_form/state_management/cubits/_all
abstract_form/state_management/cubits/abstract_form_bus_bridge_cubit
abstract_form/state_management/cubits/abstract_form_bus_observer_cubit
abstract_form/state_management/cubits/abstract_form_bus_publisher_cubit
abstract_form/state_management/cubits/abstract_form_cubit
abstract_form/state_management/cubits/abstract_item_bus_bridge_cubit
abstract_form/state_management/cubits/abstract_item_bus_observer_cubit
abstract_form/state_management/events/_all
abstract_form/state_management/events/abstract_form_event
abstract_form/state_management/states/_all
abstract_form/state_management/states/abstract_form_state
abstract_form/validators/_all
abstract_form/validators/model_validator
abstract_form/validators/property_validator
abstract_form/widgets/_all
abstract_form/widgets/abstract_form_builder
abstract_form/widgets/abstract_form_error_container
abstract_form/widgets/abstract_form_no_data_container
abstract_item/_all
abstract_item/state_management/_all
abstract_item/state_management/blocs/_all
abstract_item/state_management/blocs/abstract_item_bloc
abstract_item/state_management/blocs/abstract_item_bus_bridge_bloc
abstract_item/state_management/blocs/abstract_item_bus_observer_bloc
abstract_item/state_management/blocs/abstract_item_bus_publisher_bloc
abstract_item/state_management/blocs/abstract_list_bus_bridge_cubit
abstract_item/state_management/blocs/abstract_list_bus_observer_cubit
abstract_item/state_management/cubits/_all
abstract_item/state_management/cubits/abstract_item_bus_bridge_cubit
abstract_item/state_management/cubits/abstract_item_bus_observer_cubit
abstract_item/state_management/cubits/abstract_item_bus_publisher_cubit
abstract_item/state_management/cubits/abstract_item_cubit
abstract_item/state_management/events/_all
abstract_item/state_management/events/abstract_item_event
abstract_item/state_management/states/_all
abstract_item/state_management/states/abstract_item_state
abstract_item/widgets/_all
abstract_item/widgets/abstract_item_builder
abstract_item/widgets/abstract_item_error_container
abstract_item/widgets/abstract_item_no_data_container
abstract_list/_all
abstract_list/state_management/_all
abstract_list/state_management/blocs/_all
abstract_list/state_management/blocs/abstract_list_bloc
abstract_list/state_management/blocs/abstract_list_bus_bridge_bloc
abstract_list/state_management/blocs/abstract_list_bus_observer_bloc
abstract_list/state_management/blocs/abstract_list_bus_publisher_bloc
abstract_list/state_management/cubits/_all
abstract_list/state_management/cubits/abstract_list_bus_bridge_cubit
abstract_list/state_management/cubits/abstract_list_bus_observer_cubit
abstract_list/state_management/cubits/abstract_list_bus_publisher_cubit
abstract_list/state_management/cubits/abstract_list_cubit
abstract_list/state_management/events/_all
abstract_list/state_management/events/abstract_list_event
abstract_list/state_management/states/_all
abstract_list/state_management/states/abstract_list_state
abstract_list/widgets/_all
abstract_list/widgets/abstract_list_builder
abstract_list/widgets/abstract_list_error_container
abstract_list/widgets/abstract_list_no_data_container
configuration/_all
configuration/abstract_configuration
configuration/abstract_translations
enumerations/_all
enumerations/form_result_status
enumerations/result_status
extensions/_all
extensions/list_extensions
extensions/refresh_controller_extensions
models/_all
models/grid_result
models/pagination
widgets/_all
widgets/abstract_stateful_builder
widgets/info_dialog
widgets/loader
widgets/loader_info_icon