Size: a a a

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

2019 November 15

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Ощущение такое. Проблема в том, что блок, который я запросил в initState отличается от того, что приходит на n-й вызов метода build
источник

Ю

Юрий in Flutter Developers — русскоговорящее сообщество
Нормально если меняется, инит только при создании виджета
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
То что init работает единожды и семетричен dispose я знаю, вопрос в другом, почему состояние родительского виджета (State) может менятся между вызовами дочернего initState - build - build - <…> - build
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
🅵🅾️🆇
Почему нехорошо?
Вполне себе.

И вполне логично, если ты чтото убиваешь в dispose, то это что то должно быть создано в initState
Хм, читаю оф доки и или я чет не верно трактую, но если в State используется некоторый объект умеющий менять состояние (наш Bloc), то необходимо еще реализовать логику отписки от старых объектов и подписку на новые в методе didUpdateWidget
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Abripuit
Хм, читаю оф доки и или я чет не верно трактую, но если в State используется некоторый объект умеющий менять состояние (наш Bloc), то необходимо еще реализовать логику отписки от старых объектов и подписку на новые в методе didUpdateWidget
Я с ходу не подскажу, у меня один единственный блок на все приложение, объявляется еще до запуска.
Так что сори)
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Да, это оно, в описании didUpdateWidget указан именно мой кейс
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
🅵🅾️🆇
Я с ходу не подскажу, у меня один единственный блок на все приложение, объявляется еще до запуска.
Так что сори)
Если вышен него нет Statefull виджета - у тебя будет все ок
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Ну он до MaterialApp всегда у меня
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
А так, размещай повсюду принты/логгеры и смотри как и чо у тебя создается
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Вот именно, что смотрю и удивляюсь
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
и видимо все работает чутка сложнее чем я думал
источник

T

Tim in Flutter Developers — русскоговорящее сообщество
🅵🅾️🆇
Я с ходу не подскажу, у меня один единственный блок на все приложение, объявляется еще до запуска.
Так что сори)
Вся логика в сервисах, а единым блоком только связка?
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Tim
Вся логика в сервисах, а единым блоком только связка?
Да, тип того
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
БЛоК принимает события, сортирует их, вызывает определенные методы, которые дергают разные провайдеры и возвращает назад ряд состояний на их основе
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
У меня приложение с возможностью переключать аккаунты. Есть глобальный блок со стримом, какой аккаунт выбран, если пользователь переключает аккаунт, в стрим летит ивент и в некотором месте,  некоторый StreamBuilder внутри пересоздает BlocProvider с другим ключем и уже с данными другого пользователя. Но вот на экране, который использует этот блок я заметил, что в initState Я получил пользователя 1, после переходу на пользователя 2, в build вызывая провайдер уже новый блок, но в поле стейта остался старый.
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Abripuit
У меня приложение с возможностью переключать аккаунты. Есть глобальный блок со стримом, какой аккаунт выбран, если пользователь переключает аккаунт, в стрим летит ивент и в некотором месте,  некоторый StreamBuilder внутри пересоздает BlocProvider с другим ключем и уже с данными другого пользователя. Но вот на экране, который использует этот блок я заметил, что в initState Я получил пользователя 1, после переходу на пользователя 2, в build вызывая провайдер уже новый блок, но в поле стейта остался старый.
Вряд ли тебе тут подскажут, что ты делаешь не так)
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Не потому что сложно, а потому, что слишком уж расплывчато то, что там у тебя происходит)
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
🅵🅾️🆇
Вряд ли тебе тут подскажут, что ты делаешь не так)
Мне не нужно решение, я был бы рад любым размышлениям, которые помогут мне отыскать истину
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
В лучшем случае ты можешь создать тестовое приложение и воспроизвести проблему там
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
На мой взгляд - это лучший способ разобраться
источник