如何解决Flutter debounceTime 未按预期工作
期望的行为: 当与滑块交互并触发 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 举报,一经查实,本站将立刻删除。