dev.to | 📄 原文链接 | 2026-09-04 收录

驯服 Flutter 无限滚动:为何 async* 三行代码没抓住要点

来源:dev.to — 2026-09-03

📋 概述

Flutter 无限滚动的竞态几乎人人都踩过:用户手一甩就触发多次越过底部的滚动事件,首个异步请求还没回来监听器又触发,列表重复、页码跳变甚至状态机锁死。近期热文《3 Lines of Dart async Code That Fixed My Infinite Scroll Pagination》建议把分页逻辑封进 async 生成器并用 StreamIterator 消费。本文作者 Ali 的诊断虽准,却指出这套方案并未真正解决并发:StreamIterator.moveNext() 明确非并发安全,快速滚动时照样抛 Bad state,只是把手工守卫换成了流迭代器抽象。他主张并发应放在事件边界,用 BlocSignal 的无流事件变换器 droppable()/restartable() 一次到位。

🔑 核心要点

💡 金句

把并发当事件边界的策略来处理,而不是埋进命令式数据拉取循环或泄漏到 UI 滚动监听里。
← 返回 dev.to 首页