【问题标题】:Flutter Bloc package, yield state when native code invoke a method from dartFlutter Bloc 包,原生代码从 dart 调用方法时产生状态
【发布时间】:2020-03-03 20:50:36
【问题描述】:

在我的集团中,我有 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 正在工作。

【问题讨论】:

    标签: flutter dart bloc


    【解决方案1】:

    这些是完全不同的流。您的 BlocBuilder 正在收听您的 mapEventToState 流,而不是您的 checkStatusDispatch(或最新版本中的 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()
       }
    

    【讨论】:

    • 谢谢,我不知道这是一个dispatch()函数,可以在bloc内部没有上下文的情况下调用。
    • 我不知道使用add()(或dispatch)。这太棒了,所以..简单!你拯救了我的一天。
    猜你喜欢
    • 2021-02-24
    • 2021-11-21
    • 2019-05-25
    • 2019-10-31
    • 1970-01-01
    • 2020-10-03
    • 2021-12-28
    • 2021-08-05
    • 2020-07-20
    相关资源
    最近更新 更多