Пакет Flutter Bloc, выдает состояние, когда нативный код вызывает метод из dart - PullRequest
1 голос
/ 07 ноября 2019

В моем блоке 2 потока. Одним из них является mapEventToState, где я могу выдавать состояния, и я создал второе, которое вызывается из функции, вызываемой собственным кодом.

Вызов:

checkStatus(_internalState).listen((data){});

Поток:

Stream<VpnConnectionState> checkStatus(_internalState) async * {
switch (_internalState) {
  case state.down:
    yield down();
    break;
  case state.up:
    yield up();
    break;
}
_previousState = _internalState;
}

Проблема в том, что я yield что-то в потоке checkSatus не приходит в мой BlocBuilder. Если вызывается из потока mapEventToState работает.

1 Ответ

2 голосов
/ 07 ноября 2019

Это совершенно разные потоки. Ваш BlocBuilder прослушивает ваш mapEventToState поток, а не checkStatus. Dispatch (или add в последней версии) событие из вашего потока checkStatus в ваш блок, а затем выдает новое состояние в mapEventToState при ответе на эти события.

Или даже избавиться от вашего потока checkStatusдля простоты как здесь:

void checkStatus(_internalState) {
switch (_internalState) {
  case state.down:
     dispatch(DownEvent());
    break;
  case state.up:
    dispatch(UpEvent());
    break;
}
_previousState = _internalState;
}

void mapEventToSteam(Event event) {
    if(event is DownEvent) {
     yield DownState()
   }
    if(event is UpEvent) {
     yield UpState()
   }
...