IF you shed tears when you miss the sun, you also miss the stars.
Windows Terminal 配置 Shift + Enter 换行:兼容 Claude Code、Codex、PI
在网页聊天框和代码编辑器里,我们已经习惯了: Enter:提交 Shift + Enter:只插入换行,不提交 这项语义由应用层定义,传统终端并未给 Shift + Enter 规定统一行为。在 Windows Terminal 中运行 Codex、Claude Code 或 Pi 时,同一个 Shift + Enter 可能表现为换行、直接提交,甚至输入一串 [13;2u。要理解这些现象,需要先弄清楚按键是怎样到达终端程序的。 ...
Compose rememberUpdatedState 的用法和本质
rememberUpdatedState 本质上是为了让长生命周期的 effect / listener 闭包引用到最新的变量值,而不是重启 effect 或重新设置 listener。 原因是长生命周期的闭包捕获的是初始值 来看一个容易误解的例子 @Composable fun Demo(name: String) { LaunchedEffect(Unit) { delay(3000); println(name) } } 假设初始传入的是 name = "A",1 秒后外部重组,name 变成了 "B"。很多人会直觉以为 3 秒后打印的是 "B",但实际上,大概率打印的是 "A"。 ...
ReactNative配置Flavor
在客户端开发中,配置 Flavor 是必不可少的环节。Android 可以通过 flavor 配置,flutter 可以通过 –dart-define 配置。 ReactNative 相对麻烦一些,一是编写 RN 原生模块将原生端配置好的 flavor 传输到 RN 端。 二是使用 react-native-config 库,它其实就是自动干了一所需要的事情。 ...
Android Compose 自定义表单组件
表单组件 Flutter 的 Form 组件,ReactNative 中的 RHF 都是体验非常不错的表单组件,特别是 flutter 的。 但是 Compose 一直没有找到合适的表单组件,所以我根据自身需求自定义了一个: ...
Android状态持久化
App 状态和用户状态 在日常项目开发中,我们通常都会维护一些状态,比如 App 级别的全局状态有用户是否已登录、是否同意了隐私协议、是否完成新手引导等。或者是用户级别的状态,比如首页是单列还是双列展示、是否开启深色模式、某些功能开关等。 这些状态的特点是不复杂,但是访问和修改频繁,并且需要立马反应到 UI 上。 ...