import 'package:flutter/material.dart'; import '../screens/home.dart'; import '../screens/info/about.dart'; import '../screens/info/licenses.dart'; import '../screens/search/result_page.dart'; import '../screens/search/search_mechanisms/drawing.dart'; import '../screens/search/search_mechanisms/grade_list.dart'; import '../screens/search/search_mechanisms/radical_list.dart'; import 'routes.dart'; Route generateRoute(RouteSettings settings) { final args = settings.arguments; switch (settings.name) { case Routes.root: return MaterialPageRoute(builder: (_) => const Home()); case Routes.search: final searchTerm = args! as String; return MaterialPageRoute( builder: (_) => ResultPage(searchTerm: searchTerm, isKanji: false), ); case Routes.kanjiSearch: final searchTerm = args! as String; return MaterialPageRoute( builder: (_) => ResultPage(searchTerm: searchTerm, isKanji: true), ); case Routes.kanjiSearchDraw: return MaterialPageRoute(builder: (_) => const KanjiDrawingSearch()); case Routes.kanjiSearchGrade: return MaterialPageRoute(builder: (_) => const KanjiGradeSearch()); case Routes.kanjiSearchRadicals: final prechosenRadical = args as String?; return MaterialPageRoute( builder: (_) => KanjiRadicalSearch(prechosenRadical: prechosenRadical), ); case Routes.about: return MaterialPageRoute(builder: (_) => const AboutView()); case Routes.aboutLicenses: return MaterialPageRoute(builder: (_) => const LicensesView()); // TODO: Add more specific error screens. case Routes.errorNotFound: case Routes.errorNetwork: case Routes.errorOther: default: return MaterialPageRoute( builder: (_) => Scaffold( appBar: AppBar(title: const Text('Error'), backgroundColor: Colors.red), body: Center(child: ErrorWidget('Some kind of error occured')), ), ); } }