Сообщение отправляется в ChanelFlow но не поступают в ChanelFlow.collect()

В моем проекте используется паттерн MVVM. Во ViewModel есть канал и связанный с ним Flow:

val baseChannel = Channel<BaseEvents>()
val baseEventsFlow = baseChannel.receiveAsFlow()

В Activity при старте запускается корутина, которая запускает baseEventsFlow и принимает из него сообщения:

lifecycleScope.launchWhenStarted {

    try {
        baseEventsFlow.collect { event ->
    
           when (event) {
    
              is BaseViewModel.BaseEvents.Error -> {
                  showError(event.msg)
              }
          }
       }
    } catch (e: Throwable) {
                        
    }

По началу прием сообщений из baseEventsFlow происходит. Затем по нажатию на кнопку открывается AlertDialog и в ViewModel запускается корутина, которая в конце своего выполнения отправляет в baseChannel сообщение:

baseChannel.send(BaseEvents.Error("error"))

Но в baseEventsFlow.collect это сообщение не попадает

Почему так происходит? Причина в использовании AlertDialog ?


Ответы (1 шт):

Автор решения: Алексей

Причина действительно была в диалоге. Переделал код, чтобы не использовать AlertDialog и заработало.

→ Ссылка