{"id":13400162,"url":"https://github.com/felangel/bloc","last_synced_at":"2026-03-14T22:45:03.493Z","repository":{"id":37412501,"uuid":"151977818","full_name":"felangel/bloc","owner":"felangel","description":"A predictable state management library that helps implement the BLoC design pattern","archived":false,"fork":false,"pushed_at":"2025-05-04T19:42:19.000Z","size":61434,"stargazers_count":12112,"open_issues_count":75,"forks_count":3412,"subscribers_count":175,"default_branch":"master","last_synced_at":"2025-05-05T14:42:04.542Z","etag":null,"topics":["angulardart","bloc","concurrency","dart","dart-library","dart-web","dartlang","flutter","flutter-package","library","state-management"],"latest_commit_sha":null,"homepage":"https://bloclibrary.dev","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felangel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["felangel"],"patreon":"felangel","open_collective":"bloc"}},"created_at":"2018-10-07T19:32:59.000Z","updated_at":"2025-05-05T14:26:02.000Z","dependencies_parsed_at":"2023-10-03T09:30:28.288Z","dependency_job_id":"2ebef6a7-0130-4b11-a976-1d259a8fd7bd","html_url":"https://github.com/felangel/bloc","commit_stats":{"total_commits":2298,"total_committers":219,"mean_commits":"10.493150684931507","dds":"0.18276762402088775","last_synced_commit":"b68ce3c6533531fadd852d159c1a3ef50a967332"},"previous_names":[],"tags_count":616,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felangel%2Fbloc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felangel%2Fbloc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felangel%2Fbloc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felangel%2Fbloc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felangel","download_url":"https://codeload.github.com/felangel/bloc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253776504,"owners_count":21962499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angulardart","bloc","concurrency","dart","dart-library","dart-web","dartlang","flutter","flutter-package","library","state-management"],"created_at":"2024-07-30T19:00:49.140Z","updated_at":"2025-11-21T00:06:20.825Z","avatar_url":"https://github.com/felangel.png","language":"Dart","readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/logos/bloc.png\" height=\"100\" alt=\"Bloc\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/felangel/bloc/actions\"\u003e\u003cimg src=\"https://github.com/felangel/bloc/actions/workflows/main.yaml/badge.svg\" alt=\"build\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/felangel/bloc\"\u003e\u003cimg src=\"https://codecov.io/gh/felangel/Bloc/branch/master/graph/badge.svg\" alt=\"codecov\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/felangel/bloc\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/felangel/bloc.svg?style=flat\u0026logo=github\u0026colorB=deeppink\u0026label=stars\" alt=\"Star on Github\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pub.dev/packages/bloc_lint\"\u003e\u003cimg src=\"https://img.shields.io/badge/style-bloc_lint-20FFE4.svg\" alt=\"style: bloc lint\"\u003e\u003c/a\u003e\n\u003ca href=\"https://flutter.dev/docs/development/data-and-backend/state-mgmt/options#bloc--rx\"\u003e\u003cimg src=\"https://img.shields.io/badge/flutter-website-deepskyblue.svg\" alt=\"Flutter Website\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Solido/awesome-flutter#standard\"\u003e\u003cimg src=\"https://img.shields.io/badge/awesome-flutter-blue.svg?longCache=true\" alt=\"Awesome Flutter\"\u003e\u003c/a\u003e\n\u003ca href=\"http://fluttersamples.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/flutter-samples-teal.svg?longCache=true\" alt=\"Flutter Samples\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-purple.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/bloc\"\u003e\u003cimg src=\"https://img.shields.io/discord/649708778631200778.svg?logo=discord\u0026color=blue\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/felangel/bloc\"\u003e\u003cimg src=\"https://tinyurl.com/bloc-library\" alt=\"Bloc Library\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nA predictable state management library that helps implement the BLoC design pattern.\n\n| Package                                                                                    | Pub                                                                                                            |\n| ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |\n| [angular_bloc](https://github.com/felangel/bloc/tree/master/packages/angular_bloc)         | [![pub package](https://img.shields.io/pub/v/angular_bloc.svg)](https://pub.dev/packages/angular_bloc)         |\n| [bloc](https://github.com/felangel/bloc/tree/master/packages/bloc)                         | [![pub package](https://img.shields.io/pub/v/bloc.svg)](https://pub.dev/packages/bloc)                         |\n| [bloc_concurrency](https://github.com/felangel/bloc/tree/master/packages/bloc_concurrency) | [![pub package](https://img.shields.io/pub/v/bloc_concurrency.svg)](https://pub.dev/packages/bloc_concurrency) |\n| [bloc_lint](https://github.com/felangel/bloc/tree/master/packages/bloc_lint)               | [![pub package](https://img.shields.io/pub/v/bloc_lint.svg)](https://pub.dev/packages/bloc_lint)               |\n| [bloc_test](https://github.com/felangel/bloc/tree/master/packages/bloc_test)               | [![pub package](https://img.shields.io/pub/v/bloc_test.svg)](https://pub.dev/packages/bloc_test)               |\n| [bloc_tools](https://github.com/felangel/bloc/tree/master/packages/bloc_tools)             | [![pub package](https://img.shields.io/pub/v/bloc_tools.svg)](https://pub.dev/packages/bloc_tools)             |\n| [flutter_bloc](https://github.com/felangel/bloc/tree/master/packages/flutter_bloc)         | [![pub package](https://img.shields.io/pub/v/flutter_bloc.svg)](https://pub.dev/packages/flutter_bloc)         |\n| [hydrated_bloc](https://github.com/felangel/bloc/tree/master/packages/hydrated_bloc)       | [![pub package](https://img.shields.io/pub/v/hydrated_bloc.svg)](https://pub.dev/packages/hydrated_bloc)       |\n| [replay_bloc](https://github.com/felangel/bloc/tree/master/packages/replay_bloc)           | [![pub package](https://img.shields.io/pub/v/replay_bloc.svg)](https://pub.dev/packages/replay_bloc)           |\n\n---\n\n## Sponsors\n\nOur top sponsors are shown below! [[Become a Sponsor](https://github.com/sponsors/felangel)]\n\n\u003ctable style=\"background-color: white; border: 1px solid black\"\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" style=\"border: 1px solid black\"\u003e\n                \u003ca href=\"https://shorebird.dev\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/sponsors/shorebird.png\" width=\"225\"/\u003e\u003c/a\u003e\n            \u003c/td\u003e            \n            \u003ctd align=\"center\" style=\"border: 1px solid black\"\u003e\n                \u003ca href=\"https://getstream.io/chat/flutter/tutorial/?utm_source=Github\u0026utm_medium=Github_Repo_Content_Ad\u0026utm_content=Developer\u0026utm_campaign=Github_Jan2022_FlutterChat\u0026utm_term=bloc\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/sponsors/stream.png\" width=\"225\"/\u003e\u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\" style=\"border: 1px solid black\"\u003e\n                \u003ca href=\"https://rettelgame.com/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/sponsors/rettel.png\" width=\"225\"/\u003e\u003c/a\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n---\n\n## Overview\n\n\u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/diagrams/bloc_architecture.png\" width=\"500\" alt=\"Bloc Architecture\"\u003e\u003c/img\u003e\n\nThe goal of this library is to make it easy to separate _presentation_ from _business logic_, facilitating testability and reusability.\n\n## Documentation\n\n- [Official Documentation](https://bloclibrary.dev)\n- [Angular Bloc Package](https://github.com/felangel/bloc/tree/master/packages/angular_bloc/README.md)\n- [Bloc Package](https://github.com/felangel/bloc/tree/master/packages/bloc/README.md)\n- [Bloc Concurrency Package](https://github.com/felangel/bloc/tree/master/packages/bloc_concurrency/README.md)\n- [Bloc Lint Package](https://github.com/felangel/bloc/tree/master/packages/bloc_lint/README.md)\n- [Bloc Test Package](https://github.com/felangel/bloc/tree/master/packages/bloc_test/README.md)\n- [Bloc Tools Package](https://github.com/felangel/bloc/tree/master/packages/bloc_tools/README.md)\n- [Flutter Bloc Package](https://github.com/felangel/bloc/tree/master/packages/flutter_bloc/README.md)\n- [Hydrated Bloc Package](https://github.com/felangel/bloc/tree/master/packages/hydrated_bloc/README.md)\n- [Replay Bloc Package](https://github.com/felangel/bloc/tree/master/packages/replay_bloc/README.md)\n\n## Migration\n\n- [Migration Guide](https://bloclibrary.dev/migration)\n\n## Examples\n\n\u003cdiv style=\"text-align: center\"\u003e\n    \u003ctable\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/flutter-counter\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_counter.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e            \n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/flutter-infinite-list\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_infinite_list.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/flutter-login\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_firebase_login.gif\" width=\"200\" /\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/github-search\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_github_search.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/flutter-weather\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_weather.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd style=\"text-align: center\"\u003e\n                \u003ca href=\"https://bloclibrary.dev/tutorials/flutter-todos\"\u003e\n                    \u003cimg src=\"https://raw.githubusercontent.com/felangel/bloc/master/assets/examples/flutter_todos.gif\" width=\"200\"/\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/table\u003e\n\u003c/div\u003e\n\n### Dart\n\n- [Counter](https://github.com/felangel/bloc/tree/master/packages/bloc/example) - an example of how to create a `CounterBloc` (pure dart).\n\n### Flutter\n\n- [Counter](https://bloclibrary.dev/tutorials/flutter-counter) - an example of how to create a `CounterBloc` to implement the classic Flutter Counter app.\n- [Form Validation](https://github.com/felangel/bloc/tree/master/examples/flutter_form_validation) - an example of how to use the `bloc` and `flutter_bloc` packages to implement form validation.\n- [Bloc with Stream](https://github.com/felangel/bloc/tree/master/examples/flutter_bloc_with_stream) - an example of how to hook up a `bloc` to a `Stream` and update the UI in response to data from the `Stream`.\n- [Complex List](https://github.com/felangel/bloc/tree/master/examples/flutter_complex_list) - an example of how to manage a list of items and asynchronously delete items one at a time using `bloc` and `flutter_bloc`.\n- [Infinite List](https://bloclibrary.dev/tutorials/flutter-infinite-list) - an example of how to use the `bloc` and `flutter_bloc` packages to implement an infinite scrolling list.\n- [Login Flow](https://bloclibrary.dev/tutorials/flutter-login) - an example of how to use the `bloc` and `flutter_bloc` packages to implement a Login Flow.\n- [Firebase Login](https://bloclibrary.dev/tutorials/flutter-firebase-login) - an example of how to use the `bloc` and `flutter_bloc` packages to implement login via Firebase.\n- [Github Search](https://bloclibrary.dev/tutorials/github-search) - an example of how to create a Github Search Application using the `bloc` and `flutter_bloc` packages.\n- [Weather](https://bloclibrary.dev/tutorials/flutter-weather) - an example of how to create a Weather Application using the `bloc` and `flutter_bloc` packages. The app uses a `RefreshIndicator` to implement \"pull-to-refresh\" as well as dynamic theming.\n- [Todos](https://bloclibrary.dev/tutorials/flutter-todos) - an example of how to create a Todos Application using the `bloc` and `flutter_bloc` packages.\n- [Timer](https://bloclibrary.dev/tutorials/flutter-timer) - an example of how to create a Timer using the `bloc` and `flutter_bloc` packages.\n- [Shopping Cart](https://github.com/felangel/bloc/tree/master/examples/flutter_shopping_cart) - an example of how to create a Shopping Cart Application using the `bloc` and `flutter_bloc` packages based on [flutter samples](https://github.com/flutter/samples/tree/master/provider_shopper).\n- [Dynamic Form](https://github.com/felangel/bloc/tree/master/examples/flutter_dynamic_form) - an example of how to use the `bloc` and `flutter_bloc` packages to implement a dynamic form which pulls data from a repository.\n- [Wizard](https://github.com/felangel/bloc/tree/master/examples/flutter_wizard) - an example of how to build a multi-step wizard using the `bloc` and `flutter_bloc` packages.\n- [Bloc Concurrency Visualizer](https://github.com/felangel/bloc/tree/master/examples/bloc_concurrency_visualizer) - an example of visualizing the various `bloc_concurrency` transformers.\n- [Fluttersaurus](https://github.com/felangel/fluttersaurus) - an example of how to use the `bloc` and `flutter_bloc` packages to create a thesaurus app -- made for Bytconf Flutter 2020.\n- [I/O Photo Booth](https://github.com/flutter/photobooth) - an example of how to use the `bloc` and `flutter_bloc` packages to create a virtual photo booth web app -- made for Google I/O 2021.\n- [I/O Pinball](https://github.com/flutter/pinball) - an example of how to use the `bloc` and `flutter_bloc` packages to create a pinball web app -- made for Google I/O 2022.\n- [I/O Holobooth](https://github.com/flutter/holobooth) - an example of how to use the `bloc` and `flutter_bloc` packages to create a virtual photobooth experience -- made for Flutter Forward.\n- [I/O Flip](https://github.com/flutter/io_flip) - an example of how to use the `bloc`, `flutter_bloc`, and `flame_bloc` packages to create a card game -- made for Google I/O 2023.\n\n### Web\n\n- [Counter](https://github.com/felangel/Bloc/tree/master/examples/angular_counter) - an example of how to use a `CounterBloc` in an AngularDart app.\n- [Github Search](https://github.com/felangel/Bloc/tree/master/examples/github_search/angular_github_search) - an example of how to create a Github Search Application using the `bloc` and `angular_bloc` packages.\n\n### Flutter + Web\n\n- [Github Search](https://github.com/felangel/Bloc/tree/master/examples/github_search) - an example of how to create a Github Search Application and share code between Flutter and AngularDart.\n\n## Articles\n\n- [Bloc package](https://medium.com/flutter-community/flutter-bloc-package-295b53e95c5c) - An intro to the bloc package with high level architecture and examples.\n- [Login tutorial with flutter_bloc](https://medium.com/flutter-community/flutter-login-tutorial-with-flutter-bloc-ea606ef701ad) - How to create a full login flow using the bloc and flutter_bloc packages.\n- [Unit testing with bloc](https://medium.com/@felangelov/unit-testing-with-bloc-b94de9655d86) - How to unit test the blocs created in the flutter login tutorial.\n- [Infinite list tutorial with flutter_bloc](https://medium.com/flutter-community/flutter-infinite-list-tutorial-with-flutter-bloc-2fc7a272ec67) - How to create an infinite list using the bloc and flutter_bloc packages.\n- [Code sharing with bloc](https://medium.com/flutter-community/code-sharing-with-bloc-b867302c18ef) - How to share code between a mobile application written with Flutter and a web application written with AngularDart.\n- [Weather app tutorial with flutter_bloc](https://medium.com/flutter-community/weather-app-with-flutter-bloc-e24a7253340d) - How to build a weather app which supports dynamic theming, pull-to-refresh, and interacting with a REST API using the bloc and flutter_bloc packages.\n- [Todos app tutorial with flutter_bloc](https://medium.com/flutter-community/flutter-todos-tutorial-with-flutter-bloc-d9dd833f9df3) - How to build a todos app using the bloc and flutter_bloc packages.\n- [Firebase login tutorial with flutter_bloc](https://medium.com/flutter-community/firebase-login-with-flutter-bloc-47455e6047b0) - How to create a fully functional login/sign up flow using the bloc and flutter_bloc packages with Firebase Authentication and Google Sign In.\n- [Flutter timer tutorial with flutter_bloc](https://medium.com/flutter-community/flutter-timer-with-flutter-bloc-a464e8332ceb) - How to create a timer app using the bloc and flutter_bloc packages.\n- [Firestore todos tutorial with flutter_bloc](https://medium.com/flutter-community/firestore-todos-with-flutter-bloc-7b2d5fadcc80) - How to create a todos app using the bloc and flutter_bloc packages that integrates with cloud firestore.\n\n## Books\n\n- [Flutter Complete Reference](https://fluttercompletereference.com/) - A book about the Dart programming language (version 2.10, with null safety support) and the Flutter framework (version 1.20). It covers the bloc package (version 6.0.3) in all flavors: bloc, flutter_bloc hydrated_bloc, replay_bloc, bloc_test and cubit.\n\n## Extensions\n\n- [IntelliJ](https://plugins.jetbrains.com/plugin/12129-bloc-code-generator) - extends IntelliJ/Android Studio with support for the Bloc library and provides tools for effectively creating Blocs for both Flutter and AngularDart apps.\n- [VSCode](https://marketplace.visualstudio.com/items?itemName=FelixAngelov.bloc#overview) - extends VSCode with support for the Bloc library and provides tools for effectively creating Blocs for both Flutter and AngularDart apps.\n\n## Community\n\nLearn more at the following links, which have been contributed by the community.\n\n### Packages\n\n- [Bloc.js](https://github.com/felangel/bloc.js) - A port of the `bloc` state management library from Dart to JavaScript, by [Felix Angelov](https://github.com/felangel).\n- [Firebase Auth](https://pub.dev/packages/fb_auth) - A Web, Mobile Firebase Auth Plugin, by [Rody Davis](https://github.com/AppleEducate).\n- [Form Bloc](https://pub.dev/packages/form_bloc) - An easy way to create forms with BLoC pattern without writing a lot of boilerplate code, by [Giancarlo](https://github.com/GiancarloCode).\n- [Flame Bloc](https://pub.dev/packages/flame_bloc) - Bloc integration for the Flame game engine, by [Flame Engine](https://github.com/flame-engine).\n\n### Video Tutorials\n\n- [Bloc Library: Basics and Beyond 🚀](https://youtu.be/knMvKPKBzGE) - Talk given at [Flutter Europe](https://fluttereurope.dev) about the basics of the bloc library, by [Felix Angelov](https://github.com/felangel).\n- [Flutter Bloc Library Tutorial](https://www.youtube.com/watch?v=hTExlt1nJZI) - Introduction to the Bloc Library, by [Reso Coder](https://resocoder.com).\n- [Flutter Youtube Search](https://www.youtube.com/watch?v=BJY8nuYUM7M) - How to build a Youtube Search app which interacts with an API using the bloc and flutter_bloc packages, by [Reso Coder](https://resocoder.com).\n- [Flutter Bloc - AUTOMATIC LOOKUP - v0.20 (and Up), Updated Tutorial](https://www.youtube.com/watch?v=_vOpPuVfmiU) - Updated Tutorial on the Flutter Bloc Package, by [Reso Coder](https://resocoder.com).\n- [Dynamic Theming with flutter_bloc](https://www.youtube.com/watch?v=YYbhkg-W8Mg) - Tutorial on how to use the flutter_bloc package to implement dynamic theming, by [Reso Coder](https://resocoder.com).\n- [Persist Bloc State in Flutter](https://www.youtube.com/watch?v=vSOpZd_FFEY) - Tutorial on how to use the hydrated_bloc package to automatically persist app state, by [Reso Coder](https://resocoder.com).\n- [State Management Foundation](https://www.youtube.com/watch?v=S2KmxzgsTwk\u0026t=731s) - Introduction to state management using the flutter_bloc package, by [Techie Blossom](https://techieblossom.com).\n- [Flutter Football Player Search](https://www.youtube.com/watch?v=S2KmxzgsTwk) - How to build a Football Player Search app which interacts with an API using the bloc and flutter_bloc packages, by [Techie Blossom](https://techieblossom.com).\n- [Learning the Flutter Bloc Package](https://www.youtube.com/watch?v=eAiCPl3yk9A\u0026t=1s) - Learning the flutter_bloc package live, by [Robert Brunhage](https://www.youtube.com/channel/UCSLIg5O0JiYO1i2nD4RclaQ)\n- [Bloc Test Tutorial](https://www.youtube.com/watch?v=S6jFBiiP0Mc) - Tutorial on how to unit test blocs using the bloc_test package, by [Reso Coder](https://resocoder.com).\n- [Bloc - from Zero to Hero](https://www.youtube.com/playlist?list=PLptHs0ZDJKt_T-oNj_6Q98v-tBnVf-S_o) - Playlist which includes everything needed to get started with bloc, by [Flutterly](https://www.youtube.com/channel/UC5PYcSe3to4mtm3SPCUmjvw).\n- [Bloc (Full Course, 11+ Hours) - Flutter State Management Course](https://youtu.be/Mn254cnduOY) - 11+ hour video tutorial on Bloc and Flutter Bloc. In this video you will learn how to create fully fledged production-ready apps with Bloc and Firebase as your backend, by [Vandad Nahavandipoor](https://www.youtube.com/channel/UC8NpGP0AOQ0kX9ZRcohiPeQ).\n\n### Written Resources\n\n- [DevonFw Flutter Guide](https://github.com/devonfw-forge/devonfw4flutter) - A guide on building structured \u0026 scalable applications with Flutter and BLoC, by [Sebastian Faust](https://github.com/Fasust)\n- [Using Google´s Flutter Framework for the Development of a Large-Scale Reference Application](https://epb.bibl.th-koeln.de/frontdoor/index/index/docId/1498) - Scientific paper describing how to build [a large-scale Flutter application](https://github.com/devonfw-forge/devonfw4flutter-mts-app) with BLoC, by [Sebastian Faust](https://github.com/Fasust)\n\n### Extensions\n\n- [Feature Scaffolding for VSCode](https://marketplace.visualstudio.com/items?itemName=KiritchoukC.flutter-clean-architecture) - A VSCode extension inspired by [Reso Coder's](https://resocoder.com) clean architecture tutorials, which helps quickly scaffold features, by [Kiritchouk Clément](https://github.com/KiritchoukC).\n\n## Maintainers\n\n- [Felix Angelov](https://github.com/felangel)\n","funding_links":["https://github.com/sponsors/felangel","https://patreon.com/felangel","https://opencollective.com/bloc"],"categories":["Dart","框架","other","Libraries","Flutter 程序","Uncategorized","Flutter Project Showcase","State management [🔝](#readme)","Frameworks"],"sub_categories":["状态管理","网络服务_其他","Uncategorized","State management"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelangel%2Fbloc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelangel%2Fbloc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelangel%2Fbloc/lists"}