Why is the BottomNavigationBar disappearing?

Viewed 36

I am having a problem with a BottomNavigationBar in my Flutter App using the Bloc Architecture. When clicking on a Menu-Item the Bar disappears. To switch between the different pages, I am using the Navigator API.

This is the Root Page containing the BottomNavigationBar. Do you guys have any idea?

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

  static const String routeName = '/root';

  static Route route() {
    return MaterialPageRoute(
        settings: const RouteSettings(name: routeName),
        builder: (context) => RootPage());
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Scaffold(bottomNavigationBar:
            BlocBuilder<NavigationBarCubit, NavigationBarState>(
      builder: (context, state) {
        return BottomNavigationBar(
          currentIndex: state.index,
          showUnselectedLabels: false,
          items: [
            BottomNavigationBarItem(
              icon: Icon(
                Icons.group,
              ),
              label: 'Sessions',
            ),
            BottomNavigationBarItem(
              icon: Icon(
                Icons.search,
              ),
              label: 'Search',
            ),
            BottomNavigationBarItem(
              icon: Icon(Icons.music_note_sharp),
              label: 'Playlists',
            ),
          ],
          onTap: (index) {
            if (index == 0) {
              BlocProvider.of<NavigationBarCubit>(context)
                  .getNavBarItem(NavBarItem.sessions);
            } else if (index == 1) {
              BlocProvider.of<NavigationBarCubit>(context)
                  .getNavBarItem(NavBarItem.search);
            } else if (index == 2) {
              BlocProvider.of<NavigationBarCubit>(context)
                  .getNavBarItem(NavBarItem.playlists);
            }
          },
        );
      },
    ), body: BlocBuilder<NavigationBarCubit, NavigationBarState>(
      builder: (context, state) {
        WidgetsBinding.instance.addPostFrameCallback((_) {
          if (state.navBarItem == NavBarItem.sessions) {
            Navigator.push(context, SessionsPage.route());
          } else if (state.navBarItem == NavBarItem.search) {
            Navigator.push(context, SearchPage.route());
          } else if (state.navBarItem == NavBarItem.playlists) {
            Navigator.push(context, PlaylistPage.route());
          }
        });
        return Container();
      },
    )));
  }
}
0 Answers
Related