Как сделать так, чтобы нижняя панель навигации оставалась видимой на страницах деталей во Flutter? - PullRequest
0 голосов
/ 05 августа 2020

Я пытался создать нижнюю панель навигации на начальной странице приложения, я добавил несколько вкладок в эту нижнюю панель, и пользователи должны иметь возможность нажимать на одну из них, чтобы перейти на разные вкладки. Но панель предназначена только для перехода на другие страницы. На одной из этих страниц я добавил card, и пользователи должны нажимать на них, чтобы детализировать страницы. ОДНАКО, когда он находится на странице сведений, панель навигации исчезла. Мне интересно, как сделать так, чтобы моя панель навигации всегда была видна в приложении. код ниже - это то, как я перехожу на страницу с подробностями,

 return Container(
      child: Card(
        child: new InkWell(
          onTap: (){
            Navigator.push(context,
                MaterialPageRoute(builder: (context) => stockDetail()));
          },
......

Я ищу подход к решению проблемы на основе моего существующего кода, но я был бы признателен, если бы есть какой-либо другой эффективный способ решить.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

используйте этот плагин Presistant_bottom_nav_bar . Исходя из вопроса, вам нужна нижняя панель навигации на каждой странице. Вы можете отключить нижнюю навигацию в определенных c проверке экрана над ссылкой

это очень хороший плагин на мой взгляд. проверьте стиль навигации по этой ссылке. вы можете изменить дизайн bottomnavbar navBarStyle: NavBarStyle.style9, просто измените style9 на любой номер, предоставленный плагином. Я считаю, что 15 из них доступны

Вы можете использовать свой собственный значок вместо значка по умолчанию, также вместо этого CupertinoColors.systemPurple вы также можете использовать этот тип Colors.red Сообщите мне, работает ли он

PersistentTabController _controller =PersistentTabController(initialIndex: 0);

//Screens for each nav items.
  List<Widget> _NavScreens() {
    return [
      recommend(),
      optional(),
      backtest(),
      machine(),
      
    ];
  }


  List<PersistentBottomNavBarItem> _navBarsItems() {
    return [
      PersistentBottomNavBarItem(
       icon: Icon(Icons.home),
        title: ("Recommend"),
        activeColor: CupertinoColors.activeBlue,
        inactiveColor: CupertinoColors.systemGrey,
      ),
      PersistentBottomNavBarItem(
        icon: Icon(Icons.favorite),
        title: ("Optional"),
        activeColor: CupertinoColors.activeGreen,
        inactiveColor: CupertinoColors.systemGrey,
      ),
      PersistentBottomNavBarItem(
        icon: Icon(Icons.person_pin),
        title: ("Backtest"),
        activeColor: CupertinoColors.systemRed,
        inactiveColor: CupertinoColors.systemGrey,
      ),
      PersistentBottomNavBarItem(
        icon: Icon(Icons.local_activity),
        title: ("Machine"),
        activeColor: CupertinoColors.systemIndigo,
        inactiveColor: CupertinoColors.systemGrey,
      ),

    ];
  }
@override
Widget build(BuildContext context) {
    return Center(
      child: PersistentTabView(
        controller: _controller,
        screens: _NavScreens(),
        items: _navBarsItems(),
        confineInSafeArea: true,
        backgroundColor: Colors.white,
        handleAndroidBackButtonPress: true,
        resizeToAvoidBottomInset: true,
        hideNavigationBarWhenKeyboardShows: true,
        decoration: NavBarDecoration(
          borderRadius: BorderRadius.circular(10.0),
        ),
        popAllScreensOnTapOfSelectedTab: true,
        navBarStyle: NavBarStyle.style9,
      ),
    );
}
0 голосов
/ 05 августа 2020

Я столкнулся с похожей проблемой. Насколько я понимаю из вашего запроса, разные страницы вызываются на разных вкладках (в нижней панели навигации), но панель приложения / сама нижняя панель навигации не видны.

Я предлагаю вам создать другой файл дротика. Для удобства назовем blank.dart. В этом blank.dart вы пишете свой код для нижней панели навигации (которую вы уже написали) и вызываете все разные страницы в этом blank.dart Итак, в основном, панель навигации будет общей для всех других страниц, которые будут вызываться внутри этого blank.dart вы можете понимать его как blank.dart, который является родительским, а все другие вкладки являются его дочерними, поэтому родитель может переходить к своим дочерним виджетам.

вы можете посмотреть мой GitHub для аналогичное решение в lib / screen / blank.dart: http://github.com/samflab/fitility

...