voo_navigation_drawer 0.1.0 copy "voo_navigation_drawer: ^0.1.0" to clipboard
voo_navigation_drawer: ^0.1.0 copied to clipboard

Navigation drawer components for Flutter - part of the voo_navigation package ecosystem.

voo_navigation_drawer #

Version Flutter License: MIT

Navigation drawer components for Flutter - part of the voo_navigation package ecosystem. Provides full-featured navigation drawers for desktop layouts with Material 3 design.

Features #

  • Expandable sections with smooth animations
  • User profile footer integration
  • Custom header and footer widgets
  • Collapsible drawer-to-rail mode
  • Theme preset support (glassmorphism, neomorphism, etc.)
  • Material 3 compliant design

Installation #

dependencies:
  voo_navigation_drawer: ^0.1.0

Or use the main package which includes all navigation components:

dependencies:
  voo_navigation: ^1.2.0

Components #

Component Description
VooAdaptiveNavigationDrawer Main navigation drawer organism
VooDrawerNavigationItems Container for drawer navigation items
VooDrawerNavigationItem Individual drawer navigation item
VooDrawerChildNavigationItem Child item for expandable sections
VooDrawerExpandableSection Expandable section with children
VooDrawerDefaultHeader Default header component for drawer
VooDrawerModernBadge Badge component specific to drawer styling

Usage #

Basic Navigation Drawer #

import 'package:voo_navigation_drawer/voo_navigation_drawer.dart';
import 'package:voo_navigation_core/voo_navigation_core.dart';

VooAdaptiveNavigationDrawer(
  config: VooNavigationConfig(
    items: [
      VooNavigationItem(
        id: 'home',
        label: 'Home',
        icon: Icons.home_outlined,
        selectedIcon: Icons.home,
      ),
      VooNavigationItem(
        id: 'projects',
        label: 'Projects',
        icon: Icons.folder_outlined,
        selectedIcon: Icons.folder,
      ),
      VooNavigationItem(
        id: 'settings',
        label: 'Settings',
        icon: Icons.settings_outlined,
        selectedIcon: Icons.settings,
      ),
    ],
    selectedId: 'home',
    onNavigationItemSelected: (id) {
      // Handle navigation
    },
  ),
)

With Expandable Sections #

Group navigation items into expandable sections:

VooAdaptiveNavigationDrawer(
  config: VooNavigationConfig(
    items: [
      VooNavigationItem.section(
        label: 'Workspace',
        icon: Icons.workspaces,
        isExpanded: true,
        children: [
          VooNavigationItem(id: 'projects', label: 'Projects', icon: Icons.folder),
          VooNavigationItem(id: 'tasks', label: 'Tasks', icon: Icons.task),
          VooNavigationItem(id: 'calendar', label: 'Calendar', icon: Icons.calendar_today),
        ],
      ),
      VooNavigationItem.section(
        label: 'Communication',
        icon: Icons.chat,
        children: [
          VooNavigationItem(id: 'messages', label: 'Messages', icon: Icons.message, badgeCount: 3),
          VooNavigationItem(id: 'email', label: 'Email', icon: Icons.email),
        ],
      ),
    ],
    selectedId: 'projects',
    onNavigationItemSelected: (id) {},
  ),
)
VooAdaptiveNavigationDrawer(
  config: VooNavigationConfig(
    items: items,
    selectedId: selectedId,
    onNavigationItemSelected: (id) {},
    drawerHeader: Container(
      padding: EdgeInsets.all(16),
      child: Row(
        children: [
          Image.asset('assets/logo.png', height: 32),
          SizedBox(width: 12),
          Text('My App', style: TextStyle(fontWeight: FontWeight.bold)),
        ],
      ),
    ),
    drawerFooter: ListTile(
      leading: Icon(Icons.help_outline),
      title: Text('Help & Support'),
      onTap: () {},
    ),
  ),
)
VooAdaptiveNavigationDrawer(
  config: VooNavigationConfig(
    items: items,
    selectedId: selectedId,
    onNavigationItemSelected: (id) {},
    showUserProfile: true,
    userProfileWidget: VooUserProfileFooter(
      userName: 'John Doe',
      userEmail: 'john@example.com',
      avatarUrl: 'https://example.com/avatar.jpg',
      status: VooUserStatus.online,
      onTap: () => print('Profile tapped'),
      onSettingsTap: () => print('Settings'),
      onLogout: () => print('Logout'),
    ),
  ),
)

With Badges #

VooNavigationItem(
  id: 'inbox',
  label: 'Inbox',
  icon: Icons.inbox_outlined,
  selectedIcon: Icons.inbox,
  badgeCount: 12, // Shows "12"
)

VooNavigationItem(
  id: 'updates',
  label: 'Updates',
  icon: Icons.notifications_outlined,
  badgeText: 'NEW', // Shows custom text
  badgeColor: Colors.orange,
)

Collapsible Drawer #

Enable the drawer to collapse into a navigation rail:

VooNavigationConfig(
  items: items,
  selectedId: selectedId,
  enableCollapsibleRail: true,
  onCollapseChanged: (isCollapsed) {
    print('Drawer collapsed: $isCollapsed');
  },
)

Theme Presets #

Apply visual themes to the navigation drawer:

VooAdaptiveNavigationDrawer(
  config: VooNavigationConfig.glassmorphism(
    items: items,
    selectedId: selectedId,
    onNavigationItemSelected: (id) {},
  ),
)

Available presets:

  • glassmorphism - Frosted glass effect
  • liquidGlass - Deep blur with layers
  • blurry - Clean frosted blur
  • neomorphism - Soft embossed effect
  • material3Enhanced - Polished Material 3
  • minimalModern - Clean flat design

Responsive Usage #

The drawer is typically used on larger screens (> 1240px). For responsive layouts, use the main voo_navigation package which automatically switches between drawer, rail, and bottom navigation based on screen size.

Dependencies #

This package depends on:

  • voo_navigation_core - Core entities and atoms
  • voo_tokens - Design system tokens
Package Description
voo_navigation Main orchestration package
voo_navigation_core Core foundation package
voo_navigation_rail Navigation rail components
voo_navigation_bar Bottom navigation components

License #

MIT License - see LICENSE for details.

Contributing #

Contributions are welcome! Please read our contributing guidelines and follow the code style defined in the project.


Built by VooStack

0
likes
150
points
--
downloads

Publisher

verified publishervoostack.com

Weekly Downloads

Navigation drawer components for Flutter - part of the voo_navigation package ecosystem.

Homepage
Repository (GitHub)
View/report issues

Topics

#flutter #navigation #navigation-drawer #material-design

Documentation

API reference

License

MIT (license)

Dependencies

flutter, voo_navigation_core, voo_tokens

More

Packages that depend on voo_navigation_drawer