57 lines
2.0 KiB
Dart
57 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'core/theme/app_theme.dart';
|
|
import 'features/auth/presentation/bloc/auth_bloc.dart';
|
|
import 'features/auth/presentation/bloc/auth_event.dart';
|
|
import 'features/chat/presentation/bloc/chat_bloc.dart';
|
|
import 'features/chat/presentation/bloc/chat_event.dart';
|
|
import 'features/settings/presentation/bloc/settings_bloc.dart';
|
|
import 'features/settings/presentation/bloc/settings_event.dart';
|
|
import 'features/settings/presentation/bloc/settings_state.dart';
|
|
import 'features/settings/presentation/l10n/app_localizations.dart';
|
|
import 'internal/di/injection_container.dart' as di;
|
|
import 'internal/router/main_screen.dart';
|
|
|
|
class MessengerApp extends StatelessWidget {
|
|
const MessengerApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MultiBlocProvider(
|
|
providers: [
|
|
BlocProvider<SettingsBloc>(
|
|
create: (_) => di.sl<SettingsBloc>()..add(const SettingsEvent.started()),
|
|
),
|
|
BlocProvider<AuthBloc>(
|
|
create: (_) => di.sl<AuthBloc>()..add(const AuthEvent.authChecked()),
|
|
),
|
|
BlocProvider<ChatBloc>(
|
|
create: (_) => di.sl<ChatBloc>()..add(const ChatEvent.started()),
|
|
),
|
|
],
|
|
child: BlocBuilder<SettingsBloc, SettingsState>(
|
|
builder: (context, settingsState) {
|
|
final languageCode = settingsState is SettingsLoaded
|
|
? settingsState.languageCode
|
|
: 'ru';
|
|
|
|
return MaterialApp(
|
|
title: 'Messenger',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: AppTheme.lightTheme,
|
|
darkTheme: AppTheme.darkTheme,
|
|
themeMode: ThemeMode.system,
|
|
locale: Locale(languageCode),
|
|
supportedLocales: const [
|
|
Locale('ru'),
|
|
Locale('en'),
|
|
],
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
home: const MainScreen(),
|
|
);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|