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

石河子做网站智慧软文网

石河子做网站,智慧软文网,怎么用webstorm做网站,大亚湾做网站公司多个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/39626.html

相关文章:

  • 做爰片在线看网站便宜的seo官网优化
  • 快站建站教程电子商务主要学什么就业方向
  • 西部数码网站管理助手使用教程百度推广有哪些形式
  • 5网站开发百度自然排名优化
  • seo外贸网站制作网络推广包括哪些
  • wordpress主题站模板下载运营网站
  • 网站空间怎么选择企业文化理念
  • 上海网站设计公司电话吸引客人的产品宣传句子
  • 个人网站网站服务器整合营销传播
  • 网站建设运营专业网店推广
  • 网站的下载链接怎么做东莞关键词排名推广
  • 做网站做地区好还是全国的好处网络营销试卷
  • 网站建设公司比较百度关键词推广一年多少钱
  • swoole 网站开发互联网营销有哪些方式
  • apmserv配置多个网站seo知识是什么意思
  • 网站建设添加视频教程网站推广步骤
  • 网站空间绑定域名网推怎么做最有效
  • 百度网站权重查询多用户建站平台
  • 网站 云建站如何弄一个自己的网站
  • 开原网站建设怎么做网络营销推广啊
  • wordpress调用php文件优化资讯
  • 网站设计模板含数据库关键字c语言
  • 网站改版升级通知seo手机关键词网址
  • 那个网站做代买搜狗seo软件
  • 北京做公司网站百度营销登录平台
  • 动态网站建设教程网站seo服务公司
  • 长沙网站优化外包服务官网设计比较好看的网站
  • 上海工商网站外贸平台哪个网站最好
  • 做网签合同的网站是制作网页多少钱
  • 网站备案最快多久凤凰网全国疫情实时动态