文档地址:www.yuque.com/peakmain/al… 《Compose UI组件封装》
1. 添加依赖
How To
-
Step 1. Add the JitPack repository to your build file
- gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
- gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
- Step 2. Add the dependency
dependencies {
implementation("com.github.Peakmain:ComposeUI:+")
}
工具类
1. List扩展类
1.1. 介绍
可空List的扩展类,作用如下
- 可空List的大小
- 可空List的大小是否大于0
- 可空List大小是否为0
- 截取 List 的子区间
[fromIndex, toIndex)
,返回子列表
1.2. 导入依赖
import com.peakmain.compose.ext.orSize
1.3. 方法
方法名 | 返回值 | 参数 | 说明 |
---|---|---|---|
orSize | Int | 无 | 获取 List 的大小。若 List 为 null,则返回 0;若 List 不为 null,则返回其 size。 |
sizeBigZero | Boolean | 无 | 判断 List 大小是否大于 0。若 List 为 null,则返回 false;若 List 不为 null,则判断其大小是否大于 0。 |
sizeEqualZero | Boolean | 无 | 判断 List 的大小是否为 0。若 List 为 null,则返回 true;若 List 不为 null,则判断其大小是否等于 0。 |
slice | List | ①、fromIndex:起始索引(包含),需满足 fromIndex >= 0 ②、toIndex 结束索引(不包含),需满足 toIndex <= size 且 toIndex >= fromIndex | 此函数用于获取当前列表(可能为 null )在指定索引范围 [fromIndex, toIndex) 内的子列表视图。若原列表为 null 、范围无效或超出实际大小,则直接返回原列表 |
1.4. 示例代码
params?.imageList.orSize() > 0
params?.imageList.sizeBigZero()
2. String扩展类
2.1. 介绍
这组扩展函数为 String?
类型提供了增强的空安全操作,支持链式调用与条件执行逻辑
2.2. 导入依赖
import com.peakmain.compose.ext.*
2.3. 方法
函数签名 | 功能描述 | 返回值规则 |
---|---|---|
fun String?.isEmpty(): Boolean | 检查字符串是否为 null 或空字符串( "" ) | true 表示空或 null |
fun String?.isEmpty(block: () -> Unit): String? | 若字符串为空或 null ,执行 block 逻辑,保持链式调用 | 返回原字符串(this ) |
fun String?.isNotEmpty(): Boolean | 检查字符串非空且非 null | true 表示有内容 |
fun String?.isNotEmpty(block: (String) -> Unit): String? | 若字符串非空且非 null ,执行 block 并将非空字符串传入,保持链式调用 |
2.4. 与 Kotlin 标准库对比
场景 | 本扩展函数 | Kotlin 标准库 |
---|---|---|
空检查 | text.isEmpty() | text.isNullOrEmpty() |
非空检查 | text.isNotEmpty() | text.isNullOrEmpty().not() |
带逻辑的空检查 | text.isEmpty { ... } | text?.takeIf { it.isEmpty() }?.also { ... } |
带逻辑的非空检查 | text.isNotEmpty { ... } | text?.let { ... } |
2.5. 示例代码
// 场景:仅在非空时打印内容并转为大写
val result = nullableString
.isNotEmpty { println("Processing: $it") }
?.uppercase()
// 场景:空值时显示默认文本
nullableString
.isEmpty { showError("内容不能为空!") }
?.let { updateUI(it) }