📚 公共模块设计 common 模块

🧩 职责 · 基础工具 · 扩展 · 通用组件
Jetpack Compose 多模块架构
① common 模块核心职责

🎯 单一依赖 & 收敛

  • 所有业务模块依赖 common,而非互相依赖
  • 统一管理第三方库版本 (libs.versions.toml)
  • 提供 Base/通用接口,降低耦合
  • 放置跨模块共享的数据类、常量

🧱 基础设施层

  • 网络/数据库/存储 抽象
  • 通用 ViewModel 基类
  • 日志、安全、权限封装
  • 主题、颜色、尺寸定义
② 基础工具类 & 扩展函数
类别工具/扩展说明
🛠️ 工具类NetworkUtil网络状态监听、类型判断
🛠️ 工具类DateUtil时间格式化、相对时间
🛠️ 工具类FileUtil缓存目录、文件读写
🛠️ 工具类ScreenUtildp / px 转换、屏幕信息
⚡ 扩展函数Context.toast()简化 Toast 显示
⚡ 扩展函数String.isValidEmail()邮箱格式校验
⚡ 扩展函数Int.dpInt 转 Dp (Compose)
⚡ 扩展函数List.toImmutableList()防御性拷贝
🎨 Compose扩展Modifier.paddingHorizontal()快速水平内边距
🎨 Compose扩展Color.complementary()获取互补色
// ===== 扩展函数示例 (Context + Compose) =====
fun Context.showShortToast(msg: String) {
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
}

// Modifier 扩展 —— 通用边距
fun Modifier.commonPadding(): Modifier = 
    this.padding(horizontal = 16.dp, vertical = 12.dp)

// 字符串扩展 —— 邮箱校验
fun String.isValidEmail(): Boolean {
    return !isNullOrBlank() && 
           android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
}
③ 通用 Composable 组件

📦 常用组件清单

  • CommonTopBar — 统一标题栏 + 返回/菜单
  • LoadingIndicator — 全屏/内嵌加载动画
  • ErrorView — 错误重试占位图
  • EmptyState — 空数据提示
  • NetworkImage — 带占位/渐变的图片
  • CommonButton — 主题按钮 (Filled/Outlined)
  • ShimmerPlaceholder — 骨架屏

🧩 组件设计原则

  • 参数化配色 & 字体 (遵循 Material3)
  • 支持 contentSlot / 自定义行为
  • 默认使用 common 主题 token
  • 轻量、无业务侵入
  • 配合预览 @Preview 多设备
// ===== CommonTopBar 示例 =====
@Composable
fun CommonTopBar(
    title: String,
    onBack: (() -> Unit)? = null,
    actions: @Composable RowScope.() -> Unit = {}
) {
    TopAppBar(
        title = { Text(title, fontWeight = FontWeight.SemiBold) },
        navigationIcon = {
            if (onBack != null) {
                IconButton(onClick = onBack) {
                    Icon(Icons.AutoMirrored.Filled.ArrowBack, "返回")
                }
            }
        },
        actions = actions,
        colors = TopAppBarDefaults.topAppBarColors(
            containerColor = MaterialTheme.colorScheme.surface,
            titleContentColor = MaterialTheme.colorScheme.onSurface
        )
    )
}
:app :feature:home :feature:detail :common 工具 · 扩展 · 通用组件 依赖 common 公共基础设施

⬆ 多模块依赖关系:所有业务模块仅依赖 :common

④ 通用组件典型场景

📱 页面状态管理

  • Loading → ShimmerPlaceholder
  • Error → ErrorView + 重试回调
  • Empty → EmptyState(icon, message)
  • Content → 业务 Composable

🧪 统一交互

  • CommonTopBar 自动处理返回/标题
  • CommonButton 禁用/加载态
  • NetworkImage 配合 Coil/Glide
  • 全局 Snackbar / Dialog 封装