2

我只是想知道当 Parent 小部件的属性发生变化时 Flutter Widget 是如何工作的。

假设我们有一个父 Widget,它基于一些可变值或一些可侦听值(如 Bloc 模式)呈现 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小部件发生了什么?

MapFlutter 是否每 15 秒用新的或类似的 React渲染一个全新的Widget NewLocationState,Flutter 可以比较某种虚拟树中的更改,并且只更改现有的属性,Map这是有效的,应该会减少内存消耗。

Bloc 示例仅供参考/我的问题的上下文。但我想了解 Flutter Widget 在属性更改时的整体表现。

干杯

4

1 回答 1

4

因此,在上面的代码中,NewLocationState 每 15 秒带有新值。

Flutter 是否每 15 秒渲染一个全新的 Map Widget?

是的。小部件不会以任何方式重用。

另一方面,在重新创建小部件实例时,其关联的State& Element&RenderObjects被保留(因为它们是可变的)。

由于这三个在 Flutter 应用程序中完成了所有工作,因此它实际上非常高效。

于 2020-01-12T08:52:52.117 回答