Как сделать так, чтобы нижний модальный лист всплывал из нижней панели навигации

Я относительно новичок в флаттере, и мне было интересно, как сделать так, чтобы нижний модальный лист отображался на панели навигации. В настоящее время я использую [persistent_bottom_Nav_Bar] (https://pub.dev/packages/persistent_bottom_nav_bar) из pub.dev. Мне нужно, чтобы средняя кнопка открывала модальный лист, как на скриншоте ниже. NavBar делает то, что мне нужно, кроме значка средней кнопки. 1 Вот мой код того, что я делаю

      PersistentTabController _controller = PersistentTabController(initialIndex: 0);

class MyNavBar extends StatelessWidget {
  const MyNavBar({Key? key}) : super(key: key);

  Widget build(BuildContext context) {
    return PersistentTabView(
      context,
      controller: _controller,
      screens: _buildScreens(),
      items: _navBarsItems(),
      confineInSafeArea: true,
      backgroundColor: Colors.transparent,
      handleAndroidBackButtonPress: true,
      resizeToAvoidBottomInset: true,
      stateManagement: true,
      hideNavigationBarWhenKeyboardShows: true,
      decoration: NavBarDecoration(
        borderRadius: BorderRadius.circular(10.0),
        colorBehindNavBar: Colors.transparent,
      ),
      popAllScreensOnTapOfSelectedTab: true,
      popActionScreens: PopActionScreensType.all,
      itemAnimationProperties: ItemAnimationProperties(
        duration: Duration(milliseconds: 200),
        curve: Curves.ease,
      ),
      screenTransitionAnimation: ScreenTransitionAnimation(
        animateTabTransition: true,
        curve: Curves.ease,
        duration: Duration(milliseconds: 200),
      ),
      navBarStyle: NavBarStyle.style6,
    );
  }
}

List<Widget> _buildScreens() {
  return [
    Container(
      child: Text("Page one"),
    ),
    Container(child: Text("Page one")), //place holder
    Container(child: Text('Modal Sheet')),/// <====== NEED THIS TO MAKE A  bottom MODAL SHEET POP UP WHEN SELECTED ON THE NAV BAR
    Container(child: Text("Page 3")), //place holder text
    Container(child: Text("Page 4")) //place holder text
  ];
}

List<PersistentBottomNavBarItem> _navBarsItems() {
  return [
    PersistentBottomNavBarItem(
      icon: Icon(CupertinoIcons.home),
      title: ("First"),
      activeColorPrimary: CupertinoColors.activeBlue,
      inactiveColorPrimary: CupertinoColors.systemGrey,
    ),
    PersistentBottomNavBarItem(
      icon: Icon(CupertinoIcons.settings),
      title: ("Second"),
      activeColorPrimary: CupertinoColors.activeBlue,
      inactiveColorPrimary: CupertinoColors.systemGrey,
    ),
    PersistentBottomNavBarItem(
      icon: Icon(CupertinoIcons.car_detailed),
      title: ("Add"),
      activeColorPrimary: CupertinoColors.activeBlue,
      inactiveColorPrimary: CupertinoColors.systemGrey,
    ),
    PersistentBottomNavBarItem(
      icon: Icon(CupertinoIcons.bell),
      title: ("Second"),
      activeColorPrimary: CupertinoColors.activeBlue,
      inactiveColorPrimary: CupertinoColors.systemGrey,
    ),
    PersistentBottomNavBarItem(
      icon: Icon(CupertinoIcons.circle_grid_hex_fill),
      title: ("Last"),
      activeColorPrimary: CupertinoColors.activeBlue,
      inactiveColorPrimary: CupertinoColors.systemGrey,
    ),
  ];
}`

0 ответов

Другие вопросы по тегам