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

惠州网站建设哪家强互联网推广营销都选隐迅推

惠州网站建设哪家强,互联网推广营销都选隐迅推,wordpress栏目布局,wordpress 随机范围点击量一、需求 在显示界面中,数据变动,界面刷新是非常常见的操作,所以使用compose该如何实现呢? 二、remember、mutableStateOf的使用 我们可以借助标题的两个概念 remember、mutableStateOf来完成。这里先不写定义,定义…

一、需求

在显示界面中,数据变动,界面刷新是非常常见的操作,所以使用compose该如何实现呢?

二、remember、mutableStateOf的使用

我们可以借助标题的两个概念 remember、mutableStateOf来完成。这里先不写定义,定义看完也不是很明白,从例子中去学习,先看段code:

@Composable
fun AutoIncrementTest1() {var count = 0Row(modifier = Modifier.padding(20.dp),verticalAlignment = Alignment.CenterVertically) {Text(text = "$count",Modifier.padding(horizontal = 15.dp))Button(onClick = { count++ }) {Text(text = "auto-increment ")}}
}

这段代码是显示一个Text和一个Button,点击Button后,count变量自增,然后在Text中显示出来。

但是实际测试的时候,点击按钮Text显示数字是不会变化的,原因是 Compose 并未跟踪此变量更改。也就是说,这个变量不会触发界面的刷新。

为了解决上面的问题就可以使用 mutableStateOf 函数,来看下修改后的代码:

StateMutableState 是两个接口,它们具有特定的值,每当该值发生变化时,它们就会触发界面更新(重组)。

setContent {ComposeTestTheme {Surface(color = MaterialTheme.colors.background,) {AutoIncrementTest2()}}
}@Composable
fun AutoIncrementTest2() {var count = mutableStateOf(0)Row(modifier = Modifier.padding(20.dp),verticalAlignment = Alignment.CenterVertically) {Text(text = "${count.value}",Modifier.padding(horizontal = 15.dp))//用到的时候需要.value获取Button(onClick = { count.value++ }) {Text(text = "auto-increment ")}}
}

我们把变量改成使用mutableStateOf函数,但是我点击按钮,Text的显示依然不会改变,为啥呢?

原因是在count改动的时候,Surface接收的这个Composable函数就会重绘,即将这个AutoIncrementTest2函数从头调用一遍,每次调用时候,走到第一行语句,count就又赋值为0,所以看起来就是没有改变,依然是0。

在这种情况下,假如还想记住上一次变量值,就要用到remember,来看下修改后的代码:

setContent {ComposeTestTheme {Surface(color = MaterialTheme.colors.background,) {AutoIncrementTest2()}}
}@Composable
fun AutoIncrementTest3() {var count = remember {mutableStateOf(0);}Row(modifier = Modifier.padding(20.dp),verticalAlignment = Alignment.CenterVertically) {Text(text = "${count.value}",Modifier.padding(horizontal = 15.dp))//用到的时候需要.value获取Button(onClick = { count.value++ }) {Text(text = "auto-increment ")}}
}

这时候,在点击按钮的时候,Text上显示的就是自增的数字。

您可以将 remember 视为一种在组合中存储单个对象的机制,就像私有 val 属性在对象中执行的操作一样。

当然我们还可以优化下,上面每次使用count的时候,都需要用.value来获取,这里再引入一个关键字by,修改后的代码如下:

setContent {ComposeTestTheme {Surface(color = MaterialTheme.colors.background,) {AutoIncrementTest2()}}
}@Composable
fun AutoIncrementTest3() {var count by remember {mutableStateOf(0);}Row(modifier = Modifier.padding(20.dp),verticalAlignment = Alignment.CenterVertically) {Text(text = "${count}",Modifier.padding(horizontal = 15.dp))Button(onClick = { count++ }) {Text(text = "auto-increment ")}}
}

使用by实现了属性委托,就是属性的 setget 的操作交给另一个对象器完成。我们可以间接读取 count 并将其设置为可变,而无需每次都显式引用 MutableStatevalue 属性。

总结:

  • mutableStateOf: 表明某个变量是有状态的,对变量进行监听,当状态改变时,可触发重绘。
  • remember :记录变量的值,使得下次绘制执行的时候,不会再次进行初始化。

三、rememberSaveable 的使用

remember 函数仅在可组合项包含在组合中时起作用。旋转屏幕后,整个 activity 都会重启,所有状态都将丢失。当发生任何配置更改或者进程终止时,也会出现这种情况。

可以使用 rememberSaveable,而不使用 remember。这会保存每个在配置更改(如旋转)和进程终止后保留下来的状态。

 var shouldShowOnboarding by rememberSaveable { mutableStateOf(true) }

运行应用,旋转屏幕,更改为深色模式,或者终止进程。除非您之前退出了应用,否则系统不会显示初始配置屏幕。

参考文章
Compose中的remember和mutableStateOf
Google官方教程

http://www.yayakq.cn/news/235451/

相关文章:

  • 龙门惠州网站建设做导购网站有哪些
  • php企业网站 源码品牌网站建设渠道
  • 功能类网站狗贩子怎么做网站卖狗
  • 南京做网站seowordpress怎么添加接口
  • 网站建设项目安排计划表东道设计公司官网招聘
  • 石家庄晋州网站建设wordpress贴心插件
  • 做网站 商标分类郑州男科医院排名哪家医院好
  • 中信建设 官方网站上海专业的网络推广
  • 微网站免费制作静态网站seo怎么做
  • 网站建网站建设公司做网站的空间是什么
  • 临沂专业网站建设公司电话网络营销是什么 能做什么
  • dede网站改成自适应淄博百度
  • 四川住房和城乡建设九大员网站福州快速优化排名
  • 学网站建设能赚钱吗1小时赚8000元游戏
  • 石家庄网站开发建设电商网站开发工具
  • 新手做网站的几个必要步骤快速网站排名提升
  • 网站访问流量怎么赚钱零库存品牌童装杭州网站建设
  • 怎么做网站推广临沂软装设计公司介绍
  • 凡客建站手机版下载婚恋网站建设
  • 宁波专业定制网站建设app哪个网站开发好
  • 公众号 商城 网站开发淄博网络宣传
  • 台州千寻网站建设公司招聘网站可以做劳务派遣吗
  • 专业的手机网站建设电子商务网站建设实训总结
  • 网站推广的途径和方法刷关键词排名seo软件软件
  • 定制网站案例深圳便宜建网站
  • 网站开发技术文档 范本自己的品牌怎么推广加盟
  • 专业写作网站网站模块建设建议
  • 手机商城网站案例响应式大学网站
  • 1个空间做2个网站吗客户网站开发全流程图
  • 建站流程网站上线html5网站开发软件