当前位置: 首页 > 知识库问答 >
问题:

在flutter中改变整个页面与一个按钮的状态

欧阳正德
2023-03-14

好的,我正在使用Flutter开发一个媒体播放器应用程序。现在当我按下播放按钮时,它变成了暂停按钮。(只有按钮上的图标改变)

按钮的onPressed函数更改布尔值并调用setstate()方法。

bool _playing = false;  
void _onPlayButtonPressed() {
         setState () {
           if (_playing)
              _playing = false;
           else
              _playing = true;
         }
    }
Widget _playButtonIcon() {

//This function has no setState() call

  if (_playing)
      //return pause icon
  else
      //return play icon
}

这种做法是合理的,还是矫枉过正?

我是否必须将按钮放在不同的有状态小部件类上,并在每次点击这个播放按钮时通过setstate()调用它的构建方法?

如果我有其他小部件,也改变了UI的状态。可能会改变不同的小部件?

什么是正确的方法来做到这一点,而没有一个性能打击?

共有1个答案

糜俊彦
2023-03-14

创建一个播放按钮,它是一个自己的小部件,具有维护它是否正在播放的状态,这绝对是有意义的。现在,当您在父小部件上调用setState时,它确实调用了构建方法,但据我所知,它不一定从头重新绘制所有内容。如果在一些嵌入的小部件中没有发现更改,它不会重新绘制它们,因为它们已经在小部件树中了。最后,调用setstate是可以的,但是如果应用程序开始变大,并且您发现自己在太多的地方调用setstate,并且希望使用全局密钥,我建议您查看Provider包,并使用changeNotifier/consumer模式。

 类似资料:
  • 我正在尝试使用Flutter中的进度状态按钮。在pub.dev文档中,小部件的设置如下

  • 本文向大家介绍bootstrap改变按钮加载状态,包括了bootstrap改变按钮加载状态的使用技巧和注意事项,需要的朋友参考一下 bootstrap里面有个激活按钮的时候,按钮变成不可用的; 按照官网里面的方法介绍是在button按钮加个 data-loading-text="Loading..." 属性,然后js总体代码是这样: 其中autocomplete="off"属性是针对FF浏览器在页

  • 我需要帮助。我想做一个按钮,对一个数字进行四舍五入,十进制乘以十进制,比如 1.2345 到 1.234 到 1.23 等。我不想使用 Math.round,因为它四舍五入到一个整数,而且我不知道我是否可以使用 *10/10、*100/100 等,因为我的答案中得到了不同的小数点。在我点击 并完成答案后,此按钮必须在计算器上工作。 我还需要帮助来使用到“List”组件中的标签。

  • 我目前正在Flutter中开发一个Android应用程序。如何添加圆角按钮?

  • 所以假设我有一个“开”和一个“关”按钮。当我按下打开按钮时,我希望打开按钮隐藏自己,关闭按钮显示出来,反之亦然。 一个人怎么能这么做?