Как включить дочерний компонент для внесения изменений в родительскую панель приложения? - PullRequest
0 голосов
/ 19 марта 2020

Представьте себе следующий сценарий - у приложения есть глобальный Scaffold с глобальным AppBar. Тело Scaffold является одним из многих компонентов приложения. Каждый компонент будет иметь глобальную панель приложений, отображаемую по-своему, а также будет иметь доступ к TabController панели приложений (чтобы слушатели могли подключаться к нему).

Самый простой способ реализовать это - каждая из страниц имеет свои собственный Scaffold с AppBar и скрыть AppBar от основного приложения Scaffold. Это, однако, нарушило бы переходы / анимации, потому что вместо того, чтобы просто исчезать страница, панель приложения также появлялась (начиная со своей части страницы), что выглядело бы очень странно.

Я был пытаясь выяснить это в течение нескольких дней и был бы признателен за некоторую помощь. Я пытался использовать Redux и изменять внешний вид глобальной панели приложений в зависимости от значения в состоянии Redux, но у меня все еще есть проблема с недоступностью TabController основного Scaffold с любой из дочерних страниц.

1 Ответ

1 голос
/ 19 марта 2020

Традиционный метод, которым я всегда придерживался, - это чтобы каждая страница имела свой собственный Scaffold и свой собственный AppBar. Это происходит из-за того, что этот контекст передается от одного Scaffold к другому, когда AppBar знает, что есть изменение навигации.

Я не думаю, что анимация перехода страницы применяется к AppBar, но даже если это так, есть Обходной путь к этому. Вы можете написать свой собственный FadePageTransition, чтобы вы не заметили смещение панели приложений, плюс дополнительный бонус к тому, что он выглядит действительно круто.

Если вы хотите go с одним Scaffold, глобальным подходом AppBar, это может быть сделано, но кажется немного грязным. Вы можете подключить к нему провайдера и изменить текущее состояние через него, но это грязно по двум причинам: 1) поток провайдера всегда отправляется в AppBar и 2) вам нужно будет каждый раз устанавливать значение в провайдере pu sh новый экран, чтобы уведомить AppBar об изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...