Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:downloads_path_provider/downloads_path_provider.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_bloc/flutter_bloc.dart';
- import 'package:messio/blocs/attachments/AttachmentsBloc.dart';
- import 'package:messio/blocs/chats/Bloc.dart';
- import 'package:messio/blocs/config/Bloc.dart';
- import 'package:messio/blocs/contacts/Bloc.dart';
- import 'package:messio/blocs/home/Bloc.dart';
- import 'package:messio/config/Constants.dart';
- import 'package:messio/config/Themes.dart';
- import 'package:messio/pages/HomePage.dart';
- import 'package:messio/repositories/AuthenticationRepository.dart';
- import 'package:messio/repositories/ChatRepository.dart';
- import 'package:messio/repositories/StorageRepository.dart';
- import 'package:messio/repositories/UserDataRepository.dart';
- import 'package:messio/utils/SharedObjects.dart';
- import 'package:path_provider/path_provider.dart';
- import 'blocs/authentication/Bloc.dart';
- import 'pages/RegisterPage.dart';
- void main() async {
- //create instances of the repositories to supply them to the app
- final AuthenticationRepository authRepository = AuthenticationRepository();
- final UserDataRepository userDataRepository = UserDataRepository();
- final StorageRepository storageRepository = StorageRepository();
- final ChatRepository chatRepository = ChatRepository();
- SharedObjects.prefs = await CachedSharedPreferences.getInstance();
- Constants.cacheDirPath = (await getTemporaryDirectory()).path;
- Constants.downloadsDirPath =
- (await DownloadsPathProvider.downloadsDirectory).path;
- runApp(MultiBlocProvider(
- providers: [
- BlocProvider<AuthenticationBloc>(
- builder: (context) => AuthenticationBloc(
- authenticationRepository: authRepository,
- userDataRepository: userDataRepository,
- storageRepository: storageRepository)
- ..dispatch(AppLaunched()),
- ),
- BlocProvider<ContactsBloc>(
- builder: (context) => ContactsBloc(
- userDataRepository: userDataRepository,
- chatRepository: chatRepository),
- ),
- BlocProvider<ChatBloc>(
- builder: (context) => ChatBloc(
- userDataRepository: userDataRepository,
- storageRepository: storageRepository,
- chatRepository: chatRepository),
- ),
- BlocProvider<AttachmentsBloc>(
- builder: (context) => AttachmentsBloc(chatRepository: chatRepository),
- ),
- BlocProvider<HomeBloc>(
- builder: (context) => HomeBloc(chatRepository: chatRepository),
- ),
- BlocProvider<ConfigBloc>(
- builder: (context) => ConfigBloc(),
- )
- ],
- child: Messio(),
- ));
- }
- // ignore: must_be_immutable
- class Messio extends StatelessWidget {
- ThemeData theme;
- @override
- Widget build(BuildContext context) {
- return BlocBuilder<ConfigBloc, ConfigState>(builder: (context, state) {
- if (state is UnConfigState) {
- theme = SharedObjects.prefs.getBool(Constants.configDarkMode)
- ? Themes.dark
- : Themes.light;
- }
- if (state is ConfigChangeState && state.key == Constants.configDarkMode) {
- theme = state.value ? Themes.dark : Themes.light;
- }
- return MaterialApp(
- title: 'Messio',
- theme: theme,
- debugShowCheckedModeBanner: false,
- home: BlocBuilder<AuthenticationBloc, AuthenticationState>(
- builder: (context, state) {
- // return AttachmentPage();
- if (state is UnAuthenticated) {
- return RegisterPage();
- } else if (state is ProfileUpdated) {
- BlocProvider.of<ChatBloc>(context).dispatch(FetchChatListEvent());
- return HomePage();
- // return ConversationPageSlide();
- } else {
- return RegisterPage();
- }
- },
- ),
- );
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement