Size: a a a

Dart & Flutter по-русски

2020 December 19

AD

Alexandr Drobyshev in Dart & Flutter по-русски
Ща с телефона и не у компа)
источник

E

EcsFlash- in Dart & Flutter по-русски
Ок, спасибо
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
Ну и писать адд не обязательно) можно юзать BlocListener или. BLOCconsumer
источник

E

EcsFlash- in Dart & Flutter по-русски
Блок? Страшно)
источник

T

Tim in Dart & Flutter по-русски
Ed Khalturin
Здравствуйте, вопрос по флаттеру. Имеется ListView внутри StatelessWidget. В элементе этого ListView хочу назначать карточке случайный цвет. Для этого назначил ключ ValueKey(myElement.id) (значения ключей уникальны) для корневого элемента списка (он StatefulWidget), а сам цвет инициализирую в initState(). Но когда я пролистываю список, цвета сбрасываются. И в консоли вижу, что для каждого элемента повторно вызывается initState(), и соответственно цвет назначается заново.

Ранее пробовал сделать также в ListView.builder(), но прочитал что он такое не поддерживает изначально. Поэтому пробую в обычном ListView, но и тут какое-то странное поведение initState() — по докуметнации должен вызываться только один раз для стейта, а тут постоянно при скролле.

Подскажите, почему происходит такое поведение и как можно от него избавиться?

Код: https://gist.github.com/DVegasa/42714ed4f6ac90e6c7aa213fcd9260f7
Вывод консоли: https://gist.github.com/18341950e5ae9bb61d8494ec5612a806
initState вызывается один раз при создании какого либо виджета, тут все верно.
Тут фишка в том, что ListView как-то уничтожает те элементы, которые сейчас не видны на экране. Думаю, дело именно в этом
источник

T

Tim in Dart & Flutter по-русски
Firdavs
Переслано от Firdavs
Map list = { 1:1,2:2,3:3, };

 int age = 0;
 while (age < 10) {
   age++;
   if (age == list.values) continue;
   print(age);
 }

я тут решил поексперементировать и захотел некоторые значения пропустить
так вот  как можно вписать в if несколько значений  типа if (age == 2,3,4,)
if ([2, 3, 4].contains(age))
источник

F

Firdavs in Dart & Flutter по-русски
Tim
if ([2, 3, 4].contains(age))
что я делаю не так ?
источник

T

Tim in Dart & Flutter по-русски
Firdavs
что я делаю не так ?
Все же правильно выводит.
А Вы что ожидаете?
источник

T

Tim in Dart & Flutter по-русски
Firdavs
что я делаю не так ?
Ознакомьтесь с документацией contains, если есть вопросы
источник

OJ

O . J in Dart & Flutter по-русски
Firdavs
что я делаю не так ?
У вас ложно положительное выражение в вашем случае
источник

F

Firdavs in Dart & Flutter по-русски
я хотел в точности до наоборот
что бы 1 2 3 из 10ти не выводились
источник

OJ

O . J in Dart & Flutter по-русски
Тогда сделайте отрицательный кондишн
источник

F

Firdavs in Dart & Flutter по-русски
Tim
Ознакомьтесь с документацией contains, если есть вопросы
спасибо
источник

F

Firdavs in Dart & Flutter по-русски
O . J
Тогда сделайте отрицательный кондишн
понял
источник

T

Tim in Dart & Flutter по-русски
Firdavs
я хотел в точности до наоборот
что бы 1 2 3 из 10ти не выводились
Тогда:
if ( ! [2, 3, 4].contains(age))
источник

DS

DVS Studio in Dart & Flutter по-русски
ну или if ( [1, 2, 3].contains(age)) continue;
источник

F

Firdavs in Dart & Flutter по-русски
DVS Studio
ну или if ( [1, 2, 3].contains(age)) continue;
большое спасибо ребят
я буду каждый способ повторять и запоминать
источник

F

Firdavs in Dart & Flutter по-русски
Tim
Тогда:
if ( ! [2, 3, 4].contains(age))
! знак впереди делает метод отрицательным?) как интересно
где можно об этом прочитать ?
источник

DS

DVS Studio in Dart & Flutter по-русски
Firdavs
! знак впереди делает метод отрицательным?) как интересно
где можно об этом прочитать ?
источник

AK

Anton Kowalski in Dart & Flutter по-русски
Что за ошибка? Почему может выскакивать?
источник