import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:window_manager/window_manager.dart'; import 'providers/providers.dart'; import 'screens/screens.dart'; import 'consts.dart' show kIsLinux, kIsMobile, kFontFamily, kFontFamilyFallback, kColorSchemeSeed; class App extends ConsumerStatefulWidget { const App({super.key}); @override ConsumerState createState() => _AppState(); } class _AppState extends ConsumerState with WindowListener { @override void initState() { super.initState(); windowManager.addListener(this); } @override void onWindowResized() { windowManager.getSize().then((value) { ref.read(settingsProvider.notifier).update(size: value); }); windowManager.getPosition().then((value) { ref.read(settingsProvider.notifier).update(offset: value); }); } @override void onWindowMoved() { windowManager.getPosition().then((value) { ref.read(settingsProvider.notifier).update(offset: value); }); } @override Widget build(BuildContext context) { return const Dashboard(); } @override void dispose() { windowManager.removeListener(this); super.dispose(); } } class DashApp extends ConsumerStatefulWidget { const DashApp({super.key}); @override ConsumerState createState() => _DashAppState(); } class _DashAppState extends ConsumerState { @override Widget build(BuildContext context) { final isDarkMode = ref.watch(settingsProvider.select((value) => value.isDark)); return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, fontFamily: kFontFamily, fontFamilyFallback: kFontFamilyFallback, colorSchemeSeed: kColorSchemeSeed, useMaterial3: true, brightness: Brightness.light, ), darkTheme: ThemeData( fontFamily: kFontFamily, fontFamilyFallback: kFontFamilyFallback, colorSchemeSeed: kColorSchemeSeed, useMaterial3: true, brightness: Brightness.dark, ), themeMode: isDarkMode ? ThemeMode.dark : ThemeMode.light, home: kIsMobile ? const MobileDashboard( title: 'Requests', scaffoldBody: CollectionPane(), ) : kIsLinux ? const Dashboard() : const App(), ); } }