BottomNavigationBar показывает предупреждение о переполнении при скрытии

Я прячу свой bottomnavigationbar на свитке. Скрытие работает должным образом, но панель навигации считает, что это проблема, и отображает предупреждающее сообщение о переполнении рендеринга. Как мне это исправить?

Я использую scopedModel для прослушивания boolean при прокрутке. mainModel - мой scopedModelclass.
mainModel.getShowAppBar - это просто boolean, который я установил внутри класса scopedModel.

Текущее поведение приложения, демонстрирующего проблему:

Переполнение нижней панели навигации

и это моя реализация кода:

  List <BottomNavigationBarItem> _showIconsOrNot(){
     var iconList = [
     BottomNavigationBarItem(
        icon: new Container(
          child: new Icon(Icons.list)
        ),
       title: new Text("Forums"),
     ),
     BottomNavigationBarItem(
        icon: new Container(
           child: new Icon(Icons.home)
        ),
        title: new Text("Home"),
     ),
     BottomNavigationBarItem(
        icon: new Container(
          child: new Icon(Icons.person)
        ),
        title: new Text("Profile")
     ),
     BottomNavigationBarItem(
        icon: new Container(
          child: new Icon(Icons.notifications)
        ),
        title: new Text("Notifications")
    )
   ];

return iconList;
}



@override
Widget build(BuildContext context) {
  return new ScopedModel<MainModel>(
    model: mainModel,
    child: new Scaffold(
      body: new ScopedModelDescendant<AppModel>(
          builder: (context, child, model){
            return SomeListView(model);
          }
      ),
      bottomNavigationBar:
      new ScopedModelDescendant<AppModel>(
          builder: (context, child, model){
            return AnimatedContainer(
                curve: Curves.bounceOut,
                duration: Duration(milliseconds: 800),
                height: mainModel.getShowAppBar ? 60.0 : 0.0,
                child: BottomNavigationBar(
                  type: BottomNavigationBarType.fixed,
                  currentIndex: currentIndex,
                  iconSize: mainModel.getShowAppBar ? 24.0 : 0.0,
                  selectedItemColor: Colors.black,
                  unselectedItemColor: Colors.grey,
                  items: _showIconsOrNot
              )
            );
          }
      )
  )
);

}

Я ожидаю, что сообщение с предупреждением о переполнении исчезнет. Скрытие анимации работает безупречно, как и ожидалось.


person FadhliS    schedule 26.06.2019    source источник
comment
Вы можете посмотреть здесь   -  person CopsOnRoad    schedule 26.06.2019
comment
@CopsOnRoad Спасибо, но, похоже, используется настраиваемая нижняя панель навигации. Мне нужно использовать нижнюю навигационную панель flutter, так как у меня также есть просмотры страниц для навигации по каждой вкладке.   -  person FadhliS    schedule 27.06.2019
comment
Спасибо всем за редактирование сообщения. У меня недостаточно репутации для публикации изображения   -  person FadhliS    schedule 27.06.2019


Ответы (1)


Просто оберните свой BottomNavigationBar виджетом Wrap. Установите высоту AnimatedContainers на 56,0.

.......
return AnimatedContainer(
  curve: Curves.bounceOut,
  duration: Duration(milliseconds: 800),
  height: mainModel.getShowAppBar ? 56.0 : 0.0,
  child:  Wrap(
    children: <Widget>[
      BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        currentIndex: currentIndex,
        iconSize: mainModel.getShowAppBar ? 24.0 : 0.0,
        selectedItemColor: Colors.black,
        unselectedItemColor: Colors.grey,
        items: _showIconsOrNot
      ),
    ],
  ),
);
.......

Нужна полная реализация? Перейти к Скрыть нижнюю панель навигации при прокрутке вниз и наоборот < / а>

person Naveen H K    schedule 08.11.2019