SideMenu constructor

SideMenu({
  1. Key? key,
  2. required List items,
  3. required SideMenuController controller,
  4. Widget? title,
  5. Widget? footer,
  6. SideMenuStyle? style,
  7. bool? showToggle = false,
  8. ValueChanged<SideMenuDisplayMode>? onDisplayModeChanged,
  9. Duration? displayModeToggleDuration,
  10. bool? alwaysShowFooter = false,
  11. int? collapseWidth = 600,
})

Easy Sidemenu widget

Sidemenu is a menu that is usually located on the left or right of the page and can used for navigation

Implementation

SideMenu({
  Key? key,
  required this.items,
  required this.controller,
  this.title,
  this.footer,
  this.style,
  this.showToggle = false,
  this.onDisplayModeChanged,
  this.displayModeToggleDuration,
  this.alwaysShowFooter = false,
  this.collapseWidth = 600,
}) : super(key: key) {
  global.style = style ?? SideMenuStyle();
  global.controller = controller;
  int sideMenuExpansionItemCount = 0, sideMenuExpansionItemIndex = -1;
  for (int index = 0; index < items.length; index++) {
    if (items[index] is SideMenuExpansionItem) {
      sideMenuExpansionItemCount = sideMenuExpansionItemCount + 1;
    }
  }
  global.expansionStateList =
      List<bool>.filled(sideMenuExpansionItemCount, false);
  sidemenuitems.items = items.map((data) {
    if (data is SideMenuItem) {
      return SideMenuItemWithGlobal(
        global: global,
        title: data.title,
        onTap: data.onTap,
        icon: data.icon,
        iconWidget: data.iconWidget,
        badgeContent: data.badgeContent,
        badgeColor: data.badgeColor,
        tooltipContent: data.tooltipContent,
        trailing: data.trailing,
        builder: data.builder,
      );
    } else if (data is SideMenuExpansionItem) {
      sideMenuExpansionItemIndex = sideMenuExpansionItemIndex + 1;
      return SideMenuExpansionItemWithGlobal(
        global: global,
        title: data.title,
        icon: data.icon,
        index: sideMenuExpansionItemIndex,
        iconWidget: data.iconWidget,
        children: data.children
            .map((childData) => SideMenuItemWithGlobal(
                  global: global,
                  title: childData.title,
                  onTap: childData.onTap,
                  icon: childData.icon,
                  iconWidget: childData.iconWidget,
                  badgeContent: childData.badgeContent,
                  badgeColor: childData.badgeColor,
                  tooltipContent: childData.tooltipContent,
                  trailing: childData.trailing,
                  builder: childData.builder,
                ))
            .toList(),
      );
    }
  }).toList();
  global.items = sidemenuitems.items;
}