如何在Flutter中替换transformEvents?

wvt8vs2t  于 2023-04-22  发布在  Flutter
关注(0)|答案(1)|浏览(125)

我最近升级了Flutter项目及其所有依赖项。
之前我使用的是bloc: ^6.1.1,现在升级到了bloc: ^8.0.1。但是transformEvents在8.0.0版本中被删除了,代码中是这样使用的。

@override
  Stream<Transition<LoginEvent, LoginState>> transformEvents(
    Stream<LoginEvent> events,
    transitionFn,
  ) {
    final observableStream = events;
    final nonDebounceStream = observableStream.where((event) {
      return (event is! EmailChanged && event is! PasswordChanged);
    });
    final debounceStream = observableStream.where((event) {
      return (event is EmailChanged || event is PasswordChanged);
    }).debounceTime(Duration(milliseconds: 500));
    return super.transformEvents(
        nonDebounceStream.mergeWith([debounceStream]), transitionFn);
  }

我检查了一下,它被删除了,取而代之的是EventTransformer。现在我在理解transformEvents将如何被它取代方面遇到了问题。
我在网上查了一下,但是不能让它工作。任何帮助都是很好的。谢谢!

qpgpyjmq

qpgpyjmq1#

你应该提供一个自定义的EventTransformer,而不是弃用的transformEvents。请参阅此问题了解更多细节和示例-https://github.com/felangel/bloc/issues/2915
你的代码应该看起来像这样:

EventTransformer<LoginEvent> transform<LoginEvent>(Duration duration) {
    return (events, mapper) => events.debounceTime(duration).flatMap(mapper); 
  }

Mapper是EventMapper(您的事件处理程序)的示例。

相关问题