Что это простыми словами

Bloc — это диспетчер событий и состояний в мобильном приложении.

Аналогия: представьте офис с секретарём. Вместо того чтобы каждый сотрудник сам искал нужные документы и обновлял их, все обращаются к секретарю: «Мне нужно обновить статус заказа». Секретарь знает, где что лежит, делает изменения по правилам и сообщает всем заинтересованным. Bloc работает так же: экран отправляет событие («пользователь нажал кнопку»), Bloc обрабатывает его и выдаёт новое состояние («показать загрузку», потом «показать данные»).

Это избавляет от путаницы: каждая часть приложения не хранит свои данные как попало, а получает их из одного места.

Официальное определение

Теперь, когда суть понятна, вот как Bloc описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.

«Bloc — библиотека управления состоянием для Flutter, реализующая паттерн Business Logic Component, где события преобразуются в состояния через предсказуемый однонаправленный поток данных».

Разберём по словам. «Управление состоянием» — это контроль за данными, которые показывает приложение (загрузка, список товаров, ошибка). «Паттерн» — шаблон, по которому организован код. «События преобразуются в состояния» — вы посылаете сигнал «загрузить данные», Bloc обрабатывает его и возвращает результат «вот данные» или «произошла ошибка». «Однонаправленный поток» значит, что изменения идут строго в одну сторону: событие → обработка → новое состояние, а не хаотично из разных мест.

Какую задачу решает

Когда приложение простое, данные можно хранить прямо в экране. Но стоит добавить загрузку с сервера, кнопки, фильтры — и начинается каша: одна часть экрана показывает старые данные, другая новые, при повороте телефона всё сбрасывается.

Bloc убирает эту боль: вся логика («что делать, когда пользователь нажал кнопку») живёт отдельно от экрана. Экран только показывает то, что ему говорит Bloc. Это делает код понятнее, а ошибки легче искать: вы точно знаете, где что происходит.

Побочная польза: код легко тестировать. Можно проверить логику отдельно от экрана — отправили событие, получили состояние, всё работает.

К какой экосистеме относится

В резюме может встретиться название flutter_bloc. Это не отдельная технология, а пакет-обёртка, которая упрощает использование Bloc во Flutter. По сути это тот же Bloc, только с удобными виджетами. Если кандидат пишет flutter_bloc — он знает Bloc.

Чем заменяется

Bloc — не единственный способ управлять состоянием во Flutter. Ту же задачу решают Riverpod и GetX. В одном проекте обычно используют что-то одно.

Главное: переход между ними дешёвый. Разработчик, который работал с Bloc, разберётся в Riverpod или GetX за считаные дни. Суть одна — управление данными приложения, отличается только подход и стиль написания кода. Это не разные профессии, а разные инструменты для одной работы.

Что не путать

Насколько это важно при отборе

Короткий ответ: обычно это НЕ повод отбраковывать кандидата.

Самая частая ошибка новичка-рекрутера — искать строго «Flutter + Bloc» и отсеивать сильного разработчика, у которого в резюме указан Riverpod или GetX. Он освоит Bloc за несколько дней, потому что задача та же. Отсеивая по конкретной библиотеке управления состоянием, вы теряете хороших людей и затягиваете поиск.

Правильный подход: смотрите, есть ли у кандидата опыт с любым менеджером состояния во Flutter. Если есть — этого достаточно. Если в вакансии жёстко написано «только Bloc», уточните у нанимающего менеджера, действительно ли это принципиально: часто оказывается, что нет.

Когда всё же стоит обратить внимание: если у кандидата вообще нигде не упомянут ни один способ управления состоянием, а вакансия предполагает сложное приложение — это повод спросить, как он организовывал код и данные в проектах.

Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.