import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:record/record.dart'; import 'core/network/api_repository.dart'; import 'core/notifications/completion_notification_service.dart'; import 'features/audio/presentation/cubit/voice_cubit.dart'; import 'features/chat/presentation/cubit/chat_cubit.dart'; import 'features/chat/presentation/pages/chat_page.dart'; const _green = Color(0xFF167C68); const _paper = Color(0xFFF6F5F0); Future main() async { WidgetsFlutterBinding.ensureInitialized(); await CompletionNotificationService.instance.initialize(); final api = ApiRepository( baseUrl: const String.fromEnvironment( 'API_BASE_URL', defaultValue: 'http://127.0.0.1:8000', ), ); runApp( MultiRepositoryProvider( providers: [RepositoryProvider.value(value: api)], child: MultiBlocProvider( providers: [ BlocProvider(create: (_) => ChatCubit(api)), BlocProvider(create: (_) => VoiceCubit(api, AudioRecorder())), ], child: const SovereignApp(), ), ), ); } class SovereignApp extends StatelessWidget { const SovereignApp({super.key}); @override Widget build(BuildContext context) => MaterialApp( title: 'Mithqal AI', debugShowCheckedModeBanner: false, theme: ThemeData( useMaterial3: true, scaffoldBackgroundColor: _paper, colorScheme: ColorScheme.fromSeed(seedColor: _green, surface: _paper), fontFamily: 'Segoe UI', ), home: const ChatPage(), ); }