Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.7k views
in Technique[技术] by (71.8m points)

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

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

一方面是为了保存当前 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会被重建,所以变相提高了性能(不知道理解是否正确)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...