bmnav_null_safety 1.0.1 copy "bmnav_null_safety: ^1.0.1" to clipboard
bmnav_null_safety: ^1.0.1 copied to clipboard

A highly flexible Flutter implementation of the Bottom Navigation Bar.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:bmnav_null_safety/bmnav_null_safety.dart' as bmnav;

void main() {
  runApp(
    MaterialApp(
      title: 'Bottom Nav Demo',
      home: const MainWidget(),
      theme: ThemeData(
        primaryColor: Colors.green,
      ),
    ),
  );
}

class MainWidget extends StatefulWidget {
  const MainWidget({Key? key}) : super(key: key);

  @override
  MainWidgetState createState() => MainWidgetState();
}

class MainWidgetState extends State<MainWidget> {
  int currentTab = 0;
  final List<Widget> screens = [
    const HomeScreen(),
    const WorkoutsScreen(),
    const AccountScreen(),
    const SettingsScreen()
  ];
  Widget currentScreen = const HomeScreen();

  final PageStorageBucket bucket = PageStorageBucket();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Bottom Nav Demo',
            style: TextStyle(color: Colors.black)),
        elevation: 2.0,
        backgroundColor: Colors.white,
      ),
      backgroundColor: Colors.white,
      body: PageStorage(child: currentScreen, bucket: bucket),
      bottomNavigationBar: bmnav.BottomNav(
        index: currentTab,
        labelStyle: const bmnav.LabelStyle(visible: false),
        onTap: (i) {
          setState(() {
            currentTab = i;
            currentScreen = screens[i];
          });
        },
        items: const [
          bmnav.BottomNavItem(icon: Icons.home, label: 'Home'),
          bmnav.BottomNavItem(icon: Icons.fitness_center, label: 'Workouts'),
          bmnav.BottomNavItem(icon: Icons.person, label: 'Account'),
          bmnav.BottomNavItem(icon: Icons.view_headline, label: 'Settings')
        ],
      ),
    );
  }
}

// Home Screen
class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);
  @override
  HomeScreenState createState() => HomeScreenState();
}

class HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        color: Colors.blue,
        padding: const EdgeInsets.all(50.0),
        child: const Text(
          'Home',
          style: TextStyle(color: Colors.white, fontSize: 24.0),
        ),
      ),
    );
  }
}

// Workouts Screen
class WorkoutsScreen extends StatefulWidget {
  const WorkoutsScreen({Key? key}) : super(key: key);
  @override
  WorkoutsScreenState createState() => WorkoutsScreenState();
}

class WorkoutsScreenState extends State<WorkoutsScreen> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        color: Colors.red,
        padding: const EdgeInsets.all(50.0),
        child: const Text(
          'Workouts',
          style: TextStyle(color: Colors.white, fontSize: 24.0),
        ),
      ),
    );
  }
}

// Account Screen
class AccountScreen extends StatefulWidget {
  const AccountScreen({Key? key}) : super(key: key);
  @override
  AccountScreenState createState() => AccountScreenState();
}

class AccountScreenState extends State<AccountScreen> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        color: Colors.yellow[600],
        padding: const EdgeInsets.all(50.0),
        child: const Text(
          'Account',
          style: TextStyle(color: Colors.white, fontSize: 24.0),
        ),
      ),
    );
  }
}

// Settings Screen
class SettingsScreen extends StatefulWidget {
  const SettingsScreen({Key? key}) : super(key: key);
  @override
  SettingsScreenState createState() => SettingsScreenState();
}

class SettingsScreenState extends State<SettingsScreen> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        color: Colors.green,
        padding: const EdgeInsets.all(50.0),
        child: const Text(
          'Settings',
          style: TextStyle(color: Colors.white, fontSize: 24.0),
        ),
      ),
    );
  }
}
3
likes
150
points
31
downloads

Publisher

verified publisherproblemsolved-os.blogspot.com

Weekly Downloads

A highly flexible Flutter implementation of the Bottom Navigation Bar.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on bmnav_null_safety