当 Flutter Widget 的属性发生变化时,它如何重新渲染?
How does Flutter Widget rerender works when it's properties change?
我只是想知道当 Parent widget 的属性发生变化时 Flutter Widget 是如何工作的。
假设我们有一个 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
Widget 与 new NewLocationState
或类似于 React,Flutter 可以比较某种虚拟树中的变化并且只改变现有的属性Map
这是高效的,应该会减少内存消耗。
Bloc 示例仅用于 reference/context 我的问题。但我想了解当属性发生变化时 Flutter Widget 的整体行为。
干杯
So in code above, the NewLocationState comes every 15 sec with new values.
Does Flutter renders a completely new Map Widget every 15sec?
是的。小部件不会以任何方式重复使用。
另一方面,在重新创建小部件实例时,其关联的 State
& Element
& RenderObjects
将被保留(因为它们是可变的)。
由于是这三者完成了 Flutter 应用程序中的所有工作,因此它实际上非常高效。
我只是想知道当 Parent widget 的属性发生变化时 Flutter Widget 是如何工作的。
假设我们有一个 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
Widget 与 new NewLocationState
或类似于 React,Flutter 可以比较某种虚拟树中的变化并且只改变现有的属性Map
这是高效的,应该会减少内存消耗。
Bloc 示例仅用于 reference/context 我的问题。但我想了解当属性发生变化时 Flutter Widget 的整体行为。
干杯
So in code above, the NewLocationState comes every 15 sec with new values.
Does Flutter renders a completely new Map Widget every 15sec?
是的。小部件不会以任何方式重复使用。
另一方面,在重新创建小部件实例时,其关联的 State
& Element
& RenderObjects
将被保留(因为它们是可变的)。
由于是这三者完成了 Flutter 应用程序中的所有工作,因此它实际上非常高效。