Size: a a a

Flutter Developers — русскоговорящее сообщество

2019 August 13

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Правда
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
вы каждый раз аллоцируете новый объект, как не правда-то?
источник

PC

Plush Cube in Flutter Developers — русскоговорящее сообщество
Дерево возвращается, но новые там только изменившиеся объекты
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Plush Cube
Дерево возвращается, но новые там только изменившиеся объекты
Это уже внутри происходит. Вы возвращаете дерево из новых объектов.
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Потом оно сравнивается с тем что сейчас ест ьв дереве
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Если есть изменения - новый объект заменяет старый в дереве
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Дальше изменяется дерево элементов
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Потом дерево рендеров
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Plush Cube
Дерево возвращается, но новые там только изменившиеся объекты
источник

M

Max in Flutter Developers — русскоговорящее сообщество
Plush Cube
Есть ли разница в перфомансе между созданием нового объекта с кучей служебной информации и изменением одной переменной в старом объекте? Серьёзно?
Если бы все было так просто, то я бы не спрашивал
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Max
Если бы все было так просто, то я бы не спрашивал
Не очень понятно как вы сравниваете одно с другим
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Вы привели два отрывка кода которые работают по сути вместе
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
build инициируется setState ом, а потом вы всё равно аллоцируете всё дерево виджетов. По другому инициировать изменение в дереве виджетов у вас не получится (искл. StreamBuilder)
источник

M

Max in Flutter Developers — русскоговорящее сообщество
В общем у меня есть список виджетов в родительском элементе, один виджет главный, он пробрасывает родителю какое-то значение  -- у родителя вызывается setState. Соответственно все виджеты, так как они зависят от этого значения, перерисовываются (перестраиваются?).

А есть вариант сделать главный виджет независимым от этого значения извне, а обновлять его своим setState.
источник

M

Max in Flutter Developers — русскоговорящее сообщество
Надеюсь понятнее объяснил )
источник

AK

Artem Krupp in Flutter Developers — русскоговорящее сообщество
Max
Надеюсь понятнее объяснил )
неа
источник

Ю

Юрий in Flutter Developers — русскоговорящее сообщество
Слишком хитро всё
источник

M

Max in Flutter Developers — русскоговорящее сообщество

class ParentState {
 var foo = 0;

 bar() {
   setState(() {
     foo += 1;
   });
 }

 build() {
   return List(
     children: [
       Widget(foo: foo),
       Widget(foo: foo),
       MainWidget(foo: foo, callback: bar),
   );
 }
}

class MainWidget {
 final foo, callback;
 // ctor
 build() {
   return Button(
     foo: foo,
     onTap: callback,
   );
 }
}
источник

M

Max in Flutter Developers — русскоговорящее сообщество
Псевдокод, не бейте
источник

M

Max in Flutter Developers — русскоговорящее сообщество

class ParentState {
 var foo = 0;

 bar() {
   setState(() {
     foo += 1;
   });
 }

 build() {
   return List(
     children: [
       Widget(foo: foo),
       Widget(foo: foo),
       MainWidget(callback: bar),
   );
 }
}

class MainWidgetState {
 var foo = 0;

 bar() {
   setState(() {
     foo += 1;
   });
   widget.callback();
 }

 build() {
   return Button(
     foo: foo,
     onTap: bar,
   );
 }
}
источник