概述

  1. Jetpack Compose 项目结构的核心是:UI(Composable)只负责展示,ViewModel 负责状态与逻辑,Repository 负责数据来源,UIState 负责封装状态.
  2. Jetpack Compose 项目围绕 状态流动 来设计:Repository → ViewModel → UIState → UI(Composable).

UI 层(Composable)

  • 只负责展示
  • 不写业务逻辑
  • 通过 collectAsState() 观察 ViewModel 的状态
  • 通过事件回调调用 ViewModel 的函数

ViewModel

  1. ViewModel 是 MVVM 中的 “VM” 层, 负责:
  • 保存 UI 状态(不会因旋转丢失)
  • 使用 MutableStateFlow 更新状态
  • 使用 StateFlow 暴露只读状态
  • 调用 Repository 获取数据
  • 处理 UI 事件(按钮点击、输入变化)
  1. 在 ViewModel 中, StateFlow 是 只读的状态流, MutableStateFlow 是 可写的状态流.

  2. StateFlow 只能在 UI 中观察状态:

  • 始终有一个当前值(通过 .value 获取)
  • 新订阅者会立即收到最新值
  • 状态变化会自动通知所有收集者(UI)
  1. MutableStateFlow 用来在 ViewModel 中更新状态:
  • 内部可以修改 .value.
  • 外部通常只暴露成 StateFlow(只读).

Repository 层(数据来源)

  • 统一管理数据来源
  • 决定从网络还是本地读取
  • ViewModel 不直接访问网络或数据库