TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #237 723
🐱Всем привет, это Роза, Flutter Dev Friflex!

Представьте: вы пишите приложение с bloc, и у вас есть кнопка для загрузки данных.  Пользователь может нажимать на эту кнопку бесконечное количество раз. К чему это приведет? Скорее всего — к множественным вызовам методов бэка и ухудшению работы UI.

Или, например, у меня была похожая ситуация с чипами, которые можно было выбирать. Запрос на бэк отправлялся при каждом выборе, не только при окончательном.

Как же это исправить? Можно подключить bloc_concurrency. Он позволяет управлять порядком и способом обработки событий в Bloc. Пакет идет вместе с bloc и предоставляет набор функций (EventTransformer’ов) для контроля того, как Bloc обрабатывает события.

По умолчанию в Bloc события обрабатываются строго одно за другим (то есть, sequential()).  
Но мы можем изменить это поведение с помощью разных трансформеров:
✔️ concurrent() — события обрабатываются одновременно. Например, если добавить два события одновременно, оба будут выполняться параллельно
✔️ sequence() — события обрабатываются строго по очереди. Если добавить два события одновременно, сначала будет обработано первое, затем второе и так далее
✔️ droppable() — любые новые события, добавленные во время обработки текущего, будут проигнорированы
✔️ restartable() — обрабатывается только последнее событие, предыдущие отменяются, если они еще не завершены

За счет чего это достигается?
Каждый Bloc в методе on<Event> принимает необязательный параметр transformer, который определяет, как события этого типа обрабатываются.

on<LoadMoreKeysEvent>(
  _loadMoreKeys,
  transformer: droppable(),
);


Также можно создать свой кастомный трансформер. Например, добавить небольшую задержку для поиска:

on<SetSearchQueryEvent>(
  _setSearchQuery,
  transformer: debounce(const Duration(milliseconds: 300)),
);


🔗Более подробно можете прочитать в документации к блоку.
  • ❤ 8
  • 🔥 7
  • 👍 4
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →