Size: a a a

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

2021 March 31

AU

Andrey Unger in Dart & Flutter по-русски
Radomir Epur
Потому что оператор сравнения думает что они одинаковые
и как «красиво» это победить? делать два разных события и чередовать их, имхо, не очень красиво((
источник

AU

Andrey Unger in Dart & Flutter по-русски
да, самое важное забыл написать - совместно с блоком использую freezed кодогенерацию)
источник

RE

Radomir Epur in Dart & Flutter по-русски
Andrey Unger
и как «красиво» это победить? делать два разных события и чередовать их, имхо, не очень красиво((
Не, есть два варианта: дать понять блоку что данные в стэйтах разные переопределив операторы сравнения или добавив какой-нибудь id к каждому стэйту, или еще делают один "промежуточный" state, например, Loading, или InProgress. Когда посылается какой-нибудь эвент в блок, первым делом yield-ится этот промежуточный стэйт, а потом уже твой итоговый с данными.
источник

RE

Radomir Epur in Dart & Flutter по-русски
Andrey Unger
да, самое важное забыл написать - совместно с блоком использую freezed кодогенерацию)
Ну, тогда последний вариант подойдет.
источник

AU

Andrey Unger in Dart & Flutter по-русски
Radomir Epur
Не, есть два варианта: дать понять блоку что данные в стэйтах разные переопределив операторы сравнения или добавив какой-нибудь id к каждому стэйту, или еще делают один "промежуточный" state, например, Loading, или InProgress. Когда посылается какой-нибудь эвент в блок, первым делом yield-ится этот промежуточный стэйт, а потом уже твой итоговый с данными.
у меня несколько другая ситуация. Получается что я внутри mapEventToState при обработке одного из событий добавляю другое событие. Которое в свою очередь должно добавлять само себя до выполнения условия. Первый раз оно срабатывает, а второй раз нет, не смотря на то что я уже в него и timestamp передаю. Вот примерно так это выглядит:
источник

AU

Andrey Unger in Dart & Flutter по-русски
источник

AU

Andrey Unger in Dart & Flutter по-русски
т.е если сделать два подряд add с разными событями, вы думаете сработает?
источник

RE

Radomir Epur in Dart & Flutter по-русски
Andrey Unger
у меня несколько другая ситуация. Получается что я внутри mapEventToState при обработке одного из событий добавляю другое событие. Которое в свою очередь должно добавлять само себя до выполнения условия. Первый раз оно срабатывает, а второй раз нет, не смотря на то что я уже в него и timestamp передаю. Вот примерно так это выглядит:
Тут я отмечу что все вышесказанное было про СТЭЙТЫ, а не про Эвенты. То есть, если в блок отправляются два одинаковых эвента подряд, то все ок, они будут обработаны, а вот если из блока отправить два одинаковых Стэйта, то второй не пройдет.
источник

AU

Andrey Unger in Dart & Flutter по-русски
Radomir Epur
Тут я отмечу что все вышесказанное было про СТЭЙТЫ, а не про Эвенты. То есть, если в блок отправляются два одинаковых эвента подряд, то все ок, они будут обработаны, а вот если из блока отправить два одинаковых Стэйта, то второй не пройдет.
почему же тогда второй эвент не срабатывает?
источник

RE

Radomir Epur in Dart & Flutter по-русски
Возможно вы не там ищете проблему. Вижу что вы в качестве идентификатора в Эвенты передаете timestamp, если вы и решили с id поэкспериментировать, то передавайте его в стэйт.
источник

AU

Andrey Unger in Dart & Flutter по-русски
Radomir Epur
Возможно вы не там ищете проблему. Вижу что вы в качестве идентификатора в Эвенты передаете timestamp, если вы и решили с id поэкспериментировать, то передавайте его в стэйт.
в том то и дело что в стейте оно мне не надо. Стейт не должен менятся пока не наступит другой эвент. По этому он должен крутить спинер, но паралельно в фоне постоянно дергать одно и тоже событие с 5 секундной периодичностью. Собственно обработчик этого эвента должен проверить некоторое условие, если оно выполнилось - поменять стейт, если нет - через некотрое время вызваться повторно
источник

AU

Andrey Unger in Dart & Flutter по-русски
кажется я понял в чем ошибка
источник

RE

Radomir Epur in Dart & Flutter по-русски
Andrey Unger
кажется я понял в чем ошибка
Ну-ка, мне уже интересно стало
источник

AU

Andrey Unger in Dart & Flutter по-русски
mapEventToState дожен возвращать хотябы один стейт.  а у меня в блоке on PromiseWaitException нет ни одного yield
источник

AU

Andrey Unger in Dart & Flutter по-русски
стоило добавить туда yield TnvdParserState.loading(); и все заработало
источник

D

Dmitry in Dart & Flutter по-русски
Всем привет,
Подскажите, пожалуйста, почему spacer не работает:

Row(children: [
 Text(''),
 Spacer(),
 Switch(),
],
)

Switch в конец Row не перемещается, хотя по логике должен
источник

AU

Andrey Unger in Dart & Flutter по-русски
Dmitry
Всем привет,
Подскажите, пожалуйста, почему spacer не работает:

Row(children: [
 Text(''),
 Spacer(),
 Switch(),
],
)

Switch в конец Row не перемещается, хотя по логике должен
вы уверены что у вас Row нужной длинны? обычно такая проблема когда Row по длинне равно контенту а не родителю
источник

AU

Andrey Unger in Dart & Flutter по-русски
заюзайте девтулс с лайоут эксплоером чтобы посмотреть границы контейнеров
источник

Т

Тимур in Dart & Flutter по-русски
Dmitry
Всем привет,
Подскажите, пожалуйста, почему spacer не работает:

Row(children: [
 Text(''),
 Spacer(),
 Switch(),
],
)

Switch в конец Row не перемещается, хотя по логике должен
Вместо спейса используйте свойство роу: crossAxisAlignment: CrossAxisAlignment.stretch
источник

D

Dmitry in Dart & Flutter по-русски
Andrey Unger
вы уверены что у вас Row нужной длинны? обычно такая проблема когда Row по длинне равно контенту а не родителю
Пробовал заворачивать в expanded - такая же проблема
источник