如何批量限制事件?

Mar*_*ski 3 state-management reactive-programming dart flutter bloc

如何批量限制事件?比方说,我想在用户输入时触发文件保存,但执行文件系统访问的频率不超过每 100 毫秒一次?

块事件处理程序示例:

on<StoreFile>(_handleStoreEvent);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ski 9

每个处理程序都有一个可选transformer:字段,可以进行限制(以及更多)。

使用rxdart你可以自己实现限制:

on<StoreFile>(
  _handleStoreEvent,
  transformer: (events, mapper) => events.throttleTime(Duration(milliseconds: 100)).switchMap(mapper),
);
Run Code Online (Sandbox Code Playgroud)

我编写了bloc_event_transformers包来执行流行的转换,例如节流和去抖动,以减少应用程序中的样板文件。可以这样使用:

on<StoreFile>(
  _handleStoreEvent,
  transformer: throttle(Duration(milliseconds: 100)),
);
Run Code Online (Sandbox Code Playgroud)