首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在其中一个属性更改后重新生成颤振Widget

在其中一个属性更改后重新生成颤振Widget
EN

Stack Overflow用户
提问于 2021-03-15 06:37:23
回答 1查看 1.2K关注 0票数 0

如何在某个属性值发生更改后立即强制Widget重新生成?一些伪代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Live extends StatefulWidget {

  String name;
Live(this.name);

  @override
  _LiveState createState() => _LiveState();
}

class _LiveState extends State<Live> {

 // some turbo logic I don't want to move to Live class
 ..

  @override
  Widget build(BuildContext context) {
    return Column(childrens: [
    Text(widget.name),
    Card(content calculated based on turbo logic),
    ]
      
    );
  }
}

String name属性更新(基于父级的setState调用)时,所有事情都是实时发生的。更改将立即反映在文本小部件中。该值是立即可见的,因为我使用的是widget.name调用,所以在built()方法中,我使用的是来自Live类的属性,而不是状态。

问题是,另一个封装在Card中的小部件被计算在标记为// some turbo logic I don't want to move to Live class的位置。由于这个事实,当我想在本节中看到更新时,我需要切换选项卡,然后切换到设置,然后返回到Live选项卡,查看与Card内容相关的更改。我相信它再次触发了build()方法。

戈拉斯:

  • 在Live中更新name值后,状态小部件立即重新构建。
  • 不要将turbo logic移动到Live,并将其保留在状态类中。
EN

回答 1

Stack Overflow用户

发布于 2021-03-15 06:59:52

首先,您的StatefulWidget应该是不可变的,因此只包含不可变字段。我建议您将name字段移到State中,并使用setter将其更改。设置程序应该调用setState(),这将导致所需的重建。

有关更多信息,请参见本导论 --特别是“鸟”示例代码,以了解如何编写setter代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66640023

复制
相关文章
jQuery中不同元素的作用
removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选元素进行添加/删除类的切换操作 css() - 设置或返回样式属性
用户7718188
2021/10/07
1.7K0
jQuery 替换元素中class的方法
实现方法: ① 使用removeClass()删除旧的class ② 使用addClass()添加新的class ③ 使用attr 直接替换原class ④ 使用 toggleClass 有就移除,没有就添加
青梅煮码
2023/01/16
2.3K0
angularJS学习之路(十七)---自定义指令
指令简单理解  就是   在元素上运行的函数    (这个函数有个名称,或者叫属性,比如id 等这种形式)
wust小吴
2019/07/08
7050
jquery中获取元素的几种方式小结
1 从集合中通过指定的序号获取元素 <div> <p>0</p> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> </div> <script type="text/javascript"> jQuery(function(){ $("p").eq(2).css("color","red"); $("p").eq(3).css("color","red"); }) </script> 2
用户7657330
2020/08/14
1.9K0
iOS中的预编译指令的初步探究
开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩;奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了??别不服,先听我说完,先把你的砖头放下。狭义的仿生学是外形上仿生嘛,其实广义上仿生学还可以原理的仿生,构造的仿生,性能的仿生阿拉巴拉……,计算机(这里我狭义
王大锤
2018/05/17
2.3K0
jQuery判断当前元素是第几个元素&获取第N个元素
如果我们点击任何一个li标签,想知道当前点击的是第几个li标签,可以使用下面的代码:
仙士可
2019/12/19
3.3K0
accept 函数_accept函数是阻塞的吗
服务器要做的最普通的事情之一就是接受来自客户端的连接请求。在套接字上使用重叠I/O接受连接的惟一API就是AcceptEx()函数【注一】。有趣的是,通常的同步接受函数accept()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字通过参数传给AcceptEx()。以下是一小段典型的使用AcceptEx()的伪代码:
全栈程序员站长
2022/11/10
1.2K0
jQuery 元素操作
jQuery 元素操作主要讲的是用jQuery方法,操作标签的遍历、创建、添加、删除等操作。
星辰_大海
2020/10/09
2.7K0
jQuery 元素操作
jquery 元素尺寸
从上面的示例可以看到,使用width()和height()分别可以获取元素div的width和height的值。
Devops海洋的渔夫
2019/06/02
1.6K0
解决JQuery中的ready函数冲突
jQuery确实是一个提高前端开发效率的好框架(虽然很多大牛们都说它效率不咋地),但是用好它有时候并不容易,也许你也遇到过以下情况: 一个aspx页面通常可以包含其它ascx控件,如果在多人协同开发的情况下:程序员小张在控件A.ascx中使用了 $().ready(function{}),而程序员小王又在控件B.ascx中也使用了ready函数,程序员小李在做页面时,把A.ascx,B.ascx都拖到自己的页面中,然后在页面中也需要用到$().ready函数,这下好了: 虽然jQuery本身的设计还算不错,
菩提树下的杨过
2018/01/22
1.6K0
jquery nextsibling_javascript中预编译
JavaScript中的nextSibling和previousSibling和作用类似于jquery的next()和prev(),都是获取下一个/上一个同胞元素,如果下一个同级节点不存在,则此属性返回值是null。但是具体的使用中还是有差异的,如果注意。就会引起错误
全栈程序员站长
2022/09/20
5940
jquery nextsibling_javascript中预编译
jQuery 元素操作
​ jQuery 元素操作主要讲的是用jQuery方法,操作标签的遍历、创建、添加、删除等操作。
梨涡浅笑
2022/05/08
1.9K0
jQuery 元素操作
jQuery 元素操作主要讲的是用jQuery方法,操作标签的遍历、创建、添加、删除等操作。
清出于兰
2020/10/26
1.4K0
jQuery 元素操作
jquery操作元素的位置
.offset()   在匹配的元素中,获取第一个元素的当前坐标,或设置每一个元素的坐标,坐标相对于文档。   .offset() 这个不接受任何参数。     var offset = p.offset(); //获取到这个元素的位置       p.html( "left: " + offset.left + ", top: " + offset.top ); .offset.left 元素距左面的距离 .offset
用户1197315
2018/01/19
3.4K0
jquery等待特定元素加载再执行相关函数
默认是执行100次,每次间隔20毫秒,最长等待时间是2000毫秒(2秒),如果要一直等待到元素出现,可以将100改成任意负数。
怪兽
2022/10/04
1.4K0
jquery中dom元素的attr和prop方法的理解
  在编写使用高版本[ jQuery 1.6 开始新增了一个方法 prop()]的jquery插件进行编写js代码的时候,经常不知道dom元素的attr和prop方法到底有什么区别?各自有什么应用场景,什么时候使用attr方法更合适?什么时候使用prop方法更加方便?今天我就结合自己平常的使用来谈谈这些问题以及我个人的理解。
阿豪聊干货
2018/08/09
1.3K0
jquery判断数组中是否包含某个元素的值_java判断元素是否在数组中
如果arry数组里面存在”C#” 这个字符串则返回该字符串的数组下标,否则返回(不包含在数组中) -1
全栈程序员站长
2022/11/02
5.8K0
JQuery中bind和unbind函数
测试: 页面代码: <body> <input type="button" name="aaa" value="点击我"> <input type="checkbox" name="checkbox1"> </body> JQuery代码: $().ready(function(){ for (var i = 0; i < 3; i++) { $("input[type='button']").click(function(){ alert("aaaa"); }); } } alert("aaaa")会执行三次,在事件嵌套事件中,不希望看到这样的情况,需要把上层事件禁用,此时可引入bind和unbind函数解决。 引入函数: for (var i = 0; i < 3; i++) { $("input[type='button']").unbind("click"); $("input[type='button']").bind("click", function(){ alert("aaa"); }); } alert("aaa");仅执行一次。 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数 unbind() 方法移除被选元素的事件处理程序。能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。 event 是事件类型,类型包括:blur、flcus、load、resize、scroll、unload、click、dblclikc、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup和error等,当然也可以是自定义名称。 data 为可选参数,作文event.data属性值传递给事件对象的额外数据对象。 function 是用来绑定的处理函数。 语法: $(selector).bind(event,data,function) // event 和 function 必须指出下面些段代码做说明: 例1:删除p的所有事件 $("p").unbind(); 例2:删除p的click事件 $("p").unbind("click"); 例2:删除p元素click事件后出发的test函数 和 添加p元素click事件后触发的test函数 $("p").unbind("click",test);$("p").bind("click",test); 注意:要定义 .bind() 必须指明什么事件和函数现在来看个简单的demo ,整个div有一个点击收起展开的事件,如果想要点击链接但是不触发div的点击事件,需要在触发链接的时候把div的点击事件禁用,这里我用到链接mouseenter事件是unbind删除div的事件。这里还不算完,这时候只要鼠标进入链接区域,div的点击事件就删除了,我们还需要加入鼠标移出链接区域的时候恢复div点击事件。代码如下: 12345678910$(function(){ var Func = function(){ $(".com2").toggle(200); } $(".test").click(Func) $(".test a").mouseenter(function(){ $(".test").unbind(); //删除.test的所有事件 }); $(".test a").mouseleave(function(){ $(".test").bind("click",Func); //添加click事件 }); });event 是事件类型 … function 是用来绑定的处理函数。 部分内容来自http://www.dearoom.com/blog/详解unbind和bind/http://www.dearoom.com/blog/事件捕获事件冒泡和阻止事件冒泡/
一个会写诗的程序员
2018/08/17
1.1K0
jQuery - 添加元素
jQuery append() 方法在被选元素的结尾插入内容(仍然在该元素的内部)。
陈不成i
2021/07/22
2.6K0
jQuery操作DOM元素
作为一个后端程序员,也是要和前端页面打交道的。最常见的场景莫过DOM元素操作和前端页面使用AJAX向服务器发送请求。 实现上述两个功能当然可以使用原生js来完成,但在实际开发过程中很少这样做,通常会使用一些别人封装好的js库来辅助我们的工作,jQuery就是这些辅助库中的一员。
雪飞鸿
2018/09/05
2.7K0

相似问题

角指令可以编译ng单击元素吗?

13

角的编译函数是异步的吗?

12

元素指令编译过程中角属性指令的传播

14

用jQuery访问角指令中的元素

13

当使用jq追加方法时,角编译是指令吗?

10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文