Flutter 当它';谁的财产发生了变化?

Flutter 当它';谁的财产发生了变化?,flutter,dart,widget,flutter-bloc,Flutter,Dart,Widget,Flutter Bloc,我只是想知道当父窗口小部件的属性改变时,flatter窗口小部件是如何工作的 假设我们有一个父窗口小部件,它根据一些可变值或一些可列出的值(如Bloc模式)呈现窗口小部件 返回脚手架( 正文:BlocBuilder(builder:(上下文、状态){ 如果(状态为NewLocationState){ 返回图( 位置:LatLng(州。纬度,州。经度), ); } 返回容器(); }), ); 因此,在上面的代码中,NewLocationState每隔15秒出现一个新值 我的问题是:这个Map小

我只是想知道当父窗口小部件的属性改变时,flatter窗口小部件是如何工作的

假设我们有一个父窗口小部件,它根据一些可变值或一些可列出的值(如Bloc模式)呈现窗口小部件

返回脚手架(
正文:BlocBuilder(builder:(上下文、状态){
如果(状态为NewLocationState){
返回图(
位置:LatLng(州。纬度,州。经度),
);
}
返回容器();
}),
);
因此,在上面的代码中,
NewLocationState
每隔15秒出现一个新值

我的问题是:这个
Map
小部件发生了什么

Flatter是否每隔15秒使用new
NewLocationState
或类似工具呈现一个全新的
Map
小部件来进行反应,Flatter可以比较某种虚拟树中的更改,并且只更改现有
Map
中的属性,这是有效的,应该会导致更少的内存消耗

集团示例仅供参考/我的问题背景。但我想知道当属性发生变化时,flatter小部件的总体行为

干杯

在上面的代码中,NewLocationState每隔15秒出现一个新值

颤振是否每15秒渲染一个全新的地图小部件

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

另一方面,在重新创建小部件实例时,其关联的
状态
&
元素
&
渲染对象
将被保留(因为它们是可变的)


因为正是这三个方面完成了颤振应用程序中的所有工作,所以它实际上相当高效

有关颤振如何呈现小部件的完整参考,请参阅此视频:谢谢,因此,更好的做法应该是在无状态断言的情况下实例化
Map
小部件一次,并将BlocProvider移动到
Map
小部件中,否则这不重要,因为这样我将在
NewLocationState
小部件中调用setState,小部件无论如何都会重新加载?这不重要。@RémiRousselet我有疑问。正如您所说,小部件不会被重用,所以当更新发生时,旧的小部件会发生什么情况。弗利特是否处理了它,或者它仍将保留在记忆中?
return Scaffold(
  body: BlocBuilder<LocationBloc, LocationState>(builder: (context, state) {
    if (state is NewLocationState) {
      return Map(
        location: LatLng(state.latitude, state.longitude),
      );
    }
    return Container();
  }),
);