Files
hlaskovnik-reimagined/frontend/lib/main.dart
T
2026-04-03 18:23:54 +02:00

80 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:frontend/provider/theme_provider.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import 'values/strings.dart';
import 'main_scaffold.dart';
// providers
import 'provider/quote_provider.dart';
// pages
import 'pages/list.dart';
import 'pages/add.dart';
import 'pages/flashcards.dart';
import 'pages/leaderboard.dart';
//import 'pages/settings.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final isDark = await loadDarkMode();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => QuoteProvider()
),
ChangeNotifierProvider(
create: (_) => ThemeProvider(isDark: isDark)
)
],
child: HlaskovnikFrontendApp()
)
);
}
class HlaskovnikFrontendApp extends StatelessWidget {
HlaskovnikFrontendApp({super.key});
final _router = GoRouter(
routes: [
ShellRoute(
builder: (context, state, child) {
return MainScaffold(child: child);
},
routes: [
GoRoute(path: '/', builder: (context, state) => ListPage()),
GoRoute(path: '/add', builder: (context, state) => AddPage()),
GoRoute(path: '/flashcards', builder: (context, state) => FlashcardsPage()),
GoRoute(path: '/leaderboard', builder: (context, state) => LeaderboardPage()),
//GoRoute(path: '/settings', builder: (context, state) => SettingsPage()),
],
),
],
);
@override
Widget build(BuildContext context) {
final themeProvider = context.watch<ThemeProvider>();
return MaterialApp.router(
title: Strings.appName,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.red,
brightness: Brightness.light,
),
useMaterial3: true,
),
darkTheme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.red,
brightness: Brightness.dark,
),
useMaterial3: true,
),
themeMode: themeProvider.isDark ? ThemeMode.dark : ThemeMode.system,
routerConfig: _router,
);
}
}