Skip to content
Snippets Groups Projects
activity_page.dart 1.89 KiB
Newer Older
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:reversi/config/application_config.dart';
import 'package:reversi/cubit/activity/activity_cubit.dart';
import 'package:reversi/models/activity/activity.dart';
import 'package:reversi/ui/pages/game.dart';

class ActivityPageItem {
  final String code;
  final Icon icon;
  final Widget Function({required Activity currentActivity})? builder;

  const ActivityPageItem({
    required this.code,
    required this.icon,
  });
}

class ActivityPage {
  static const bool displayBottomNavBar = false;

  static const indexHome = 0;
  static final ActivityPageItem pageHome = ActivityPageItem(
    code: 'page_home',
    icon: Icon(UniconsLine.home),
    builder: ({required Activity currentActivity}) {
      return PageParameters(
        config: ApplicationConfig.config,
        canBeResumed: currentActivity.canBeResumed,
      );
    },
  );

  static const indexGame = 1;
  static final pageGame = ActivityPageItem(
    code: 'page_game',
    icon: Icon(UniconsLine.star),
    builder: ({required Activity currentActivity}) {
      return PageGame();
    },
  static final Map<int, ActivityPageItem> items = {
    indexHome: pageHome,
    indexGame: pageGame,
  };

  static int defaultPageIndex = indexHome;

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

  static Widget getWidget(int pageIndex) {
    return BlocBuilder<ActivityCubit, ActivityState>(
      builder: (BuildContext context, ActivityState activityState) {
        final Activity currentActivity = activityState.currentActivity;

        if (items.keys.contains(pageIndex)) {
          return items[pageIndex]?.builder!(currentActivity: currentActivity) ?? Text('oups');
        } else {
          return getWidget(defaultPageIndex);
        }
      },
    );