Navigation Drawer Controller

pub package

A Flutter package for drawer controller


drawing     ||

Getting Started

An example for flutter is provided here

As shown in the above screenshots, this control can create awesome navigation drawer very quickly.

How to create

  • Create an enumaration and add all the name of menu your required as below
    enum eDrawerIndex {
      diDivider, // This is to be used when ever you need a divider
  • Next, you need to create a class from StatefulWidget
    class MainNavigation extends StatefulWidget {
      // This field is where you need to add your menu items { Ajmal }
      final List<ESDrawerItem<eDrawerIndex>> _cDrawerList = <ESDrawerItem<eDrawerIndex>>[
      const ESDrawerItem(
          type: eDrawerItemType.ditMenu,
          index: eDrawerIndex.diHome,
          labelName: 'Home',
          iconData: Icons.home),
      const ESDrawerItem(
          type: eDrawerItemType.ditMenu,
          index: eDrawerIndex.diProfile,
          labelName: 'My Profile',
          iconData: Icons.person),
      const ESDrawerItem(
          type: eDrawerItemType.ditDivider,
          index: eDrawerIndex.diDivider), // Add a divider here
      const ESDrawerItem(
          type: eDrawerItemType.ditLink,
          index: eDrawerIndex.diShare,
          labelName: 'Share',
          iconData: Icons.share),
      const ESDrawerItem(
        type: eDrawerItemType.ditLink,
        index: eDrawerIndex.diAboutUS,
        labelName: 'About US',
      _MainNavigationState createState() => _MainNavigationState();
  • In the above class, you will need to added a field _cDrawerList which is a list of Drawer Menu Items. Class has below properties, where T is the enum you created 1st. So
    class ESDrawerItem<T> {
      final T index;
      final eDrawerItemType type;
      final String labelName;
      final IconData? iconData;
      final String? launchURL;
      final String imageName;
  • Now you need to add a state class for above. Something like _MainNavigationState. In this class you can return an instalnce of ESDrawController
       assetLogo: 'assets/images/ic_launcher.png',
       title: 'Test Application',
       subTitle: '',
       screenView: screenView,
       screenIndex: drawerIndex,
       drawerList: widget._cDrawerList,
       drawerWidth: MediaQuery.of(context).size.width * 0.75,
       // When user click on the menu, onDrawerCall is triggered
       onDrawerCall: (ESDrawerItem drawerItem) => _changeIndex(drawerItem),
  • Finally you should write a onDrawCall funtion to handle click events
    void _changeIndex(ESDrawerItem drawerItem) {
        switch (drawerItem.index) {}