import 'package:diameter/localization_keys.dart'; import 'package:diameter/screens/category/categories.dart'; import 'package:diameter/screens/category/accuracy_detail.dart'; import 'package:diameter/screens/category/accuracy_list.dart'; import 'package:diameter/screens/category/event_type_detail.dart'; import 'package:diameter/screens/category/event_type_list.dart'; import 'package:diameter/screens/category/meal_source_detail.dart'; import 'package:diameter/screens/category/meal_source_list.dart'; import 'package:diameter/screens/category/meal_category_detail.dart'; import 'package:diameter/screens/category/meal_category_list.dart'; import 'package:diameter/screens/category/meal_portion_type_detail.dart'; import 'package:diameter/screens/category/meal_portion_type_list.dart'; import 'package:diameter/screens/basal/basal_detail.dart'; import 'package:diameter/screens/basal/basal_profile_detail.dart'; import 'package:diameter/screens/basal/basal_profile_list.dart'; import 'package:diameter/screens/bolus/bolus_detail.dart'; import 'package:diameter/screens/bolus/bolus_profile_detail.dart'; import 'package:diameter/screens/bolus/bolus_profile_list.dart'; import 'package:diameter/screens/log/log_entry/log_bolus_detail.dart'; import 'package:diameter/screens/log/log_overview.dart'; import 'package:diameter/screens/reports/daily_chart.dart'; import 'package:diameter/screens/log/log_entry/log_entry.dart'; import 'package:diameter/screens/log/log_event/log_event_detail.dart'; import 'package:diameter/screens/log/log_event/log_event_list.dart'; import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; import 'package:diameter/screens/meal/meal_detail.dart'; import 'package:diameter/screens/meal/meal_list.dart'; import 'package:diameter/screens/reports/export.dart'; import 'package:diameter/screens/reports/reports.dart'; import 'package:diameter/settings.dart'; import 'package:flutter/material.dart'; import 'package:flutter_translate/flutter_translate.dart'; class Routes { static const String basal = BasalDetailScreen.routeName; static const String basalProfile = BasalProfileDetailScreen.routeName; static const String basalProfiles = BasalProfileListScreen.routeName; static const List basalRoutes = [basal, basalProfile, basalProfiles]; static const String bolus = BolusDetailScreen.routeName; static const String bolusProfile = BolusProfileDetailScreen.routeName; static const String bolusProfiles = BolusProfileListScreen.routeName; static const List bolusRoutes = [bolus, bolusProfile, bolusProfiles]; static const String log = LogScreen.routeName; static const String logEntry = LogEntryScreen.routeName; static const String logMeal = LogMealDetailScreen.routeName; static const String logBolus = LogBolusDetailScreen.routeName; static const List logEntryRoutes = [log, logEntry, logMeal, logBolus]; static const String logEvent = LogEventDetailScreen.routeName; static const String logEvents = LogEventListScreen.routeName; static const List logEventRoutes = [logEvent, logEvents]; static const String reports = ReportsOverviewScreen.routeName; static const String export = ExportDialog.routeName; static const String dailyChart = DailyChart.routeName; static const List reportRoutes = [export, reports, dailyChart]; static const String meal = MealDetailScreen.routeName; static const String meals = MealListScreen.routeName; static const List mealRoutes = [meal, meals]; static const String eventType = EventTypeDetailScreen.routeName; static const String eventTypes = EventTypeListScreen.routeName; static const List eventTypeRoutes = [eventType, eventTypes]; static const String mealCategory = MealCategoryDetailScreen.routeName; static const String mealCategories = MealCategoryListScreen.routeName; static const List mealCategoryRoutes = [mealCategory, mealCategories]; static const String mealPortionType = MealPortionTypeDetailScreen.routeName; static const String mealPortionTypes = MealPortionTypeListScreen.routeName; static const List mealPortionTypeRoutes = [ mealPortionType, mealPortionTypes ]; static const String mealSource = MealSourceDetailScreen.routeName; static const String mealSources = MealSourceListScreen.routeName; static const List mealSourceRoutes = [mealSource, mealSources]; static const String accuracy = AccuracyDetailScreen.routeName; static const String accuracies = AccuracyListScreen.routeName; static const List accuracyRoutes = [accuracy, accuracies]; static const String category = CategoryOverviewScreen.routeName; static const List categoryRoutes = [ category, ...eventTypeRoutes, ...mealCategoryRoutes, ...mealPortionTypeRoutes, ...mealSourceRoutes, ...accuracyRoutes ]; static const String settings = SettingsScreen.routeName; } class Navigation extends StatefulWidget { final String? currentLocation; const Navigation({Key? key, this.currentLocation}) : super(key: key); @override State createState() => _NavigationState(); } class _NavigationState extends State { void selectDestination(String destination) { Navigator.pushReplacementNamed(context, destination); } @override Widget build(BuildContext context) { return Drawer( child: ListView(padding: EdgeInsets.zero, children: [ const SizedBox( child: UserAccountsDrawerHeader( accountName: Text('Sarah'), accountEmail: Text('sarah@sudo.ca'), ), ), ListTile( title: Text(translate(LocalizationKeys.navigation_log)), leading: const Icon(Icons.dashboard), onTap: () { selectDestination(Routes.log); }, selected: widget.currentLocation == Routes.log, ), ListTile( title: Text(translate(LocalizationKeys.navigation_logEvents)), leading: const Icon(Icons.event), onTap: () { selectDestination(Routes.logEvents); }, selected: widget.currentLocation == Routes.logEvents, ), ListTile( title: Text(translate(LocalizationKeys.navigation_reports)), leading: const Icon(Icons.show_chart), onTap: () { selectDestination(Routes.reports); }, selected: Routes.reportRoutes.contains(widget.currentLocation), ), ListTile( title: Text(translate(LocalizationKeys.navigation_meals)), leading: const Icon(Icons.dinner_dining), onTap: () { selectDestination(Routes.meals); }, selected: Routes.mealRoutes.contains(widget.currentLocation), ), ListTile( title: Text(translate(LocalizationKeys.navigation_basalProfiles)), leading: const Icon(Icons.access_time), onTap: () { selectDestination(Routes.basalProfiles); }, selected: Routes.basalRoutes.contains(widget.currentLocation), ), ListTile( title: Text(translate(LocalizationKeys.navigation_bolusProfiles)), leading: const Icon(Icons.medication), onTap: () { selectDestination(Routes.bolusProfiles); }, selected: Routes.bolusRoutes.contains(widget.currentLocation), ), ListTile( title: Text(translate(LocalizationKeys.navigation_categorization)), leading: const Icon(Icons.category), onTap: () { selectDestination(Routes.category); }, selected: Routes.categoryRoutes.contains(widget.currentLocation), ), ListTile( title: Text(translate(LocalizationKeys.navigation_settings)), leading: const Icon(Icons.settings), onTap: () { selectDestination(Routes.settings); }, selected: widget.currentLocation == Routes.settings, ) ])); } }