Что это простыми словами
Bloc — это диспетчер событий и состояний в мобильном приложении.
Аналогия: представьте офис с секретарём. Вместо того чтобы каждый сотрудник сам искал нужные документы и обновлял их, все обращаются к секретарю: «Мне нужно обновить статус заказа». Секретарь знает, где что лежит, делает изменения по правилам и сообщает всем заинтересованным. Bloc работает так же: экран отправляет событие («пользователь нажал кнопку»), Bloc обрабатывает его и выдаёт новое состояние («показать загрузку», потом «показать данные»).
Это избавляет от путаницы: каждая часть приложения не хранит свои данные как попало, а получает их из одного места.
Официальное определение
Теперь, когда суть понятна, вот как Bloc описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.
«Bloc — библиотека управления состоянием для Flutter, реализующая паттерн Business Logic Component, где события преобразуются в состояния через предсказуемый однонаправленный поток данных».
Разберём по словам. «Управление состоянием» — это контроль за данными, которые показывает приложение (загрузка, список товаров, ошибка). «Паттерн» — шаблон, по которому организован код. «События преобразуются в состояния» — вы посылаете сигнал «загрузить данные», Bloc обрабатывает его и возвращает результат «вот данные» или «произошла ошибка». «Однонаправленный поток» значит, что изменения идут строго в одну сторону: событие → обработка → новое состояние, а не хаотично из разных мест.
Какую задачу решает
Когда приложение простое, данные можно хранить прямо в экране. Но стоит добавить загрузку с сервера, кнопки, фильтры — и начинается каша: одна часть экрана показывает старые данные, другая новые, при повороте телефона всё сбрасывается.
Bloc убирает эту боль: вся логика («что делать, когда пользователь нажал кнопку») живёт отдельно от экрана. Экран только показывает то, что ему говорит Bloc. Это делает код понятнее, а ошибки легче искать: вы точно знаете, где что происходит.
Побочная польза: код легко тестировать. Можно проверить логику отдельно от экрана — отправили событие, получили состояние, всё работает.
К какой экосистеме относится
Язык — Dart.
Фреймворк — Flutter. Bloc работает только с Flutter.
Специальность — мобильный разработчик кроссплатформенных приложений (Flutter Developer).
В резюме может встретиться название flutter_bloc. Это не отдельная технология, а пакет-обёртка, которая упрощает использование Bloc во Flutter. По сути это тот же Bloc, только с удобными виджетами. Если кандидат пишет flutter_bloc — он знает Bloc.
Чем заменяется
Bloc — не единственный способ управлять состоянием во Flutter. Ту же задачу решают Riverpod и GetX. В одном проекте обычно используют что-то одно.
Главное: переход между ними дешёвый. Разработчик, который работал с Bloc, разберётся в Riverpod или GetX за считаные дни. Суть одна — управление данными приложения, отличается только подход и стиль написания кода. Это не разные профессии, а разные инструменты для одной работы.
Что не путать
Bloc ≠ Flutter. Flutter — это сам фреймворк для создания приложений, Bloc — лишь одна из библиотек внутри него. Приложение на Flutter может работать и без Bloc.
Bloc ≠ Dio, GoRouter или Hive. Это другие библиотеки Flutter, которые часто используются вместе с Bloc, но решают другие задачи: Dio отвечает за запросы к серверу, GoRouter — за переходы между экранами, Hive — за хранение данных на устройстве. Они работают рядом, а не вместо друг друга.
Bloc и flutter_bloc — не разные технологии. flutter_bloc — это пакет для удобной работы с Bloc, а не замена ему.
Bloc ≠ Redux. Redux — библиотека для JavaScript из мира веб-разработки. Хотя идеи похожи, это разные технологии для разных платформ.
Насколько это важно при отборе
Короткий ответ: обычно это НЕ повод отбраковывать кандидата.
Самая частая ошибка новичка-рекрутера — искать строго «Flutter + Bloc» и отсеивать сильного разработчика, у которого в резюме указан Riverpod или GetX. Он освоит Bloc за несколько дней, потому что задача та же. Отсеивая по конкретной библиотеке управления состоянием, вы теряете хороших людей и затягиваете поиск.
Правильный подход: смотрите, есть ли у кандидата опыт с любым менеджером состояния во Flutter. Если есть — этого достаточно. Если в вакансии жёстко написано «только Bloc», уточните у нанимающего менеджера, действительно ли это принципиально: часто оказывается, что нет.
Когда всё же стоит обратить внимание: если у кандидата вообще нигде не упомянут ни один способ управления состоянием, а вакансия предполагает сложное приложение — это повод спросить, как он организовывал код и данные в проектах.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.