import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'services/api_client.dart'; import 'providers/auth_provider.dart'; import 'providers/agent_provider.dart'; import 'providers/call_provider.dart'; import 'screens/login_screen.dart'; import 'screens/dashboard_screen.dart'; class TwpSoftphoneApp extends StatefulWidget { const TwpSoftphoneApp({super.key}); @override State createState() => _TwpSoftphoneAppState(); } class _TwpSoftphoneAppState extends State { final _apiClient = ApiClient(); @override Widget build(BuildContext context) { return ChangeNotifierProvider( create: (_) { final auth = AuthProvider(_apiClient); auth.tryRestoreSession(); return auth; }, child: MaterialApp( title: 'TWP Softphone', debugShowCheckedModeBanner: false, theme: ThemeData( colorSchemeSeed: Colors.blue, useMaterial3: true, brightness: Brightness.light, ), darkTheme: ThemeData( colorSchemeSeed: Colors.blue, useMaterial3: true, brightness: Brightness.dark, ), home: Consumer( builder: (context, auth, _) { if (auth.state == AuthState.authenticated) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => AgentProvider( auth.apiClient, auth.sseService, )..refresh(), ), ChangeNotifierProvider( create: (_) => CallProvider(auth.voiceService), ), ], child: const DashboardScreen(), ); } return const LoginScreen(); }, ), ), ); } }