Skip to content
Snippets Groups Projects

Resolve "Use navigation widgets from flutter_custom_toolbox"

20 files
+ 150
485
Compare changes
  • Side-by-side
  • Inline
Files
20
+ 0
115
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/common/ui/pages/api.dart';
import 'package:random/common/ui/pages/camera.dart';
import 'package:random/common/ui/pages/demo.dart';
import 'package:random/common/ui/pages/game.dart';
import 'package:random/common/ui/pages/graph.dart';
import 'package:random/config/application_config.dart';
import 'package:random/cubit/activity/activity_cubit.dart';
import 'package:random/models/activity/activity.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 = true;
static const indexHome = 0;
static final pageHome = ActivityPageItem(
code: 'page_home',
icon: Icon(UniconsLine.home),
builder: ({required Activity currentActivity}) {
return PageParameters(
config: ApplicationConfig.config,
canBeResumed: currentActivity.canBeResumed,
);
},
);
static const indexDemo = 1;
static final pageDemo = ActivityPageItem(
code: 'page_demo',
icon: Icon(UniconsLine.eye),
builder: ({required Activity currentActivity}) {
return PageDemo();
},
);
static const indexGame = 2;
static final pageGame = ActivityPageItem(
code: 'page_game',
icon: Icon(UniconsLine.star),
builder: ({required Activity currentActivity}) {
return PageGame();
},
);
static const indexCamera = 3;
static final pageCamera = ActivityPageItem(
code: 'page_camera',
icon: Icon(UniconsLine.camera),
builder: ({required Activity currentActivity}) {
return PageCamera();
},
);
static const indexGraph = 4;
static final pageGraph = ActivityPageItem(
code: 'page_graph',
icon: Icon(UniconsLine.pen),
builder: ({required Activity currentActivity}) {
return PageGraph();
},
);
static const indexApi = 5;
static final pageApi = ActivityPageItem(
code: 'page_api',
icon: Icon(UniconsLine.link),
builder: ({required Activity currentActivity}) {
return PageApi();
},
);
static final Map<int, ActivityPageItem> items = {
indexHome: pageHome,
indexDemo: pageDemo,
indexGame: pageGame,
indexCamera: pageCamera,
indexGraph: pageGraph,
indexApi: pageApi,
};
static int defaultPageIndex = indexDemo;
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);
}
},
);
}
}
Loading