знаю как уже быть. У меня есть виджет-заголовок который я использую на многих страницах приложения, и хочу в этот заголовок впихнуть иконку "Go back", чтобы пользователь мог идти назад.
Для этого добавляю туда свою иконку при условии context.canPop() (extension из go_router). Работает нормально. Однако возникает проблема:
1. Представим что я на странице №1 и она самая первая в стеке. На ней не отображается иконка так как мы не можем pop()
2. Перехожу на страницу №2 и она вторая в стеке. На ней отображается иконка так как мы можем попнуться на страницу №1
3. Остаёмся на стрранице №2 и ждём событие которое ребилднет страницу №1
4. Возвращаемся обратно и видим иконку на странице №1, чего быть не должно
Как я понял, это из-за того что на шаге 3 в момент ребилда страницы, она обращается к контексту, который ей говорит "да, ты на странице №2 и можно делать pop()" и отображает иконку.
Пробовал обойти это делая ребилд страницы каждый раз при переходе с одной на другую, но по какой-то причине любой переход стал лагать и воспроизводить ненужные анимации (чего разумеется быть не должно)
Так же попробовал перейти с go_router на auto_route, в котором куча опций этого canPop(). Но ничего не вышло. Может кто сталкивался с такой проблемой? Как без ребилда при переходах отображать иконку получая canPop() только с той страницы, на которой происходит ребилд, а не беря значение из глобального контекста?
Я обычно при переходе на страницу передавал параметр показывать ли кнопку назад
Спасибо! Примерно так и решил. Благо у меня есть виджет CustomPage и я ему в initState вписал context.canPop(). Работает как часики)
А если попробовать дать разные key для страниц и appBar
Обсуждают сегодня