я всегда сначала меняю переменую isBuzy потом опять меня, что бы блок понял что стейт поменялся. Когда я просто к масиву добавляю новый елемент, он думает что стейт тот же, можно как, то это обойти?
Можешь промежуточный стейт прокидывать типо LoadingState
Ну isBuzy и есть промежуточный, просто упростил, мне интересно можно ли как-то не писать промежуточный
По идеи создавать просто новый массив, а так, блок с одним стейтом, можно было и stateful виджет сделать
при обычном сравнении списков сравнивается только ссылка на них, а ссылка никак не меняется при манипулировании элементами, поэтому только если как-то переопределить равенство для списков
https://t.me/rudart/541908
Ну там Equitable есть но с массивом оно что-то не фурычит
Тебе выше написали про сравнение списков. final a = [MyDataClass(0), MyDataClass(0)]; a.add(MyDataClass(2)); print(a == a); // true print(a == [...a]); // false
Ну да, я уже понял, ответил на конкретное смс
проще просто пересоздавать массив и все, там все равно все объекты внутри по ссылке перекинутся в новый
Так вроде в этом конкретном примере сравниваются не списки а объекты стейта внутри которого список. Я так думаю там скорее проблема в методе copyWith который по идее должен возвращать новый объект
Или в том что он наследуется от equatable
ну так когда блок перед эмитом делает проверку стэйтов, сравнивает прошлый и текущий стэйт. У каждого стейта есть список, идет сравнение списков
удалите state.comments..add(message) а emin полесдний замените так state.copyWith(comments: [...state.comments, message])
Обсуждают сегодня