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

import 'notifiers/typing_notifier.dart';
import 'notifiers/timer_notifier.dart';
import 'notifiers/test_notifier.dart';
import 'notifiers/settings_notifier.dart';
import 'pages/home_page.dart';
import 'pages/result_page.dart';

void main() {
  runApp(const TypePracticeApp());
}

class TypePracticeApp extends StatelessWidget {
  const TypePracticeApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (_) => TypingNotifier()),
        ChangeNotifierProvider(create: (_) => TimerNotifier()),
        ChangeNotifierProvider(create: (_) => SettingsNotifier()),
        ChangeNotifierProvider(
          create: (ctx) => TestNotifier(
            typingNotifier: ctx.read<TypingNotifier>(),
            timerNotifier: ctx.read<TimerNotifier>(),
            settings: ctx.read<SettingsNotifier>(),
          ),
        ),
      ],
      child: Consumer<SettingsNotifier>(
        builder: (_, settings, child) => MaterialApp(
          title: '打字练习',
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            colorSchemeSeed: Colors.indigo,
            brightness: Brightness.light,
            useMaterial3: true,
          ),
          darkTheme: ThemeData(
            colorSchemeSeed: Colors.indigo,
            brightness: Brightness.dark,
            useMaterial3: true,
          ),
          themeMode: settings.themeMode,
          initialRoute: '/',
          routes: {
            '/': (_) => const HomePage(),
            '/result': (_) => const ResultPage(),
          },
        ),
      ),
    );
  }
}