Skip to content
Snippets Groups Projects
bottom_nav_bar.dart 1.67 KiB
Newer Older
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:flutter_swipe/flutter_swipe.dart';

import 'package:scrobbles/common/config/activity_page.dart';
import 'package:scrobbles/common/cubit/nav/nav_cubit_pages.dart';

class BottomNavBar extends StatelessWidget {
  const BottomNavBar({
    super.key,
    this.swipeController,
  });
  final SwiperController? swipeController;

  @override
  Widget build(BuildContext context) {
    return Card(
      margin: const EdgeInsets.all(0),
      elevation: 4,
      shadowColor: Theme.of(context).colorScheme.shadow,
      color: Theme.of(context).colorScheme.surfaceContainerHighest,
      shape: const ContinuousRectangleBorder(),
      child: BlocBuilder<NavCubitPage, int>(
        builder: (BuildContext context, int pageIndex) {
          final List<BottomNavigationBarItem> items = [];

          ActivityPage.items.forEach((int pageIndex, ActivityPageItem item) {
            items.add(BottomNavigationBarItem(
              icon: item.icon,
              label: tr(item.code),

          return BottomNavigationBar(
            currentIndex: pageIndex,
            onTap: (int index) {
              BlocProvider.of<NavCubitPage>(context).updateIndex(index);
              swipeController?.move(index);
            },
            type: BottomNavigationBarType.fixed,
            elevation: 0,
            backgroundColor: Colors.transparent,
            selectedItemColor: Theme.of(context).colorScheme.primary,
            unselectedItemColor: Theme.of(context).textTheme.bodySmall!.color,
            items: items,
          );
        },
      ),
    );
  }
}