Skip to content
Snippets Groups Projects
menu.dart 1.20 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:puzzlegame/ui/screens/page_about.dart';
import 'package:puzzlegame/ui/screens/page_game.dart';
import 'package:puzzlegame/ui/screens/page_settings.dart';

class MenuItem {
  final Icon icon;
  final Widget page;

  const MenuItem({
    required this.icon,
    required this.page,
  });
}

class Menu {
  static const indexGame = 0;
  static const menuItemGame = MenuItem(
    icon: Icon(UniconsLine.home),
    page: PageGame(),
  );

  static const indexSettings = 1;
  static const menuItemSettings = MenuItem(
    icon: Icon(UniconsLine.setting),
    page: PageSettings(),
  );

  static const indexAbout = 2;
  static const menuItemAbout = MenuItem(
    icon: Icon(UniconsLine.info_circle),
    page: PageAbout(),
  );

  static Map<int, MenuItem> items = {
    indexGame: menuItemGame,
    indexSettings: menuItemSettings,
    indexAbout: menuItemAbout,
  };

  static bool isIndexAllowed(int pageIndex) {
    return items.keys.contains(pageIndex);
  }

  static Widget getPageWidget(int pageIndex) {
    return items[pageIndex]?.page ?? menuItemGame.page;
  }

  static int itemsCount = Menu.items.length;
}