Flutter debounceTime 未按预期工作

问题描述

我有一个 RangeSlider。

期望的行为: 当与滑块交互并触发 onChanged 时,应向后端发出请求以更新值。但是,需要 5 秒的谴责时间,不要太频繁地击中端点。

当前行为: 只有一些 onChanged 事件被谴责。例如,如果有 68 个 onChanged 触发器,则有 15 次调用后端。所有触发器都在一秒内(1

const int CLIP_UPDATE_DEBOUNCE_DURATION_SECONDS = 5;

final PublishSubject<IntRangeValues> rangeValuesPublishSubject = PublishSubject<IntRangeValues>();

    ClipCubit(this.clipEntity,this._userContentService) : super(RangeValuesUpdated(RangeValues(clipEntity.clipStartTimestamp,clipEntity.clipEndTimestamp))) {
rangeValuesPublishSubject.debounceTime(Duration(seconds: CLIP_UPDATE_DEBOUNCE_DURATION_SECONDS)).listen((intRangeValues) {
  print('UPDATE CALLED AT: ${DateTime.Now().second}    ---   ${intRangeValue}');
  return sl<ClipsRepository>().updateClip(clipId: clipEntity.id,clipStart: intRangeValues.start,clipEnd: intRangeValues.end);
});

// Called via onChanged
  void updateClip(RangeValues rangeValues) {
    if ((rangeValues.end - rangeValues.start) < MIN_CLIP_DURATION_SECONDS) return;
    print('ADDING RANGE VALUES: ${rangeValues.start} --- ${rangeValues.end}');
    rangeValuesPublishSubject.add(intRangeValues);
    clipEntity = clipEntity.copyWith(clipStartTimestamp: rangeValues.start,clipEndTimestamp: rangeValues.end);
    emit(RangeValuesUpdated(rangeValues));
    updateClipsSubject();
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)