当前位置: 首页 > 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/577511.html

相关文章:

  • wordpress站点名没有更改如何做网站不被查
  • 企业建设营销型网站有哪些步骤网站建设平台简介
  • 西安哪个公司可以做网站网站建设与网站开发
  • 合肥搭建网站中国全面开放入境
  • 跨平台 移动网站开发绍兴建设局网站
  • 做论坛网站看什么书wordpress定义字体颜色
  • html5网站开发实例如何查公司的工商注册信息
  • 康复中心网站建设方案wordpress删除文章div
  • 网站添加白名单wordpress 设置版权信息
  • 淄博网站备案公司众鱼深圳网站建设
  • 常宁市城乡和住房建设网站wordpress 微网站模板
  • 广州花都区网站建设网站关键词进前三
  • 辛集手机网站建设服装高级定制
  • 巢湖网站建设公司wordpress页面路径
  • 江西建设单位网站wordpress防止爆破
  • 提供网站建设报网页版word在线编辑
  • 怎样免费设计网站建设wordpress建站收录快
  • 网站建设案例分析题为企业做网站要向谁索要资料
  • 做模型的网站有哪些典当行网站源码
  • 自建站服务河南网站设计价格
  • wordpress应用微信支付福州百度关键词优化
  • 江苏景禾瑜博建设工程有限公司网站配置jsp网站开发环境
  • 网站建设试题源码资源官网
  • 数字媒体艺术与ui设计相关吗上海网站seoseodian
  • 西安专业网站开发联系电话网站城市分站是怎么做的
  • 网站开发人员工具种类wordpress后台加载慢
  • 个人网站设计大全做网站需要提供什么条件
  • 北京网站托管公司整站关键词排名优化
  • 电商网站建设课件全椒县城乡建设局网站
  • 云南云岭建设集团官方网站小程序开发代码