58 lines
1.8 KiB
Dart
58 lines
1.8 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:yokutango_mobile_reader/models/data_entry.dart';
|
|
import 'package:yokutango_mobile_reader/models/router_args.dart';
|
|
import 'package:yokutango_mobile_reader/screens/home.dart';
|
|
import 'package:yokutango_mobile_reader/screens/pages/tango_list.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:yokutango_mobile_reader/screens/practise/practise.dart';
|
|
|
|
import 'screens/pages/kanji_list.dart';
|
|
|
|
class PageRouter {
|
|
static Route<dynamic> generateRoute(RouteSettings settings) {
|
|
final args = settings.arguments;
|
|
|
|
switch (settings.name) {
|
|
case '/':
|
|
return MaterialPageRoute(builder: (_) => const Home());
|
|
|
|
case '/list/tango':
|
|
final file = args as File;
|
|
return MaterialPageRoute(builder: (_) => TangoList(file: file));
|
|
|
|
case '/list/kanji':
|
|
final file = args as File;
|
|
return MaterialPageRoute(builder: (_) => KanjiList(file: file));
|
|
|
|
case '/benkyou/tango':
|
|
final benkyouArgs = args as BenkyouArgs;
|
|
return MaterialPageRoute(
|
|
builder: (_) => PractiseView(
|
|
entries: benkyouArgs.cards as List<YokutangoEntry>,
|
|
index: benkyouArgs.index ?? 0,
|
|
isKanji: false,
|
|
),
|
|
);
|
|
|
|
case '/benkyou/kanji':
|
|
final benkyouArgs = args as BenkyouArgs;
|
|
return MaterialPageRoute(
|
|
builder: (_) => PractiseView(
|
|
entries: benkyouArgs.cards as List<KanjiEntry>,
|
|
index: benkyouArgs.index ?? 0,
|
|
isKanji: true,
|
|
),
|
|
);
|
|
|
|
default:
|
|
return MaterialPageRoute(
|
|
builder: (_) => Scaffold(
|
|
appBar: AppBar(title: const Text('Error')),
|
|
body: Center(child: ErrorWidget('No such route...')),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
}
|