блок нужно закрыть после выхода с экрана, а значит нужно отследить dispose виджета.
Плюс то, что написали сверху)
нужно закрывать только если он удерживается другим объектом, например подписан на стрим (если не отписаться - утечёт)
если ничего его не дежит - можно не закрывать - gc соберёт и баста
но тем кто не понимает - самый лучший вариант как я писал выше - вставлять BlocProvider'ом билдить интерфейс BlocBuilder'ом
и не забывать в close закрвать использованные ресурсы, отписываться от стримов, etc