Jetpack Compose封装之基本扩展类封装

17 阅读2分钟

项目地址:github.com/Peakmain/Co…

文档地址: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. 方法

方法名返回值参数说明
orSizeInt获取 List 的大小。若 List 为 null,则返回 0;若 List 不为 null,则返回其 size。
sizeBigZeroBoolean判断 List 大小是否大于 0。若 List 为 null,则返回 false;若 List 不为 null,则判断其大小是否大于 0。
sizeEqualZeroBoolean判断 List 的大小是否为 0。若 List 为 null,则返回 true;若 List 不为 null,则判断其大小是否等于 0。
sliceList①、fromIndex:起始索引(包含),需满足 fromIndex >= 0②、toIndex结束索引(不包含),需满足 toIndex <= sizetoIndex >= 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检查字符串非空且非 nulltrue表示有内容
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) }