Package selection guidance compiled from public package information, community data, and project usage.
kf_drawer is a Flutter package that provides a customizable side menu (Drawer) for applications across multiple platforms. It offers a clean, lightweight implementation for navigation with support for various customization options such as width, animation, and item styling. Designed for ease of use, it integrates seamlessly into Flutter apps on Android, iOS, Web, macOS, Windows, and Linux. The package is ideal for apps requiring a consistent and responsive navigation drawer experience.
Use cases
Mobile app navigation
Web dashboard sidebar
Desktop application menus
Cross-platform navigation
Customizable drawer layouts
Key features
Cross-platform compatibility
Customizable drawer width
Smooth animations
Easy integration
Support for custom widgets
Suitable for
Developers building multi-platform apps
Teams needing consistent navigation
Apps with complex sidebar requirements
UI-focused projects
Rapid prototyping
Considerations
Limited built-in themes
Requires manual styling for advanced designs
No built-in dark mode support
Depends on Flutter's Drawer API
May need additional state management
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
KFDrawer
A dependency-free animated side drawer for Flutter. KFDrawer supports controller
and context-based control, gestures, pinned or centered menus, page history,
right-side drawers, and RTL layouts on every Flutter platform.
Install
dependencies:kf_drawer:^2.1.0
KFDrawer 2.1 supports Dart 3 and Flutter 3.10 or newer. The package is tested
against both its compatibility floor and the current Flutter stable release.
Quick start
Create a controller, give each page item a widget, and place KFDrawer in your
Scaffold body:
footerPinned keeps the footer outside the scrolling item list.
centerScrollableItems centers a shrink-wrapped item list between a fixed
header and footer.
scrollable: false retains the non-scrolling centered column layout.
Right-side and RTL drawers
KFDrawerDirection is logical, so start automatically follows the ambient
text direction:
// Left in LTR, right in RTL (default).KFDrawer(direction: KFDrawerDirection.start)
// Right in LTR, left in RTL.KFDrawer(direction: KFDrawerDirection.end)
Translation, edge dragging, content tap regions, shadow offset, icon padding,
and menu alignment all follow the resolved side.
Dynamic items
Controller changes rebuild the drawer automatically:
drawerController.items = <KFDrawerItem>[...newItems];
drawerController.addItem(newItem);
drawerController.removeItem(oldItem);
drawerController.clearItems();
// If you mutate drawerController.items directly:
drawerController.items.add(newItem);
drawerController.refreshItems();
drawerController.selectItem('settings');
Optional page history and Back handling
KFDrawer swaps page widgets; it does not push Navigator routes. Enable the
lightweight controller history only if this is the behavior your app needs:
Use replacePage to change the current page without adding a history entry and
clearHistory after a navigation reset.
Page item callbacks
When an item has both page and onPressed, KFDrawer now performs both actions:
it selects the page, optionally closes the drawer, and invokes the callback.