当前位置: 首页 > article >正文

Circuit实战教程:10分钟构建你的第一个Compose应用

Circuit实战教程10分钟构建你的第一个Compose应用【免费下载链接】circuit⚡️ A Compose-driven architecture for Kotlin and Android applications.项目地址: https://gitcode.com/gh_mirrors/cir/circuitCircuit是一个基于Compose驱动的Kotlin和Android应用架构能帮助开发者快速构建现代化、跨平台的应用界面。本教程将带你在10分钟内完成一个简单的邮件应用体验Circuit的核心功能和开发流程。准备工作环境搭建首先确保你的开发环境已配置好Compose。如果从零开始可以按照以下步骤添加Circuit依赖克隆仓库git clone https://gitcode.com/gh_mirrors/cir/circuit在项目的build.gradle.kts中添加核心依赖dependencies { implementation(com.slack.circuit:circuit-foundation:version) }Circuit提供了多种模块化组件包括circuit-runtime核心运行时、circuit-presenter状态管理和circuit-ui界面渲染等完整的依赖说明可参考docs/setup.md。第一步创建Screen组件在Circuit中Screen是应用的导航基本单元通常用数据类表示。我们先创建一个邮件列表界面的InboxScreen// 多平台版本 data object InboxScreen : ScreenAndroid平台还需添加Parcelize注解以支持状态保存Parcelize data object InboxScreen : Screen第二步设计状态与UICircuit采用单向数据流架构状态(State)由Presenter产生并传递给UI渲染。我们先定义邮件列表的状态结构data object InboxScreen : Screen { data class State( val emails: ListEmail, val eventSink: (Event) - Unit ) : CircuitUiState sealed class Event : CircuitUiEvent { data class EmailClicked(val emailId: String) : Event() } }接着实现UI组件使用Compose的LazyColumn展示邮件列表Composable fun Inbox(state: InboxScreen.State, modifier: Modifier Modifier) { Scaffold(topBar { TopAppBar(title { Text(Inbox) }) }) { innerPadding - LazyColumn(modifier Modifier.padding(innerPadding)) { items(state.emails) { email - EmailItem( email email, onClick { state.eventSink(InboxScreen.Event.EmailClicked(email.id)) } ) } } } }邮件列表界面效果如下第三步实现PresenterPresenter负责业务逻辑和状态管理我们创建一个简单的InboxPresenter来提供邮件数据class InboxPresenter( private val navigator: Navigator, private val emailRepository: EmailRepository ) : PresenterInboxScreen.State { Composable override fun present(): InboxScreen.State { val emails by produceState(emptyList()) { value emailRepository.getEmails() } return InboxScreen.State(emails) { event - when (event) { is InboxScreen.Event.EmailClicked - navigator.goTo(DetailScreen(event.emailId)) } } } }第四步配置Circuit实例将Screen、Presenter和UI组件通过Circuit实例关联起来val circuit Circuit.Builder() .addPresenterFactory(InboxPresenter.Factory(emailRepository)) .addUiInboxScreen, InboxScreen.State { state, modifier - Inbox(state, modifier) } .build()第五步添加导航功能Circuit提供了BackStack和Navigator实现页面导航。在应用入口处设置导航val backStack rememberSaveableBackStack(root InboxScreen) val navigator rememberCircuitNavigator(backStack) { finish() } CircuitCompositionLocals(circuit) { NavigableCircuitContent(navigator navigator, backStack backStack) }添加邮件详情页后点击列表项即可导航到详情界面完整代码结构完成的项目结构应包含以下核心文件InboxScreen.kt定义列表界面的Screen、State和UIDetailScreen.kt定义详情界面的Screen、State和UIInboxPresenter.kt处理列表页业务逻辑DetailPresenter.kt处理详情页业务逻辑MainActivity.kt应用入口配置Circuit和导航运行应用根据平台不同使用相应的命令运行应用Android./gradlew :samples:tutorial:installDebug桌面端./gradlew :samples:tutorial:run总结通过本教程你已掌握Circuit的核心概念使用Screen定义导航单元通过State和Event实现单向数据流用Presenter处理业务逻辑配置Circuit连接各组件使用Navigator实现页面导航Circuit还提供了状态保留、共享元素过渡、测试工具等高级功能更多内容可参考官方文档docs/index.md。现在就开始用Circuit构建你的下一个Compose应用吧 【免费下载链接】circuit⚡️ A Compose-driven architecture for Kotlin and Android applications.项目地址: https://gitcode.com/gh_mirrors/cir/circuit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

Circuit实战教程:10分钟构建你的第一个Compose应用

Circuit实战教程:10分钟构建你的第一个Compose应用 【免费下载链接】circuit ⚡️ A Compose-driven architecture for Kotlin and Android applications. 项目地址: https://gitcode.com/gh_mirrors/cir/circuit Circuit是一个基于Compose驱动的Kotlin和And…...

终极指南:如何在Windows上简单快速实现SSH远程文件系统挂载

终极指南:如何在Windows上简单快速实现SSH远程文件系统挂载 【免费下载链接】sshfs-win SSHFS For Windows 项目地址: https://gitcode.com/gh_mirrors/ss/sshfs-win SSHFS-Win是一个革命性的开源工具,它让你能够在Windows操作系统中通过SSH协议直…...

Linux查看文件内容

🏷️ 标签:Linux 查看文件 文件类型 Linux命令 运维 后端开发 📝 适用人群:Linux 新手、运维、后端、学生、实训使用 💡 亮点:包含 查看文件类型 查看整个文件 查看部分文件,结构清晰、示例可…...

KaTrain终极指南:用AI围棋教练快速提升你的棋艺水平

KaTrain终极指南:用AI围棋教练快速提升你的棋艺水平 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 你是否曾经在对局后感到困惑,不知道自己的失误究竟在哪…...

如何用嘎嘎降AI处理汉语言文学论文:文学类毕业论文降AI免费完整操作教程

如何用嘎嘎降AI处理汉语言文学论文:文学类毕业论文降AI免费完整操作教程 帮同学处理过汉语言文学论文降AI教程,流程基本是固定的,记录下来供参考。 主推工具:嘎嘎降AI(www.aigcleaner.com),4.…...

Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南

Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南 【免费下载链接】hertz-dev first base model for full-duplex conversational audio 项目地址: https://gitcode.com/gh_mirrors/he/hertz-dev Hertz.dev是一个开创性的全双工会话音频基础模型&a…...

如何快速掌握ncmdump:网易云音乐NCM格式解密完整指南

如何快速掌握ncmdump:网易云音乐NCM格式解密完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾为网易云音乐的NCM加密格式而烦恼?精心收藏的音乐无法在其他播放器中使用?ncmdump正是…...

OpenClaw 本地部署避坑指南|环境配置 + 故障排查全流程

🦞 OpenClaw 本地部署避坑指南|环境配置 故障排查全流程 开源 AI 自动化工具OpenClaw(小龙虾) 凭借本地私有化部署、无侵入系统交互、全流程自动化执行等核心特性,在开发者社区快速普及。轻量化架构与高扩展性&#…...

如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程

如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程 关于心理学论文降AI教程,有几个细节提前知道能少走很多弯路。 核心用嘎嘎降AI(www.aigcleaner.com),4.8元,达标率99.26%。这篇…...

3分钟搞定百度网盘提取码:新手也能快速上手的终极解决方案

3分钟搞定百度网盘提取码:新手也能快速上手的终极解决方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否经常遇到这样的烦恼:朋友分享的百度网盘链接明明就在眼前,却因为缺少那个关…...

MailHog邮件测试工具:开发者的SMTP调试终极解决方案

MailHog邮件测试工具:开发者的SMTP调试终极解决方案 【免费下载链接】MailHog Web and API based SMTP testing 项目地址: https://gitcode.com/gh_mirrors/ma/MailHog 作为现代软件开发过程中不可或缺的一环,邮件功能测试常常让开发者头疼不已。…...

从“佩戴感知”到“无感融入”:UWB vs 镜像视界——空间智能的代际跃迁

从“佩戴感知”到“无感融入”:UWB vs 镜像视界——空间智能的代际跃迁空间智能产业正迎来划时代理念革新,行业认知正式完成从主动佩戴式感知向全域无感化融入的核心转变。以UWB为代表的传统定位技术,始终停留在依托外接设备实现信息采集的初…...

【Lovable开发者私藏资源包】:含官方未公开API文档、调试插件源码与CI/CD配置清单

更多请点击: https://kaifayun.com 第一章:Lovable应用开发完整教程 Lovable 是一个面向现代 Web 应用的轻量级响应式框架,专为构建高交互性、可访问性强且易于维护的单页应用(SPA)而设计。它不依赖虚拟 DOM&#xff…...

2036年的病榻前,陪伴我的是“贾维斯”还是我的两个儿子?

《跨越银色浪潮:中国智慧养老的破局与重构》 9/10 老陈的“完美”养老局,在病床上破防了 老陈是以前一位年长的同事,搞了一辈子软件 。退休后,他给自己设计了一套堪称“完美”的养老方案 。 他老伴走得早,两个儿子又都在海外。于是,他的客厅里摆着最新款的陪伴机器人,…...

YOLO综合训练工具X(免环境版 手动/自动标注、一键训练、模型验证、分类器训练、自动截图、批量处理

yolo免环境训练工具 yolo8标注工具 yolo训练工具 yolo8 yolo4 yolo3yolo无需搭建环境训练工具 免环境标注、训练的工具支持版本 yolo3 yolo4 yolo8(电脑显卡必须N卡) [火]可训练模型 cfg weights bin param pt yolo8l.pt yolo8m.pt yolo8n.pt yolo8s.pt yolo8x.pt 一、YOLO免环…...

如何快速掌握UV-UI框架:面向开发者的完整跨平台开发实战指南

如何快速掌握UV-UI框架:面向开发者的完整跨平台开发实战指南 【免费下载链接】uv-ui uv-ui 破釜沉舟之兼容vue32、app、h5、小程序等多端基于uni-app和uView2.x的生态框架,支持单独导入,开箱即用,利剑出击。 项目地址: https://…...

从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验

从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot 你是否曾经在激烈的枪战中因为瞄准不准而错失良机?是否羡慕…...

终极指南:如何用TrafficMonitor股票插件打造桌面投资监控中心

终极指南:如何用TrafficMonitor股票插件打造桌面投资监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为错过重要股票行情而烦恼吗?想在工作时…...

《怕你忍不住》的传播入口:情绪临界点如何被记住

从内容传播角度看,《怕你忍不住》的入口不是猎奇,而是一个非常具体的情绪临界点:话快说出口、眼泪快掉下来、冲动快把人推着走。标题先完成识别,读者会知道这不是泛泛的伤感歌。这首歌适合连接很多高频场景。深夜准备发出一条消息…...

Claude Code 总被封号怎么办,用 Taotoken 稳定接入大模型服务

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code 总被封号怎么办,用 Taotoken 稳定接入大模型服务 许多开发者在日常工作中依赖 Claude Code 作为编程助手&…...

终极环境数据分析工具Ladybug完整指南:5分钟掌握天气数据可视化

终极环境数据分析工具Ladybug完整指南:5分钟掌握天气数据可视化 【免费下载链接】ladybug 🐞 Core ladybug library for weather data analysis and visualization 项目地址: https://gitcode.com/gh_mirrors/lad/ladybug 你是一个文章写手&#…...

终极LuaJIT反编译指南:如何快速恢复丢失的Lua源代码

终极LuaJIT反编译指南:如何快速恢复丢失的Lua源代码 【免费下载链接】luajit-decompiler https://gitlab.com/znixian/luajit-decompiler 项目地址: https://gitcode.com/gh_mirrors/lu/luajit-decompiler 你是否曾面对编译后的LuaJIT字节码文件束手无策&…...

地质建模革命:如何使用GemPy在10分钟内构建专业3D地质模型 [特殊字符]

地质建模革命:如何使用GemPy在10分钟内构建专业3D地质模型 🚀 【免费下载链接】gempy GemPy is an open-source, Python-based 3-D structural geological modeling software, which allows the implicit (i.e. automatic) creation of complex geologic…...

为什么你的ElevenLabs甘肃话输出像“普通话带口音”?5个声学特征参数调试错误导致92%失真率

更多请点击: https://kaifayun.com 第一章:甘肃话语音合成失真的现象学观察 甘肃话作为中原官话陇中片的代表性方言,其声调曲折性强、入声残留明显、连读变调规则复杂,为语音合成系统带来显著挑战。在部署基于Tacotron2WaveGlow的…...

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desk…...

解决 Claude Code 频繁封号与 Token 不足的替代方案

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决 Claude Code 频繁封号与 Token 不足的替代方案 对于依赖 Claude Code 进行代码生成与对话的开发者而言,服务中断和…...

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在游戏直播、教学演示或技术分享中,观众…...

UniVRM完整指南:Unity中VRM格式的7个实战技巧与高效配置方法

UniVRM完整指南:Unity中VRM格式的7个实战技巧与高效配置方法 【免费下载链接】UniVRM UniVRM is a gltf-based VRM format implementation for Unity. English is here https://vrm.dev/en/ . 日本語 はこちら https://vrm.dev/ 项目地址: https://gitcode.com/gh…...

ETS2LA自动驾驶插件:为《欧洲卡车模拟2》带来智能车道保持与模块化AI驾驶体验

ETS2LA自动驾驶插件:为《欧洲卡车模拟2》带来智能车道保持与模块化AI驾驶体验 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-A…...

Tidal-Media-Downloader:3分钟掌握终极Tidal音乐下载方案

Tidal-Media-Downloader:3分钟掌握终极Tidal音乐下载方案 【免费下载链接】Tidal-Media-Downloader Download TIDAL Music On Windows/Linux/MacOs (PYTHON/C#) 项目地址: https://gitcode.com/gh_mirrors/ti/Tidal-Media-Downloader 还在为无法随时随地畅享…...