Project Icon

FlowRedux

简化异步处理,轻松构建Kotlin多平台状态机

FlowRedux通过DSL和协程,简化了Kotlin多平台状态机的异步管理。支持JVM、Android、iOS、watchOS、tvOS、macOS、Linux和Windows平台。提供全面文档与最佳实践指南,方便开发者实现状态转换与流观察。包含核心库和Jetpack Compose扩展。未来计划支持JavaScript。

项目介绍:FlowRedux

FlowRedux 是一个强大的 Kotlin 多平台状态机库,旨在让异步运行变得简单。通过使用领域特定语言 (DSL) 和协程,它能够轻松管理应用程序的状态转换。

使用方法

FlowRedux 提供了一种直观的方式来定义和处理应用程序的状态。开发者可以使用状态类和状态转换机制来处理不同的用户操作。

状态与操作

在 FlowRedux 中,状态和操作是通过接口和对象定义的。例如:

sealed interface State

object Loading : State
data class ContentState(val items : List<Item>) : State
data class Error(val error : Throwable) : State

以上代码展示了三种状态:加载中、内容加载完成和错误状态。

对于操作,也可以使用类似的方式定义:

sealed interface Action
object RetryLoadingAction : Action

状态机定义

FlowRedux 允许开发者通过 FlowReduxStateMachine 来定义状态机和状态间的转换逻辑。以下是一个简单的例子:

class MyStateMachine : FlowReduxStateMachine<State, Action>(initialState = Loading){
    init {
        spec {
            inState<Loading> {
                onEnter { state : State<Loading> ->
                    try {
                        val items = loadItems() // 加载数据
                        state.override { ContentState(items) } // 转换到内容状态
                    } catch (t : Throwable) {
                        state.override { Error(t) } // 转换到错误状态
                    }
                }
            }

            inState<Error> {
                on<RetryLoadingAction> { action : RetryLoadingAction, state : State<Error> ->
                    state.override { Loading } // 重新加载时进入加载状态
                 }
            }

            inState<ContentState> {
                collectWhileInState( flowOf(1,2,3) ) { value : Int, state : State<ContentState> ->
                    state.mutate {
                        copy( items = this.items + Item("New item $value"))
                    }
                }
            }
        }
    }
}

与 Android 应用的集成

FlowRedux 可以轻松集成到 Android 应用中,并与 AndroidX ViewModel 结合使用:

class MyViewModel @Inject constructor(private val stateMachine : MyStateMachine) : ViewModel() {
    val state = MutableLiveData<State>()

    init {
        viewModelScope.launch {
            stateMachine.state.collect { newState ->
                state.value = newState
            }
        }
    }

    fun dispatch(action : Action) {
        viewModelScope.launch {
            stateMachine.dispatch(action)
        }
    }
}

依赖设置

开发者可以通过添加以下依赖来使用 FlowRedux:

  • 核心库:flowredux
  • Jetpack Compose 扩展:compose

JVM / Android

implementation 'com.freeletics.flowredux:flowredux-jvm:<latest-version>'
implementation 'com.freeletics.flowredux:compose:<latest-version>'

多平台支持

FlowRedux 不仅支持 JVM 和 Android,还可以在 iOS、watchOS、tvOS、macOS、Linux 和 Windows 平台上运行。

implementation 'com.freeletics.flowredux:flowredux:<latest-version>'

代码快照

最新的快照可以通过以下方式获取:

allprojects {
    repositories {
        // 添加代码快照仓库
        maven {
            url "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
}

并使用 -SNAPSHOT 后缀作为版本名:

implementation 'com.freeletics.flowredux:flowredux:1.2.1-SNAPSHOT'

总之,FlowRedux 是一个易于使用且功能强大的工具,帮助开发者在多平台应用中管理复杂的异步状态转换。通过其优雅的 Kotlin DSL 和强大的协程支持,开发者可以构建更具响应性和可靠性的应用。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号