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

做问卷赚钱的网站今日热搜榜排名

做问卷赚钱的网站,今日热搜榜排名,湖南疫情最新情况今天新增,百度蜘蛛抓取网站多个viewmodel之间的通信有多种方法,比如通过resposity将sharedviewmodel作为参数传递,进而完成数据通信,也可以通过一个公共的全局变量进行数据传递。本文中提供一个以singleton单例的方式进行。 1.创建单例的resposity类。 class testRes…

       多个viewmodel之间的通信有多种方法,比如通过resposity将sharedviewmodel作为参数传递,进而完成数据通信,也可以通过一个公共的全局变量进行数据传递。本文中提供一个以singleton单例的方式进行。

1.创建单例的resposity类。

class testResposity private constructor(){//创建单例companion object{private var INSTANCE:testResposity?=null@Synchronizedfun getInstance():testResposity{if(INSTANCE==null)INSTANCE = testResposity()return INSTANCE!!}}//以下为业务逻辑val data = MutableStateFlow<String>("")val _counter1 = MutableStateFlow<Int>(0)val counter1 = _counter1.asStateFlow()fun updateCounter1(){_counter1.value++if(_counter1.value==2){data.value = "second"}else if(_counter1.value == 3){data.value = "third"}}
}

2.创建测试的viewmodel1

class TestViewModel1:ViewModel() {//获取resposity单例private val resposity = testResposity.getInstance()val data = resposity.data//调用测试逻辑public fun updateCounter1(){resposity.updateCounter1()}
}

3.按照相同的方式,创建测试的viewmodel2

class TestViewModel2:ViewModel() {private val resposity = testResposity.getInstance()val counter = resposity.counter1public fun updateCounter(){resposity.updateCounter1()}
}

4.测试的compose

@Composable
fun TestViewModelScreen(modifier: Modifier = Modifier,viewModel:TestViewModel1,viewModel2:TestViewModel2,onClicked:()->Unit,onClicked2:()->Unit) {val counter1 = viewModel.data.collectAsState()val counter2 = viewModel2.counter.collectAsState();Column {Text(text = counter1.value.toString())Text(text = counter2.value.toString())Button(modifier = Modifier,onClick = onClicked) {Text(text = "更新")}Button(modifier=Modifier,onClick = onClicked2) {Text(text="更新2")}}}

5.Activity中调用代码

var viewModel1=ViewModelProvider(this).get(TestViewModel1::class.java)var viewModel2 = ViewModelProvider(this).get(TestViewModel2::class.java)TestViewModelTheme {Surface(modifier = Modifier.fillMaxSize(),){Row (modifier = Modifier.fillMaxSize(),verticalAlignment = Alignment.CenterVertically,horizontalArrangement = Arrangement.Center){TestViewModelScreen(viewModel = viewModel1,viewModel2=viewModel2,onClicked = {viewModel1.updateCounter1()},onClicked2 = {viewModel2.updateCounter()})}}}

6.结果

通过两个不同的viewModel,可以对仓库类中的一个变量进行操作,并同步可显示双方操作结果。

http://www.dtcms.com/wzjs/459170.html

相关文章:

  • 2013电子商务网站建设考试什么叫做seo
  • 单页wordpress主题北京网站优化方式
  • 网上做平面设计的网站网络推广是以企业产品或服务
  • wordpress 字体设置焦作网站seo
  • 域名备案怎么办理流程seo排名点击手机
  • wordpress附件下载失败自媒体seo是什么意思
  • 旺旺号查询网站怎么做百度网盘app下载安装
  • wordpress收集访问量郑州官网网站推广优化
  • 米趋外贸网站建设太原seo外包公司
  • 南通网站优化手机百度识图网页版入口
  • 如何进行网站分析十大经典事件营销案例
  • 法治与安全做讲座网站友情链接有用吗
  • 描述政府网站网站建设seo优化网站的手段
  • 高端品牌男鞋有哪些东莞市网络seo推广企业
  • 高端 网站建设东莞关键词排名快速优化
  • 吉林做网站黑龙江头条今日新闻
  • 晋中住房保障和城乡建设局网站廊坊关键词排名优化
  • 做农家乐网站seo顾问服务咨询
  • 网站关键字优化软件百度云手机app下载
  • 怎么用phpcmf做网站保定seo推广外包
  • .cn域名注册官方网站网站及推广
  • 2级a做爰片免费网站郑州网站设计有哪些
  • 大连网站制作仟亿科技网店产品seo如何优化
  • 点击app图标进入网站怎么做站长之家域名查询
  • 营销网站建设实训总结搜索推广竞价托管哪家好
  • 做网站需要用到什么技术久久seo正规吗
  • 购买网站服务器近期国际新闻20条
  • 贵州网站制作公司电话电脑培训学校学费多少
  • 保定市网站建设亚洲7号卫星电视
  • 运营电商湖南有实力seo优化哪家好