[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9093":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},9093,"bloc","felangel\u002Fbloc","felangel","A predictable state management library that helps implement the BLoC design pattern","https:\u002F\u002Fbloclibrary.dev",null,"Dart",12450,3418,162,59,0,3,9,1,72.4,"MIT License",false,"master",true,[26,5,27,28,29,30,31,32,33,34,35],"angulardart","concurrency","dart","dart-library","dart-web","dartlang","flutter","flutter-package","library","state-management","2026-06-12 04:00:43","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Flogos\u002Fbloc.png\" height=\"100\" alt=\"Bloc\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Factions\u002Fworkflows\u002Fmain.yaml\u002Fbadge.svg\" alt=\"build\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffelangel\u002Fbloc\">\u003Cimg src=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffelangel\u002FBloc\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg\" alt=\"codecov\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Ffelangel\u002Fbloc.svg?style=flat&logo=github&colorB=deeppink&label=stars\" alt=\"Star on Github\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc_lint\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstyle-bloc_lint-20FFE4.svg\" alt=\"style: bloc lint\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fflutter.dev\u002Fdocs\u002Fdevelopment\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions#bloc--rx\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fflutter-website-deepskyblue.svg\" alt=\"Flutter Website\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSolido\u002Fawesome-flutter#standard\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fawesome-flutter-blue.svg?longCache=true\" alt=\"Awesome Flutter\">\u003C\u002Fa>\n\u003Ca href=\"http:\u002F\u002Ffluttersamples.com\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fflutter-samples-teal.svg?longCache=true\" alt=\"Flutter Samples\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-purple.svg\" alt=\"License: MIT\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fbloc\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F649708778631200778.svg?logo=discord&color=blue\" alt=\"Discord\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\">\u003Cimg src=\"https:\u002F\u002Ftinyurl.com\u002Fbloc-library\" alt=\"Bloc Library\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\nA predictable state management library that helps implement the BLoC design pattern.\n\n| Package                                                                                    | Pub                                                                                                            |\n| ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |\n| [angular_bloc](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fangular_bloc)         | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fangular_bloc.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fangular_bloc)         |\n| [bloc](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc)                         | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fbloc.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc)                         |\n| [bloc_concurrency](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_concurrency) | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fbloc_concurrency.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc_concurrency) |\n| [bloc_lint](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_lint)               | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fbloc_lint.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc_lint)               |\n| [bloc_test](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_test)               | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fbloc_test.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc_test)               |\n| [bloc_tools](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_tools)             | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fbloc_tools.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fbloc_tools)             |\n| [flutter_bloc](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fflutter_bloc)         | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fflutter_bloc.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_bloc)         |\n| [hydrated_bloc](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fhydrated_bloc)       | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fhydrated_bloc.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fhydrated_bloc)       |\n| [replay_bloc](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Freplay_bloc)           | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Freplay_bloc.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Freplay_bloc)           |\n\n---\n\n## Sponsors\n\nOur top sponsors are shown below! [[Become a Sponsor](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Ffelangel)]\n\n\u003Ctable style=\"background-color: white; border: 1px solid black\">\n    \u003Ctbody>\n        \u003Ctr>\n            \u003Ctd align=\"center\" style=\"border: 1px solid black\">\n                \u003Ca href=\"https:\u002F\u002Fshorebird.dev\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fsponsors\u002Fshorebird.png\" width=\"225\"\u002F>\u003C\u002Fa>\n            \u003C\u002Ftd>            \n            \u003Ctd align=\"center\" style=\"border: 1px solid black\">\n                \u003Ca href=\"https:\u002F\u002Fgetstream.io\u002Fchat\u002Fflutter\u002Ftutorial\u002F?utm_source=Github&utm_medium=Github_Repo_Content_Ad&utm_content=Developer&utm_campaign=Github_Jan2022_FlutterChat&utm_term=bloc\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fsponsors\u002Fstream.png\" width=\"225\"\u002F>\u003C\u002Fa>\n            \u003C\u002Ftd>\n            \u003Ctd align=\"center\" style=\"border: 1px solid black\">\n                \u003Ca href=\"https:\u002F\u002Frettelgame.com\u002F\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fsponsors\u002Frettel.png\" width=\"225\"\u002F>\u003C\u002Fa>\n            \u003C\u002Ftd>\n        \u003C\u002Ftr>\n    \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n---\n\n## Overview\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fdiagrams\u002Fbloc_architecture.png\" width=\"500\" alt=\"Bloc Architecture\">\u003C\u002Fimg>\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:\u002F\u002Fbloclibrary.dev)\n- [Angular Bloc Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fangular_bloc\u002FREADME.md)\n- [Bloc Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc\u002FREADME.md)\n- [Bloc Concurrency Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_concurrency\u002FREADME.md)\n- [Bloc Lint Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_lint\u002FREADME.md)\n- [Bloc Test Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_test\u002FREADME.md)\n- [Bloc Tools Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc_tools\u002FREADME.md)\n- [Flutter Bloc Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fflutter_bloc\u002FREADME.md)\n- [Hydrated Bloc Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fhydrated_bloc\u002FREADME.md)\n- [Replay Bloc Package](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Freplay_bloc\u002FREADME.md)\n\n## Migration\n\n- [Migration Guide](https:\u002F\u002Fbloclibrary.dev\u002Fmigration)\n\n## Examples\n\n\u003Cdiv style=\"text-align: center\">\n    \u003Ctable>\n        \u003Ctr>\n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-counter\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_counter.gif\" width=\"200\"\u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>            \n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-infinite-list\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_infinite_list.gif\" width=\"200\"\u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>\n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-login\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_firebase_login.gif\" width=\"200\" \u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>\n        \u003C\u002Ftr>\n        \u003Ctr>\n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fgithub-search\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_github_search.gif\" width=\"200\"\u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>\n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-weather\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_weather.gif\" width=\"200\"\u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>\n            \u003Ctd style=\"text-align: center\">\n                \u003Ca href=\"https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-todos\">\n                    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffelangel\u002Fbloc\u002Fmaster\u002Fassets\u002Fexamples\u002Fflutter_todos.gif\" width=\"200\"\u002F>\n                \u003C\u002Fa>\n            \u003C\u002Ftd>\n        \u003C\u002Ftr>\n    \u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n### Dart\n\n- [Counter](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fpackages\u002Fbloc\u002Fexample) - an example of how to create a `CounterBloc` (pure dart).\n\n### Flutter\n\n- [Counter](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-counter) - an example of how to create a `CounterBloc` to implement the classic Flutter Counter app.\n- [Form Validation](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_form_validation) - an example of how to use the `bloc` and `flutter_bloc` packages to implement form validation.\n- [Bloc with Stream](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_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:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_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:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-infinite-list) - an example of how to use the `bloc` and `flutter_bloc` packages to implement an infinite scrolling list.\n- [Login Flow](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-login) - an example of how to use the `bloc` and `flutter_bloc` packages to implement a Login Flow.\n- [Firebase Login](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-firebase-login) - an example of how to use the `bloc` and `flutter_bloc` packages to implement login via Firebase.\n- [Github Search](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fgithub-search) - an example of how to create a Github Search Application using the `bloc` and `flutter_bloc` packages.\n- [Weather](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-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:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-todos) - an example of how to create a Todos Application using the `bloc` and `flutter_bloc` packages.\n- [Timer](https:\u002F\u002Fbloclibrary.dev\u002Ftutorials\u002Fflutter-timer) - an example of how to create a Timer using the `bloc` and `flutter_bloc` packages.\n- [Shopping Cart](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_shopping_cart) - an example of how to create a Shopping Cart Application using the `bloc` and `flutter_bloc` packages based on [flutter samples](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fsamples\u002Ftree\u002Fmaster\u002Fprovider_shopper).\n- [Dynamic Form](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_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:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fflutter_wizard) - an example of how to build a multi-step wizard using the `bloc` and `flutter_bloc` packages.\n- [Bloc Concurrency Visualizer](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fbloc_concurrency_visualizer) - an example of visualizing the various `bloc_concurrency` transformers.\n- [Fluttersaurus](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Ffluttersaurus) - an example of how to use the `bloc` and `flutter_bloc` packages to create a thesaurus app -- made for Bytconf Flutter 2020.\n- [I\u002FO Photo Booth](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fphotobooth) - an example of how to use the `bloc` and `flutter_bloc` packages to create a virtual photo booth web app -- made for Google I\u002FO 2021.\n- [I\u002FO Pinball](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fpinball) - an example of how to use the `bloc` and `flutter_bloc` packages to create a pinball web app -- made for Google I\u002FO 2022.\n- [I\u002FO Holobooth](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fholobooth) - an example of how to use the `bloc` and `flutter_bloc` packages to create a virtual photobooth experience -- made for Flutter Forward.\n- [I\u002FO Flip](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fio_flip) - an example of how to use the `bloc`, `flutter_bloc`, and `flame_bloc` packages to create a card game -- made for Google I\u002FO 2023.\n\n### Web\n\n- [Counter](https:\u002F\u002Fgithub.com\u002Ffelangel\u002FBloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fangular_counter) - an example of how to use a `CounterBloc` in an AngularDart app.\n- [Github Search](https:\u002F\u002Fgithub.com\u002Ffelangel\u002FBloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fgithub_search\u002Fangular_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:\u002F\u002Fgithub.com\u002Ffelangel\u002FBloc\u002Ftree\u002Fmaster\u002Fexamples\u002Fgithub_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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-bloc-package-295b53e95c5c) - An intro to the bloc package with high level architecture and examples.\n- [Login tutorial with flutter_bloc](https:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-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:\u002F\u002Fmedium.com\u002F@felangelov\u002Funit-testing-with-bloc-b94de9655d86) - How to unit test the blocs created in the flutter login tutorial.\n- [Infinite list tutorial with flutter_bloc](https:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fcode-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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fweather-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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Ffirebase-login-with-flutter-bloc-47455e6047b0) - How to create a fully functional login\u002Fsign up flow using the bloc and flutter_bloc packages with Firebase Authentication and Google Sign In.\n- [Flutter timer tutorial with flutter_bloc](https:\u002F\u002Fmedium.com\u002Fflutter-community\u002Fflutter-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:\u002F\u002Fmedium.com\u002Fflutter-community\u002Ffirestore-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:\u002F\u002Ffluttercompletereference.com\u002F) - 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:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F12129-bloc-code-generator) - extends IntelliJ\u002FAndroid Studio with support for the Bloc library and provides tools for effectively creating Blocs for both Flutter and AngularDart apps.\n- [VSCode](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?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:\u002F\u002Fgithub.com\u002Ffelangel\u002Fbloc.js) - A port of the `bloc` state management library from Dart to JavaScript, by [Felix Angelov](https:\u002F\u002Fgithub.com\u002Ffelangel).\n- [Firebase Auth](https:\u002F\u002Fpub.dev\u002Fpackages\u002Ffb_auth) - A Web, Mobile Firebase Auth Plugin, by [Rody Davis](https:\u002F\u002Fgithub.com\u002FAppleEducate).\n- [Form Bloc](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fform_bloc) - An easy way to create forms with BLoC pattern without writing a lot of boilerplate code, by [Giancarlo](https:\u002F\u002Fgithub.com\u002FGiancarloCode).\n- [Flame Bloc](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflame_bloc) - Bloc integration for the Flame game engine, by [Flame Engine](https:\u002F\u002Fgithub.com\u002Fflame-engine).\n\n### Video Tutorials\n\n- [Bloc Library: Basics and Beyond 🚀](https:\u002F\u002Fyoutu.be\u002FknMvKPKBzGE) - Talk given at [Flutter Europe](https:\u002F\u002Ffluttereurope.dev) about the basics of the bloc library, by [Felix Angelov](https:\u002F\u002Fgithub.com\u002Ffelangel).\n- [Flutter Bloc Library Tutorial](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=hTExlt1nJZI) - Introduction to the Bloc Library, by [Reso Coder](https:\u002F\u002Fresocoder.com).\n- [Flutter Youtube Search](https:\u002F\u002Fwww.youtube.com\u002Fwatch?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:\u002F\u002Fresocoder.com).\n- [Flutter Bloc - AUTOMATIC LOOKUP - v0.20 (and Up), Updated Tutorial](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=_vOpPuVfmiU) - Updated Tutorial on the Flutter Bloc Package, by [Reso Coder](https:\u002F\u002Fresocoder.com).\n- [Dynamic Theming with flutter_bloc](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=YYbhkg-W8Mg) - Tutorial on how to use the flutter_bloc package to implement dynamic theming, by [Reso Coder](https:\u002F\u002Fresocoder.com).\n- [Persist Bloc State in Flutter](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vSOpZd_FFEY) - Tutorial on how to use the hydrated_bloc package to automatically persist app state, by [Reso Coder](https:\u002F\u002Fresocoder.com).\n- [State Management Foundation](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=S2KmxzgsTwk&t=731s) - Introduction to state management using the flutter_bloc package, by [Techie Blossom](https:\u002F\u002Ftechieblossom.com).\n- [Flutter Football Player Search](https:\u002F\u002Fwww.youtube.com\u002Fwatch?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:\u002F\u002Ftechieblossom.com).\n- [Learning the Flutter Bloc Package](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=eAiCPl3yk9A&t=1s) - Learning the flutter_bloc package live, by [Robert Brunhage](https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCSLIg5O0JiYO1i2nD4RclaQ)\n- [Bloc Test Tutorial](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=S6jFBiiP0Mc) - Tutorial on how to unit test blocs using the bloc_test package, by [Reso Coder](https:\u002F\u002Fresocoder.com).\n- [Bloc - from Zero to Hero](https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLptHs0ZDJKt_T-oNj_6Q98v-tBnVf-S_o) - Playlist which includes everything needed to get started with bloc, by [Flutterly](https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUC5PYcSe3to4mtm3SPCUmjvw).\n- [Bloc (Full Course, 11+ Hours) - Flutter State Management Course](https:\u002F\u002Fyoutu.be\u002FMn254cnduOY) - 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:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUC8NpGP0AOQ0kX9ZRcohiPeQ).\n\n### Written Resources\n\n- [DevonFw Flutter Guide](https:\u002F\u002Fgithub.com\u002Fdevonfw-forge\u002Fdevonfw4flutter) - A guide on building structured & scalable applications with Flutter and BLoC, by [Sebastian Faust](https:\u002F\u002Fgithub.com\u002FFasust)\n- [Using Google´s Flutter Framework for the Development of a Large-Scale Reference Application](https:\u002F\u002Fepb.bibl.th-koeln.de\u002Ffrontdoor\u002Findex\u002Findex\u002FdocId\u002F1498) - Scientific paper describing how to build [a large-scale Flutter application](https:\u002F\u002Fgithub.com\u002Fdevonfw-forge\u002Fdevonfw4flutter-mts-app) with BLoC, by [Sebastian Faust](https:\u002F\u002Fgithub.com\u002FFasust)\n\n### Extensions\n\n- [Feature Scaffolding for VSCode](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=KiritchoukC.flutter-clean-architecture) - A VSCode extension inspired by [Reso Coder's](https:\u002F\u002Fresocoder.com) clean architecture tutorials, which helps quickly scaffold features, by [Kiritchouk Clément](https:\u002F\u002Fgithub.com\u002FKiritchoukC).\n\n## Maintainers\n\n- [Felix Angelov](https:\u002F\u002Fgithub.com\u002Ffelangel)\n","Bloc 是一个可预测的状态管理库，帮助开发者实现 BLoC 设计模式。它支持 Dart 和 Flutter 应用开发，提供了一套简洁的 API 来管理和处理应用状态，确保业务逻辑与 UI 之间的解耦。此外，Bloc 还通过 bloc_concurrency 包提供了并发控制功能，使得异步操作更加可控。此库非常适合需要构建复杂、可维护且易于测试的应用场景，尤其是在涉及大量用户交互和数据流处理的移动或 Web 项目中。",2,"2026-06-11 03:21:11","top_language"]