Как работает рендеринг Flutter Widget при изменении его свойств? - PullRequest
1 голос
/ 12 января 2020

Мне просто интересно, как работает виджет Flutter, когда изменяются свойства родительского виджета.

Допустим, у нас есть родительский виджет, который отображает базу виджетов для некоторого изменяемого значения или некоторого значения для прослушивания (как в Blo c). Шаблон).

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 сек c с новыми значениями.

Мой вопрос: что происходит с этим Map виджетом?

Визуализирует ли Flutter совершенно новый Map виджет каждые 15se c с новым NewLocationState или аналогично React, Flutter может сравнивать изменения в каком-либо виртуальном дереве и изменять только свойства в существующем Map, который эффективен и должен вызывать меньшее потребление памяти.

Blo c пример только для справки / контекста моего вопроса. но в целом я хочу знать, как ведет себя Flutter Widget при изменении свойств.

Cheers

1 Ответ

3 голосов
/ 12 января 2020

Таким образом, в приведенном выше коде NewLocationState приходит каждые 15 se c с новыми значениями.

Визуализирует ли Flutter совершенно новый виджет карты каждые 15se c?

Да. Виджеты не используются повторно.

С другой стороны, пока экземпляр виджета воссоздается, связанные с ним State & Element & RenderObjects сохраняются (поскольку они изменчивы вместо этого).

Поскольку это эти три, которые делают всю работу в приложении Flutter, на самом деле это довольно эффективно.

...