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

有网址和关键词就能刷网站排名网络服务设备有哪些

有网址和关键词就能刷网站排名,网络服务设备有哪些,英文网站建设图片,刷关键词排名seo文章目录 前言传参流程实例说明普通方式传值定义接受参数格式定义接受参数类型获取参数传入参数传参和接受参数效果图 结合 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/14374248/

相关文章:

  • 济南网站假设推广网页网站自做全搞定
  • 深圳专业营销网站制作建筑设计公司logo
  • 优秀毕业设计网站设计网络营销具有哪些优势和吸引力
  • 优秀的设计网站有哪些内容珠海网站建设防
  • 成都网站建设桔子科技html5软件安装视频
  • 江西建设职业技术学院招生信息网站wordpress图片无法显示
  • asp.net 网站发布乱码问题wordpress开发+文档下载
  • wordpress给公司建站wordpress 专栏页面
  • 绵阳网站建设策划内容wordpress ftp wp-config.php
  • 电子商务网站建设与运营方向上海网站建设百度推广公司哪家好
  • 厦门人才网个人登录国内好的seo
  • 中山h5网站建设如何利用模板做网站
  • 做银行流水网站ps做特效哪个网站好
  • 广告公司简介模板100字页面优化的方法有哪些
  • 企业解决方案参考网站小说网站用什么虚拟主机
  • 海南网站建设推广同步网站内容怎么做
  • 网站建设的优势是什么意思现在电商做的设计用的什么网站
  • 专业做网站建设制作服务网站建设策划书封面
  • 网站优化比较好的公司个人短信接口wordpress
  • 照明工业网站建设营业执照年检入口
  • 国内flash网站怎么做拍卖网站吗
  • 做一个公司网站的费用溧阳免费做网站
  • 大良营销网站建设咨询wap是什么意思歌词
  • 搭建网站需要多少钱做公司门户网站的重点
  • 网站设计与建设作业可以发布软文的平台
  • 上海电子商务网站建设公司网络营销策划书范文
  • 网站和后台建设网页页面设计代码
  • 深圳建设企业网站公司Nginx伪静态WordPress
  • 动易网站 价格用vuejs做的网站
  • 职业教育网站平台建设培训学校管理制度大全