Модификация FAB из вложенного маршрута при использовании BottomNavigation Flutter - PullRequest
0 голосов
/ 03 апреля 2020

У меня возникла проблема при попытке персонализировать FloatingActionButton, содержащуюся на главной странице, из-за отсутствия вложенного маршрута для BottomNavigation. Прямо сейчас у меня есть это дерево виджетов:

Widget tree

Как вы можете видеть, приложение содержит Scaffold с BottomNavigationBar и для каждого индекса из этой BottomNavigation У меня есть новый навигатор, из которого я могу перемещаться между вложенными маршрутами. Проблема в том, что конфигурация FAB для каждого вложенного маршрутизатора внутри этих навигаторов различна, и поэтому мне нужно было знать, какую стратегию следует использовать для изменения ее параметров, в частности, значок и метод onPress

Решение :

В конце я подумал о достаточно простом решении, не знаю, является ли оно более адекватным, но оно работает довольно хорошо.

В основном то, что я сделал должен был создать провайдера, в котором у меня был бы список, содержащий функцию FAB для каждого маршрута, который вызывался соответственно с отображаемым в данный момент.

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете сделать свой AppScreen виджет с состоянием, создать int _currentIndex = 0 в состоянии и после нажатия на любую из BottomNavigationBarItem s вы можете позвонить setState, изменив _currentIndex.

* 1007. * Затем в вашем build методе вы можете сделать что-то вроде этого:
Widget fabChild;
VoidCallback fabOnPressed;
if (_currentIndex == 0) {
  fabChild = ...
  fabOnPressed = ...
} else if (_currentIndex == 2) {
  // (...)
}

return Scaffold(
  floatingActionButton: FloatingActionButton(
    child: fabChild,
    onPressed: fabOnPressed,
  ),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...