curved_navigation_bar_pro 1.0.0 copy "curved_navigation_bar_pro: ^1.0.0" to clipboard
curved_navigation_bar_pro: ^1.0.0 copied to clipboard

A beautiful Flutter bottom navigation bar with an animated curved notch FAB, smooth elastic bubble animation, and fully customisable theming.

curved_navigation_bar_pro #

pub version License: MIT Flutter

A beautiful Flutter bottom navigation bar with a smooth animated curved notch, an elastic FAB bubble that glides between items, and comprehensive theming support.


Features #

  • ๐ŸŽฏ Animated notch that slides smoothly to the selected item
  • ๐Ÿ’ซ Elastic pop-in animation for the FAB bubble
  • ๐Ÿ“ Mathematically continuous Cยน shoulder curves (no kinks at the notch edges)
  • ๐ŸŽจ Full theming โ€” colours, geometry, elevation, text styles
  • โ™ฟ Built-in accessibility semantics
  • ๐Ÿงฉ 2โ€“6 navigation items
  • ๐Ÿ“ฆ Zero dependencies beyond Flutter

Preview #

CurvedNavBar demo


Installation #

Add to your pubspec.yaml:

dependencies:
  curved_navigation_bar_pro: ^1.0.0

Then run:

flutter pub get

Quick start #

import 'package:curved_navigation_bar_pro/curved_navigation_bar_pro.dart';

class MyPage extends StatefulWidget {
  const MyPage({super.key});
  @override
  State<MyPage> createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  int _index = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ...,
      bottomNavigationBar: CurvedNavBar(
        items: const [
          CurvedNavItem(
            icon: Icons.home_outlined,
            activeIcon: Icons.home_rounded,
            label: 'HOME',
          ),
          CurvedNavItem(icon: Icons.search_outlined, label: 'SEARCH'),
          CurvedNavItem(
            icon: Icons.favorite_outline,
            activeIcon: Icons.favorite_rounded,
            label: 'SAVED',
          ),
          CurvedNavItem(
            icon: Icons.person_outline_rounded,
            activeIcon: Icons.person_rounded,
            label: 'PROFILE',
          ),
        ],
        currentIndex: _index,
        onTap: (i) => setState(() => _index = i),
      ),
    );
  }
}

Customisation #

CurvedNavBar(
  items: ...,
  currentIndex: _index,
  onTap: (i) => setState(() => _index = i),

  // Colours
  backgroundColor: Colors.white,
  activeColor: Colors.indigo,
  activeIconColor: Colors.white,
  inactiveColor: const Color(0xFFADB5BD),
  fabColor: Colors.indigo,

  // Geometry
  barHeight: 110,
  fabRadius: 28,
  fabGap: 10,
  fabSink: 22,
  notchShoulderRadius: 12,
  cornerRadius: 16,

  // Shadow
  elevation: 14,
  shadowColor: Colors.black26,

  // Animation
  animationDuration: const Duration(milliseconds: 400),
  animationCurve: Curves.easeInOutCubic,

  // Text styles (optional overrides)
  activeTextStyle: const TextStyle(fontSize: 11, fontWeight: FontWeight.w800),
  inactiveTextStyle: const TextStyle(fontSize: 10, fontWeight: FontWeight.w400),
)

API Reference #

CurvedNavBar #

Property Type Default Description
items List<CurvedNavItem> required 2โ€“6 navigation items
onTap ValueChanged<int> required Callback when an item is tapped
currentIndex int 0 Selected item index
backgroundColor Color Colors.white Bar background
activeColor Color? theme primary Active label & default FAB colour
activeIconColor Color? Colors.white Icon colour inside the FAB bubble
inactiveColor Color #ADB5BD Inactive icon & label colour
fabColor Color? activeColor FAB bubble background
barHeight double 110 Bar height in logical pixels
fabRadius double 24 FAB bubble radius
fabGap double 10 Gap between FAB and notch arc
fabSink double 22 Pixels the FAB centre sinks below the bar top
notchShoulderRadius double 12 Shoulder fillet radius (0 = sharp corners)
cornerRadius double 0 Top-left / top-right bar corner radius
elevation double 14 Shadow depth
shadowColor Color rgba(0,0,0,0.16) Shadow colour
animationDuration Duration 400 ms Notch slide duration
animationCurve Curve easeInOutCubic Notch slide curve
activeTextStyle TextStyle? โ€” Override active label style
inactiveTextStyle TextStyle? โ€” Override inactive label style

CurvedNavItem #

Property Type Description
icon IconData Icon shown when inactive
activeIcon IconData? Icon shown in the FAB when active (falls back to icon)
label String Label text beneath the icon

Running the example #

cd example
flutter run

Contributing #

PRs and issues are welcome! Please open an issue first for significant changes.


License #

MIT ยฉ 2025 aslamambiloly

25
likes
0
points
667
downloads

Publisher

verified publisheraslamambiloly.2bd.net

Weekly Downloads

A beautiful Flutter bottom navigation bar with an animated curved notch FAB, smooth elastic bubble animation, and fully customisable theming.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on curved_navigation_bar_pro