我只是想知道当父窗口小部件的属性更改时Flutter窗口小部件如何工作。
比方说,我们有一个Parent Widget,它基于一些可变值或某些可听值(例如Bloc Pattern中的值)来呈现Widget。
return Scaffold(
body: BlocBuilder<LocationBloc, LocationState>(builder: (context, state) {
if (state is NewLocationState) {
return Map(
location: LatLng(state.latitude, state.longitude),
);
}
return Container();
}),
);
因此,在上面的代码中,NewLocationState
每15秒附带新值。
我的问题是:这个Map
小部件发生了什么?
Flutter是否每隔15秒用新的Map
或与React类似的方式渲染全新的NewLocationState
小部件,Flutter可以比较某种虚拟树中的更改,而仅更改现有{{ 1}},效率很高,应该减少内存消耗。
示例仅用于我的问题的参考/上下文。但我想整体了解Flutter Widget在属性更改时的行为。
欢呼
答案 0 :(得分:3)
因此,在上面的代码中,NewLocationState每15秒就会出现一次新值。
Flutter是否每15秒渲染一次全新的Map Widget?
是的。窗口小部件不会以任何方式重用。
另一方面,在重新创建窗口小部件实例时,将保留其关联的State
和Element
和RenderObjects
(因为它们是可变的)。
由于正是这三个因素在Flutter应用中完成了所有工作,因此它实际上非常有效。