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

做动态网站的软件线上电脑培训班

做动态网站的软件,线上电脑培训班,用discuz做门户网站,有免费的云服务器吗多个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/12671.html

相关文章:

  • shopex网站搬家智能营销系统
  • 低调与华丽wordpress下载被逆冬seo课程欺骗了
  • 玉儿做春梦网站关键词优化的原则
  • 在哪能学到网站建设专业微商推广哪家好
  • 网页视频下载软件免费版seo外链在线工具
  • 那些门户网站的官网做的好百度榜单
  • 武进网站建设价格推广竞价托管费用
  • qq空间认证的网站后台根目录ip子域名大全
  • 做网站需要注册公司吗短视频推广平台有哪些
  • 卖游戏币网站制作seo实战密码第三版
  • 免费查企业电话网站重庆seo建站
  • 网站建设经费方案互联网怎么打广告推广
  • 樱花草在线观看播放免费视频百度河南郑州网站推广优化
  • 华为公司网站建设分析评价各行业关键词
  • 个人网站cms2345网址导航 中国最
  • 电商网站建设需求小红书seo排名优化
  • 个人做房产网站sem培训班学费哪个好
  • 武汉单位做网站平台推广策略都有哪些
  • 网站建设如何接单做网站哪个公司最好
  • 做中英双语切换的网站河南省网站
  • 做合成照片的国外网站武汉网络推广
  • 会做网站的公司在线优化seo
  • 手机网站页面范例平台宣传推广方案
  • 企业网站网页设计有哪些廊坊seo排名优化
  • 网站icp备案信息百度风云榜小说排行榜
  • 湖北网站建设怎样百度搜索引擎营销案例
  • 旅游景区网站模板靠谱seo外包定制
  • 大连市建委培训官方网站百度贴吧网页版入口
  • 网站建设线框图seo的全称是什么
  • 学校网站建设策划聚名网官网