Многие люди используют Bloc, не понимая, когда им следует его использовать. В этой статье я объясню, в каких случаях блог полезен, а в каких нет.

Что такое Блок?

Блок — это аббревиатура от Business LOGic Component. Bloc пытается отделить логику (обычно состояние) от компонента пользовательского интерфейса (виджета). Виджет, использующий Bloc, сможет оставаться без состояния и реагировать на изменения состояния.

Добро

Конечно, поскольку Bloc позволяет нам разделить логику и пользовательский интерфейс в наших компонентах, мы можем упростить внесение изменений. Рассмотрим следующий сценарий: вы обнаружили в своем приложении ошибку, связанную с состоянием приложения. Без блока вам нужно просмотреть дерево компонентов, чтобы выяснить, какой компонент вызывает проблему. Блерг. Это займет много времени, просто чтобы найти вызывающее проблему состояние в этом пользовательском интерфейсе! Но с блоком нам нужно только изменить состояние вызывающего блока. Вуаля! А если говорить об удобстве при разработке, часто ли вы передаете состояния/обратные вызовы дочерним виджетам?

Передача состояния или обратных вызовов дочернему виджету является распространенной проблемой. Если есть виджет, которому нужно знать состояние своего родителя, но родитель находится на четыре слоя выше, обычно нам нужно передать все функции вниз, даже тем виджетам, которым это не нужно.

Используя блок, нам не нужно передавать все необходимые состояния, и вам нужно только передать событие

Если вы пришли из React, вы, вероятно, заметили, что этот шаблон похож на UseContext в React, и да, это очень похожая концепция.

Подводя итог преимуществам:

  • Лучшее разделение интересов
  • Упрощенная передача состояния через контекст

Когда не использовать его

Помимо большего количества шаблонных кодов, вы не должны использовать Bloc, когда состояние тесно связано с пользовательским интерфейсом. Например, если у вас есть компонент, который управляет анимацией, манипулируя ограничивающим прямоугольником дочернего элемента, вам не следует использовать use Bloc. Поскольку вам нужен доступ к пользовательскому интерфейсу, чтобы получить состояние, нет смысла отделять его от самого пользовательского интерфейса. Это также относится к клавишам, контроллерам и другим состояниям, связанным с пользовательским интерфейсом.

Заключение

Стоит ли использовать блок? Если ваше приложение содержит некоторые состояния, некоторые из которых передаются, тогда да. Но если в вашем приложении не так много состояний, то можно и не использовать его.

Материал для дальнейшего чтения: