import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

import 'data/card.dart';
import 'page/about_page.dart';
import 'page/game_page.dart';
import 'page/home_page.dart';
import 'page/setting_page.dart';

part 'route.g.dart';

@TypedGoRoute<HomeRoute>(path: '/')
class HomeRoute extends GoRouteData {
  @override
  Widget build(BuildContext context, GoRouterState state) {
    return const HomePage();
  }
}

@TypedGoRoute<SettingRoute>(path: '/setting')
class SettingRoute extends GoRouteData {
  @override
  Widget build(BuildContext context, GoRouterState state) {
    return const SettingPage();
  }
}

@TypedGoRoute<GameRouter>(path: '/game')
class GameRouter extends GoRouteData {
  final String cardName;
  final String assetPath;
  final List<int> answer;
  final int baseTime;
  final int lowerTime;
  final int upperTime;

  GameRouter({
    required this.cardName,
    required this.assetPath,
    required this.answer,
    required this.baseTime,
    required this.lowerTime,
    required this.upperTime,
  });

  @override
  Widget build(BuildContext context, GoRouterState state) {
    return GamePage(
      card: CardItem(
        cardName: cardName,
        assetPath: assetPath,
        answer: answer,
        baseTime: baseTime,
        lowerTime: lowerTime,
        upperTime: upperTime,
      ),
    );
  }
}

@TypedGoRoute<AboutRouter>(path: '/about')
class AboutRouter extends GoRouteData {
  @override
  Widget build(BuildContext context, GoRouterState state) {
    return const AboutPage();
  }
}