import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'providers/providers.dart'; import 'screens/homes_screen.dart'; import 'screens/remote_screen.dart'; void main() { runApp(const ProviderScope(child: IgnisApp())); } class IgnisApp extends StatelessWidget { const IgnisApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Ignis', debugShowCheckedModeBanner: false, theme: ThemeData.dark(useMaterial3: true).copyWith( scaffoldBackgroundColor: const Color(0xFF0E0E0E), colorScheme: ColorScheme.fromSeed( seedColor: Colors.deepOrange, brightness: Brightness.dark, ), appBarTheme: const AppBarTheme( backgroundColor: Color(0xFF1A1A1A), elevation: 0, centerTitle: true, ), cardTheme: CardThemeData( color: const Color(0xFF1E1E1E), elevation: 2, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), ), sliderTheme: const SliderThemeData( trackHeight: 4, thumbShape: RoundSliderThumbShape(enabledThumbRadius: 8), ), ), home: const MainGate(), ); } } /// Стартовый экран -- проверяет наличие домов и перенаправляет class MainGate extends ConsumerStatefulWidget { const MainGate({super.key}); @override ConsumerState createState() => _MainGateState(); } class _MainGateState extends ConsumerState { @override void initState() { super.initState(); _bootstrap(); } Future _bootstrap() async { try { // Загружаем список домов await ref.read(homesProvider.notifier).load(); await ref.read(currentHomeProvider.notifier).load(); if (!mounted) return; final home = ref.read(currentHomeProvider); if (home != null) { // Есть дом -- идём на пульт управления await ref.read(groupsProvider.notifier).initAndRefresh(); if (mounted) { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const RemoteScreen()), ); } } else { // Нет домов -- на экран управления домами if (mounted) { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const HomesScreen()), ); } } } catch (e) { debugPrint("Ошибка бутстрапа: $e"); if (mounted) { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const HomesScreen()), ); } } } @override Widget build(BuildContext context) { return const Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ CircularProgressIndicator(color: Colors.deepOrange), SizedBox(height: 20), Text("Загрузка...", style: TextStyle(color: Colors.white54)), ], ), ), ); } }