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

织梦网站每天被挂马贵州省住房和建设厅网网站首页

织梦网站每天被挂马,贵州省住房和建设厅网网站首页,浙江的健康码小程序叫什么,简洁公司网站源码文章目录 前言传参流程实例说明普通方式传值定义接受参数格式定义接受参数类型获取参数传入参数传参和接受参数效果图 结合 ViewModel 传递参数定义ViewModel在 navigation 定义 ViewModel 实例#xff0c;并且传入 LoginScreen传入输入框中的值#xff0c;并且跳转传值获取值… 文章目录 前言传参流程实例说明普通方式传值定义接受参数格式定义接受参数类型获取参数传入参数传参和接受参数效果图 结合 ViewModel 传递参数定义ViewModel在 navigation 定义 ViewModel 实例并且传入 LoginScreen传入输入框中的值并且跳转传值获取值 Parcelable 传递参数定义一个数据类自定义定义一个通用的NavType设置一个接受参数的占位符传递参数接收参数 总结 前言 在 Compose 中使用 Navigation 组件进行页面跳转时可以使用 NavController 和 NavHost 来传递参数。 传参流程 使用 NavController 传递参数 NavController 是 Navigation 组件的核心类用于控制页面导航。你可以在 NavController 中使用 navigate() 方法传递参数。这些参数可以在目标页面中通过参数名称获取并使用。 例如 navController.navigate(SecondScreen) { // 传递参数 arguments remember { mutableStateOf(key) } arguments?.putString(key, value) }在目标页面中可以通过 arguments 参数获取传递的参数 val value arguments?.getString(key) ?: default value使用 NavHost 传递参数 在 NavHost 中可以使用 composable() 函数定义导航路径和参数。在 composable() 函数中可以指定传递的参数和接收参数的方法。 例如 NavHost(navController navController, startDestination MainScreen) { composable(MainScreen) { MainScreen(arguments listOf(value1, value2)) } composable(SecondScreen) { SecondScreen(arguments listOf(value3, value4)) } }在目标页面中可以通过 arguments 参数获取传递的参数 val values arguments[0] arguments[1] // value1value2 for MainScreen, value3value4 for SecondScreen这些是在 Compose 中使用 Navigation 组件进行参数传递的一些常见方法。具体实现可能因不同的平台、框架或技术而有所差异。 实例说明 下面使用登录页面传入用户名和密码到详情页面做为讲解案例 普通方式传值 就是通过 状态State 控制变量的传值 定义接受参数格式 object Detail:Screen(route $DETAIL?id{id},name{name},password{password})注$DETAIL?id{id},name{name},password{password} 改为 $DETAIL/id{id},name{name},password{password}。将 ? 改为 / 如果没有传值程序就会崩溃/ 默认是必填的? 默认是选填的 定义接受参数类型 composable(route Screen.Detail.route,arguments listOf(navArgument(DETAIL_ARGUMENT_ID){type NavType.IntTypedefaultValue 0},navArgument(DETAIL_ARGUMENT_NAME){type NavType.StringTypedefaultValue name is null},navArgument(DETAIL_ARGUMENT_PASSWORD){type NavType.StringTypedefaultValue password is null}) )const val DETAIL_ARGUMENT_ID id const val DETAIL_ARGUMENT_NAME name const val DETAIL_ARGUMENT_PASSWORD password获取参数 composable(route Screen.Detail.route,...){navBackStackEntry -val id navBackStackEntry.arguments?.getInt(id) ?: 0val name navBackStackEntry.arguments?.getString(name) ?: val password navBackStackEntry.arguments?.getString(password) ?: DetailScreen(id,name,password,navController navController) }传入参数 object Detail:Screen(route ...){fun passIdAndName(id:Int 0,name:StringtanZuAi,password:StringtanZuAi123):String{return $DETAIL?id${id},name${name},password${password}} }navController.navigate(Screen.Detail.passIdAndName())传参和接受参数效果图 至此基本的传参就已经可以实现了 结合 ViewModel 传递参数 就是通过结合 ViewModel 传参 定义ViewModel LoginViewModel.kt class LoginViewModel: ViewModel(){var nameText by mutableStateOf()fun onTextChanged(newString:String){nameText newString} }在 navigation 定义 ViewModel 实例并且传入 LoginScreen navigation(startDestination Screen.Login.route,route AUTHENTICATION_ROUTE){composable(route Screen.Login.route){val loginViewModel viewModelLoginViewModel()LoginScreen(loginViewModel,navController navController)}composable(route Screen.Signup.route){SignUpScreen(navController navController)} }传入输入框中的值并且跳转传值 LoginScreen.kt //定义ViewModel 参数 fun LoginScreen(loginViewModel:LoginViewModel viewModel(), navController: NavController)//注释掉状态定义的变量值 //var textName by remember { mutableStateOf() } //监听输入框的值并且改变viewmodel变量的值 OutlinedTextField(value loginViewModel.nameText,onValueChange {loginViewModel.onTextChanged(it)},label { Text(text stringResource(id R.string.app_user_name)) },modifier Modifier.fillMaxWidth() )//传值给name navController.navigate(Screen.Detail.passIdAndName(name loginViewModel.nameText))获取值 Screen.kt object Detail:Screen(route $DETAIL?id{id},name{name},password{password}){fun passIdAndName(id:Int 0,name:StringtanZuAi,password:StringtanZuAi123):String{return $DETAIL?id${id},name${name},password${password}} } HomeNavGraph.kt val name navBackStackEntry.arguments?.getString(name) ?: DetailScreen(id,name,password,navController navController)DetailScreen.kt Text(modifier Modifier.clickable {},text Detail_Name: $name ,color Color.Red,style MaterialTheme.typography.bodyLarge)至此结合 ViewModel 传值流程已经讲完了 Parcelable 传递参数 通过Parcelable传递一个对象数据 定义一个数据类 Parcelize data class EmailModel(val id:Int,var name:String,var password:String):Parcelable自定义定义一个通用的NavType inline fun reified T : Parcelable createParcelableNavType(isNullableAllowed: Boolean false): NavTypeT {return object : NavTypeT(isNullableAllowed) {override val name: Stringget() SupportParcelableoverride fun get(bundle: Bundle, key: String): T? { //从Bundle中检索 Parcelable类型return bundle.getParcelable(key)}override fun parseValue(value: String): T { //定义传递给 String 的 Parsing 方法return Gson().fromJson(value, T::class.java)}override fun put(bundle: Bundle, key: String, value: T) { //作为 Parcelable 类型添加到 Bundlebundle.putParcelable(key, value)}} }navArgument(jsonParcelable){type createParcelableNavTypeEmailModel() }设置一个接受参数的占位符 object Detail:Screen(route $DETAIL?key{jsonParcelable})传递参数 fun passIdAndName(id:Int 0,name:StringtanZuAi,password:StringtanZuAi123):String{val jsonParcelable Gson().toJson(EmailModel(id,name, password))return $DETAIL?key${Uri.encode(jsonParcelable)} }接收参数 val emailModel navBackStackEntry.arguments?.getParcelableEmailModel(jsonParcelable)emailModel?.apply {DetailScreen(id,name,password,navController navController) }注至此通过 Parcelable 传递对象数据就讲完了 总结 普通方式传值$DETAIL?id{id},name{name},password{password}ViewModel传值继承 ViewModel() 类在类中定义状态变量通过监听变量值变化获取变量值Parcelable传值通过 Gson().toJson() 转换对象传递值
http://www.hkea.cn/news/14444155/

相关文章:

  • 高端定制网站设计公司网站如何定位
  • 长沙网站公司自媒体运营从入门到精通
  • 如何做网站结构优化艺术设计与制作
  • 宁波制作网站软件蛋糕网站源码
  • 自建网站外贸怎么做深圳专业的网站建设
  • 医院网站建设策划书仿站小工具下载
  • 怎么做 废旧回收网站做的网站怎么放到域名
  • 电子商务网站建设与管理教材企业在建设银行网站怎么发工资
  • 精品课程网站建设现状wordpress 维护页面
  • 兰州网站建设招聘最新网站建设营销模板
  • 标志设计欣赏网站wordpress文章打开慢
  • 网站建设定金做什么会计分录网站推广的优势
  • 哪些网站是响应式有哪些网站做自建房设计
  • 信誉好的东莞网站建设会员管理系统功能介绍
  • 宝应123网站建设网wordpress图片分离
  • 博客网站需要的功能广州招投标交易中心
  • 上海开发公司企业seo关键字优化
  • 免费做爰小说网站wordpress本地后台打开卡住
  • 济南专业做网站的公司哪家好网站虚拟空间作用
  • 靖江做网站的关键词查找的方法有以下几种
  • 网站开发程序开发sae wordpress 4.4
  • 建设银行手机银行网站用户名是什么原因侧边导航条wordpress
  • 安徽茶叶商城网站建设外贸公司怎么运作
  • 如何做网站实名认证特价流量网站
  • 什么叫网站优化北京正规网站建设比较
  • 提高审美的网站推荐中信建设有限责任公司电话
  • 东圃手机网站建设电话微信广点通广告平台
  • 阿里云建站费用wordpress国际化
  • 网站域名 空间申请智能家居网站建设方案
  • 昆明网络建站公司微商城分销平台上线