问答

为什么 StatefulWidget 被分成 StatefulWidget 和 State 两部分?

作者:admin 2021-05-15 我要评论

看到这样一个答案,百思不得其解: 一方面是为了保存当前 APP 的状态,另一个重要的原因就是为了`性能`!当 UI 需要更新时候,假设 Widget 和 State 都重建,可...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

看到这样一个答案,百思不得其解:

一方面是为了保存当前 APP 的状态,另一个重要的原因就是为了`性能`!

当 UI 需要更新时候,假设 Widget 和 State 都重建,可是 State 里保存了 UI 显示的数据,State 重建,创建新的实例,UI 之前的状态就会丢失,导致 UI 显示异常,所以要分成两部分,一部分会重建,一部分不会重建,重建的部分就是 StatefulWidget,不会重建的部分就是 State。

Widget 重建的成本很低,但 State 的重建成本很高,因此将 StatefulWidget 分成两部分:重建成本低的 Widget 和重建成本高的 State。这样就使得 State 不会被频繁重建,也就提高了性能。

感觉这个答案写的让人晕头转向,StatefulWidget重建一般分为两种情况,一种是StatefulWidget内部调用setState,这时StatefulWidget和state都会发生重建(不知道理解是否正确)。

第二种情况,StatefulWidget的父widget被重建,所以StatefulWidget也会重建,此时因为State未发生变化,所有只是StatefulWidget会被重建,所以变相提高了性能(不知道理解是否正确)

我想问的是我的理解是否正确啊,希望有人能用大白话给咱解释一下,万分感谢。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请问下prometheus怎么进行自定义的按业

    请问下prometheus怎么进行自定义的按业

  • 节流函数为什么,点击无效,监听窗口大

    节流函数为什么,点击无效,监听窗口大

  • express访问静态资源失败

    express访问静态资源失败

  • IE 浏览器下 match 方法报错

    IE 浏览器下 match 方法报错

腾讯云代理商
海外云服务器