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, required this.builder, }); } 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); } }, ); } }