仿门户网站多功能js相册画廊源码平面设计素材免费下载

张小明 2025/12/27 9:05:35
仿门户网站多功能js相册画廊源码,平面设计素材免费下载,外贸做什么产品出口好,做车品的网站#x1f9ed; 一、为什么需要 Navigation#xff1f; 在 Compose 中#xff0c;你不再用 Activity 跳转#xff0c;而是用 “声明式导航”#xff1a; 页面 Composable 函数跳转 改变当前“目的地”#xff08;Destination#xff09;返回 从导航栈弹出 Jetpack Comp… 一、为什么需要 Navigation在 Compose 中你不再用Activity 跳转而是用“声明式导航”页面 Composable 函数跳转 改变当前“目的地”Destination返回 从导航栈弹出Jetpack Compose Navigation 提供了一套统一、安全、带生命周期管理的导航方案。 二、快速上手3 步实现页面跳转第 1 步添加依赖build.gradleimplementationandroidx.navigation:navigation-compose:2.8.0第 2 步定义你的页面ComposableComposablefunHomeScreen(onNavigateToProfile:()-Unit){Column{Text(首页)Button(onClickonNavigateToProfile){Text(去个人页)}}}ComposablefunProfileScreen(){Text(个人中心)}第 3 步搭建导航图NavGraphComposablefunMyApp(){valnavControllerrememberNavController()NavHost(navControllernavController,startDestinationhome){composable(home){HomeScreen{navController.navigate(profile)}}composable(profile){ProfileScreen()}}}✅ 效果点击按钮 → 跳转到个人页✅ 返回键自动生效因为 NavHost 管理了返回栈 三、核心概念解析概念说明NavController导航控制器负责跳转、返回等操作NavHost导航容器定义所有页面目的地composable(route)声明一个页面route 是唯一标识如 “profile”导航栈Back Stack记录用户访问路径支持返回 记住rememberNavController()在 Composable 中获取 NavController每个 composable 块对应一个页面 四、页面传参Arguments场景从首页跳转到用户详情页传userId✅ 步骤 1定义带参数的 route// 使用 {id} 占位符composable(user/{userId}){backStackEntry-// 从 backStackEntry 获取参数valuserIdbackStackEntry.arguments?.getString(userId)?:unknownUserDetailScreen(userIduserId)}✅ 步骤 2跳转时传值// 在 HomeScreen 中Button(onClick{navController.navigate(user/123)})✅ 进阶类型安全传参推荐使用 Navigation Safe ArgsCompose 版 或 自定义解析。方法 A手动解析简单场景composable(user/{userId}){entry-valuserIdentry.pathSegments[1]// [user, 123]UserDetailScreen(userId)}方法 B使用 navArgs Parcelable更安全// 定义数据类ParcelizedataclassUserArgs(valid:String,valname:String):Parcelable// 跳转valargsUserArgs(123,Alice)navController.navigate(user?args${Uri.encode(args.toString())})// 不推荐复杂// 更推荐直接拼接基础类型navController.navigate(user/${userId}) 官方建议对于简单参数String/Int直接用 {param}复杂对象优先通过 ViewModel 共享而非导航传参。 五、返回并传递结果类似 startActivityForResultCompose Navigation 原生不支持返回结果但我们可以用 ViewModel Shared State 实现。✅ 推荐方案共享 ViewModel// 共享 ViewModelHiltViewModelclassSharedViewModelInjectconstructor():ViewModel(){privateval_selectedItemMutableStateFlowString?()valselectedItem_selectedItem.asStateFlow()funselectItem(item:String){_selectedItem.valueitem}}// 主页ComposablefunSelectHomeScreen(viewModel:SharedViewModel,onNavigateToSelectItem:()-Unit){valselectedItembyviewModel.selectedItem.collectAsState()Column{Text(选中数据${selectedItem})Button(onClickonNavigateToSelectItem){Text(选项选择)}}}// 选择页ComposablefunPickerScreen(viewModel:SharedViewModel,onNavigateBackHome:()-Unit){Column{Button(onClick{viewModel.selectItem(选项A)onNavigateBackHome()}){Text(选项A)}}}✅ 优点解耦、可测试、支持跨多层返回 注HiltViewModel 如果没有这个注解需要引入依赖implementation(androidx.hilt:hilt-lifecycle-viewmodel:1.3.0) 六、深度链接Deep Link让外部链接如网页、通知直接打开 App 内页面。步骤 1在 composable 中注册 deep linkcomposable(profile,deepLinkslistOf(navDeepLink{uriPatternmyapp://profile})){ProfileScreen()}步骤 2在 AndroidManifest.xml 中声明activityandroid:name.MainActivityintent-filteractionandroid:nameandroid.intent.action.VIEW/categoryandroid:nameandroid.intent.category.DEFAULT/categoryandroid:nameandroid.intent.category.BROWSABLE/dataandroid:schememyappandroid:hostprofile//intent-filter/activity效果点击 myapp://profile → 直接打开个人页 七、测试导航使用 createAndroidComposeRule navigate() 模拟跳转。TestfuntestNavigateToProfile(){composeTestRule.setContent{MyApp()}// 点击按钮composeTestRule.onNodeWithText(去个人页).performClick()// 验证是否显示个人页内容composeTestRule.onNodeWithText(个人中心).assertExists()}⚙️ 八、高级技巧1. 嵌套路由Nested Graph//TODO main是外层的路由路径,home是嵌套内开始展示UI的路由路径navigation(startDestinationhome,routemain){composable(home){HomeScreen()}composable(settings){SettingsScreen()}}composable(login){LoginScreen()}2. 自定义过渡动画composable(profile,enterTransition{slideInHorizontally(initialOffsetX{it})},exitTransition{slideOutHorizontally(targetOffsetX{-it})}){...}3. 拦截返回键BackHandler(enabledcanExit){navController.popBackStack()}✅ 十、最佳实践总结导航图集中管理所有 composable 定义在一个地方如 NavGraph.kt参数尽量简单用 ID 代替完整对象返回结果用共享状态避免 hack 式回调深度链接提前规划方便运营和分享动画适度使用提升体验但别过度 结语Jetpack Compose Navigation 不只是“页面跳转”而是一套完整的页面生命周期管理方案。它帮你处理了返回栈状态保存配合 rememberSaveable深度链接动画过渡测试支持只要掌握NavControllerNavHostcomposable三件套你就能构建任意复杂的 App 导航结构
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

资源网站排名优化seo南京cms建站

Pcx 终极指南:Unity 点云导入和渲染完整教程 【免费下载链接】Pcx Point cloud importer & renderer for Unity 项目地址: https://gitcode.com/gh_mirrors/pc/Pcx 想要在 Unity 中轻松处理和渲染点云数据吗?Pcx 是您的完美解决方案&#xff…

张小明 2025/12/26 18:15:38 网站建设

大型网站制作流程诸暨有哪些好网站制作公司

Linux网络防御、内核及模块管理全解析 1. Linux网络相关基础 1.1 记录数据传输前的处理阶段 记录数据在传输前会经过一系列阶段,其顺序如下: 1. 分段(Fragmentation) 2. 压缩(Compression) 3. 应用MAC(Applying MAC) 4. 加密(Encryption) 1.2 SSH协议的层次结…

张小明 2025/12/25 17:48:32 网站建设

网站开发顶岗报告宝应做网站

第一章:Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统中自动化任务的核心工具,它通过解释执行一系列命令来完成特定功能。编写Shell脚本时,通常以“shebang”开头,用于指定解释器路径。脚本起始声明 所有Shell脚本应以如下…

张小明 2025/12/25 17:47:58 网站建设

做平台网站怎么赚钱深圳网站开发公司h5

网络安全综合指南 在当今数字化时代,网络安全至关重要。本文将详细介绍网络安全中的多个关键方面,包括文件访问控制、网络服务管理、文件传输协议以及电子邮件安全等内容。 1. 文件访问控制相关文件 hosts.equiv 文件 :在本地系统中,若使用相同登录名,无需密码即可访问…

张小明 2025/12/25 17:47:25 网站建设

建设银行网站怎么下载地址视频拍摄收费标准

PowerShell 错误处理全解析 1. 错误处理基础 在 PowerShell 中,错误主要分为终止错误和非终止错误。对于不同类型的错误,有多种处理方法和工具。 1.1 Try/Catch/Finally 语句 使用方式 :从 PowerShell 2.0 开始引入,是处理终止错误的首选方式。使用时以 “Try” 关键字…

张小明 2025/12/25 17:46:49 网站建设

重庆网站建设帝维科技自己可以做小程序商城吗

FaceFusion开源项目获得Linux基金会支持 在AI生成内容(AIGC)浪潮席卷全球的今天,人脸替换技术早已不再是实验室里的概念玩具。从短视频平台上的“一键换脸”特效,到影视工业中用于修复经典老片、实现数字替身拍摄,这项…

张小明 2025/12/25 17:46:16 网站建设