草庐IT

Flutter setState重建整页效果

coder 2023-07-23 原文

我想知道 setState() 在 Flutter 中是如何工作的。

我有一个包含 ListView 和播放按钮的页面。当我按下按钮时,我调用 setState() 来更改按钮的图标。这会触发 ListView 重建它是项目的整个列表。

我是否应该将我的按钮包装在一个新的 StatefulWidget 中,以便重建按钮不会重建整个页面?或者 Flutter 是否足够聪明,可以弄清楚真正发生了什么变化并只重建这些小部件?如果字母是这样,它是如何工作的?我确定正在调用我的列表项的构建方法...

最佳答案

您应该对 Flutter 中的响应式编程Streams 了解更多。 响应式编程 是围绕 和监听器概念的架构。 Streams 允许您只重建一个特定的元素,效率更高!

来自 Google I/O '18 的视频:

https://www.youtube.com/watch?v=RS36gBEp8OI

很棒的帖子,解释了StreamsReactive Programming 的概念:

https://www.didierboelens.com/2018/08/reactive-programming---streams---bloc/

中等难度的方法,但值得学习!

祝你好运!

关于Flutter setState重建整页效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54609000/

有关Flutter setState重建整页效果的更多相关文章

  1. ruby - 在不同的文件中设置断点没有效果 - 2

    ruby调试器不会在我在与执行开始时不同的文件中设置的断点处停止。例如,考虑这两个文件,foo.rb:#foo.rbclassFoodefbarputs"baz"endend和main.rb:#main.rbrequire'./foo'Foo.new.bar我使用ruby-rdebug.\main.rb开始调试。现在,当我尝试使用b./foo.rb:4在另一个文件的特定行上设置断点时,我收到消息Setbreakpoint1atfoo.rb:4,但是当我cont时,程序执行到最后,调试器永远不会停止。但是,如果我在main.rb中的一行上打断,例如b./main.rb:3,或者一个方法,

  2. ruby-on-rails - Ruby表达式 '-'后留空格的效果 - 2

    今天我在我的Rails控制台中尝试了一些东西,这发生了,2.0.0p247:009>Date.today-29.days=>Fri,07Feb20142.0.0p247:010>Date.today-29.days=>Thu,09Jan2014我很困惑。我可以看到我缺少一些基本的东西。但这让我印象深刻!谁能解释为什么会这样? 最佳答案 实际发生的是这样的:Date.today(-29.days)#=>Fri,07Feb2014today有一个名为start的可选参数,默认为Date::ITALY。Anoptionalargument

  3. Unity 血条及“掉血”缓冲效果 - 2

     视频教程:https://www.bilibili.com/video/BV1WJ411778C/?spm_id_from=333.999.0.0&vd_source=4a4c35da6aef7094d5990c213c39aa09使用素材(推荐使用GitZipforgithub下载):https://github.com/zheyuanzhou/Youtube-Unity-Tutorial/tree/master/EP45_Health%20Bar/Sprites效果如下图所示:首先在场景中创建一个新的Canvas,并命名为HeathBar,并创建三个Image作为前者的子物体,分别命名为

  4. UnityShader(六)透明效果 - 2

    一、如何实现透明效果在Unity中实现透明效果的方式有两种,其一是透明度测试,其二是透明度混合。透明度测试:这种方式不需要关闭深度写入,且实现机制非常简单粗暴。只要一个片元的透明度不满足条件(比如小于某个值),则该片元会被直接舍弃,否则就按照不透明物体的处理方式来处理。它产生的效果要么是完全不透明,要么是完全透明,并不是真正的半透明效果。透明度混合:这种方式会使用当前片元的透明度作为混合因子,与颜色缓冲中的颜色进行混合。这就需要关闭深度写入。而关闭深度写入意味着我们需要非常小心物体的渲染顺序,否则可能出现渲染问题。为什么要关注渲染顺序在之前的Shader中我们并没有关心过物体渲染顺序的问题。这

  5. ruby - 如何为所有已安装的 gem 重建 rdoc? - 2

    我在多个位置安装了多个gem。生成/重新生成的困难/简单方法是什么:所有这些已安装的gem的rdoc,一次全部?所有这些已安装的gem的yardoc,一次全部? 最佳答案 你试过其中之一吗?gemrdoc--allgemrdoc--all--overwrite 关于ruby-如何为所有已安装的gem重建rdoc?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3152857/

  6. ruby - 在 Ruby 中卡住 Symbols 和 Numbers 的用途或效果是什么? - 2

    在Ruby1.9中你可以有Fixnum,Float,和Symbol未卡住或卡住的值:irb(main):001:0>a=[17,42.0,:foo];a.map(&:frozen?)=>[false,false,false]irb(main):002:0>a.each(&:freeze);a.map(&:frozen?)=>[true,true,true]我了解卡住字符串、数组或其他可变数据类型的实用性。然而,据我所知,Fixnum,Symbol,和Float实例从一开始就是不可变的。是否有任何理由卡住它们(或者Ruby不会报告它们的任何原因frozen?请注意,在Ruby2.0中Fi

  7. 《安富莱嵌入式周报》第301期:ThreadX老大离开微软推出PX5 RTOS第5代系统,支持回流焊的自焊接PCB板设计,单色屏实现多级灰度播放视频效果 - 2

    往期周报汇总地址:嵌入式周报-uCOS&uCGUI&emWin&embOS&TouchGFX&ThreadX-硬汉嵌入式论坛-PoweredbyDiscuz! 祝大家开工大吉视频版:https://www.bilibili.com/video/BV1GT411o7zr1、ThreadX老大离开微软,开发的第5代RTOS系统PX5RTOS正式上线最早是看到IAR的一条消息,全面支持PX5RTOS,然后就进一步上他们的官方下载白皮书了解相关消息当看到这两个名字时,很熟悉,这不就是ThreadX的老大BillLamie。 经过信息检索,应该是实锤了,领英上已经更新了他的工作经历: 然后再结合Azur

  8. javascript - mouseenter 和 append 效果不佳 - 2

    我需要当mouseentercurrentdiv将一些文本附加到div但有时效果不好有时显示有时没有这里是fiddleexample代码:$(document).ready(function(){varthmb_wrap=$('.thm-img');varthumb=$('.thm-imgimg');varouter=$('.mn-img');varfull=$('.mn-imgimg').length;varsc_height=$(outer).height();thmb_wrap.one('mouseenter',function(){varcur_im=$('.thm-imgim

  9. javascript - 三个 JS 中的 Lithophane 效果 - 2

    有没有办法用three.js做Lithophane效果.目前我尝试了不同的透明度和不透明度的Material,但都没有成功。Lith(Three.js)varcontainer,scene,camera,renderer,controls,stats;varclock=newTHREE.Clock();varcube;init();animate();functioninit(){//SCENEscene=newTHREE.Scene();//CAMERAvarSCREEN_WIDTH=window.innerWidth,SCREEN_HEIGHT=window.innerHeight

  10. javascript - CSS 的笛卡尔失真效果 - 2

    我正在尝试重新创建NewYorkTimesFashionWeek中使用的笛卡尔失真效果页。但是,他们使用D3版本3和D3js的鱼眼插件,但不适用于D3版本4。由于我们做的整个元素都在D3V4中,我无法降级到D3Version3。有没有其他方法可以使用CSS和jquery实现这种效果?我已经尝试过这是我到目前为止的位置:previewwindow.onload=run;functionrun(){if($('.overlayDiv').css('display')!='none'){varcontainer=d3.select('.overlayDiv');container.empty

随机推荐