Dart Stream 的 2 种类型:单订阅流与广播流怎么选

Dart 的 Stream 主要分为单订阅流和广播流,两者在订阅方式、事件分发和适用场景上差异明显。本文结合代码示例梳理它们的行为特点、限制与转换方式,帮助你在网络请求、状态广播等场景里更快选对模型。

Dart Stream 的 2 种类型:单订阅流与广播流怎么选

Flutter 两个 PageView 嵌套滑动优化处理

这篇文章聚焦 Flutter 中两个 `PageView` 嵌套后的横向滑动不连贯问题:当内层滑到第一页后继续右滑,外层不会自动切回上一页。文中用 `NotificationListener` 监听 `OverscrollNotification`,结合 `depth`、`overscroll`、`velocity` 和 `ClampingScrollPhysics`,用一段较短代码完成切换优化。 在 Flutter 里把两个 `PageView` 横向嵌套起来后,最容易暴露的问题不是单纯的手势冲突,而是滑动到了内层边界却无法顺势切回外层页面。

Flutter 两个 PageView 嵌套滑动优化处理

Flutter Bloc v7.3+ 事件处理新写法与同步异步详解

Flutter Bloc 库 v8.0 将弃用 mapEventToState,推荐使用 on 方法。新版 on 默认支持异步非阻塞并发执行,适合事件总线场景;若需保持旧版串行阻塞逻辑,可通过 asyncExpand Transformer 实现同步队列。本文结合示例代码详细解析新老版本差异及参数配置方法。

Flutter 优雅拦截系统键盘弹出

在 Flutter 中开发自定义键盘时,经常需要屏蔽系统原生键盘。直接复制官方代码维护成本高,调用隐藏 API 易导致布局闪烁。本文介绍通过重载 createBinaryMessenger 拦截 SystemChannels.textInput 消息的方案,结合 FocusNode 状态判断,实现点击输入框不弹系统键盘并显示底部自定义键盘的完美体验。

Flutter 优雅拦截系统键盘弹出

Flutter DateTime日期转换详解:从时间戳到格式化输出

本文详细介绍Flutter中DateTime类的核心用法,涵盖将当前时间转换为13位毫秒时间戳、将字符串或时间戳解析为DateTime对象、利用Duration进行时间加减计算以及isBefore/isAfter时间比较方法。通过清晰代码示例,帮助开发者高效处理移动端应用中的各种日期逻辑需求。

Flutter Bloc add同类型事件只响应一次的原理与修复

在Flutter中使用Bloc模式时,连续调用两次add()若触发相同的状态变更,第二次操作往往会被忽略。这是因为底层Cubit比较新旧状态的内存地址,若对象为同一实例则跳过渲染。本文解析其源码逻辑,并提供通过实现copyWith生成新对象或使用Equatable库进行值比较的两种标准解决方案。

Flutter Bloc add同类型事件只响应一次的原理与修复