Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. import 'package:downloads_path_provider/downloads_path_provider.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_bloc/flutter_bloc.dart';
  4. import 'package:messio/blocs/attachments/AttachmentsBloc.dart';
  5. import 'package:messio/blocs/chats/Bloc.dart';
  6. import 'package:messio/blocs/config/Bloc.dart';
  7. import 'package:messio/blocs/contacts/Bloc.dart';
  8. import 'package:messio/blocs/home/Bloc.dart';
  9. import 'package:messio/config/Constants.dart';
  10. import 'package:messio/config/Themes.dart';
  11. import 'package:messio/pages/HomePage.dart';
  12. import 'package:messio/repositories/AuthenticationRepository.dart';
  13. import 'package:messio/repositories/ChatRepository.dart';
  14. import 'package:messio/repositories/StorageRepository.dart';
  15. import 'package:messio/repositories/UserDataRepository.dart';
  16. import 'package:messio/utils/SharedObjects.dart';
  17. import 'package:path_provider/path_provider.dart';
  18. import 'blocs/authentication/Bloc.dart';
  19. import 'pages/RegisterPage.dart';
  20.  
  21. void main() async {
  22. //create instances of the repositories to supply them to the app
  23. final AuthenticationRepository authRepository = AuthenticationRepository();
  24. final UserDataRepository userDataRepository = UserDataRepository();
  25. final StorageRepository storageRepository = StorageRepository();
  26. final ChatRepository chatRepository = ChatRepository();
  27. SharedObjects.prefs = await CachedSharedPreferences.getInstance();
  28. Constants.cacheDirPath = (await getTemporaryDirectory()).path;
  29. Constants.downloadsDirPath =
  30. (await DownloadsPathProvider.downloadsDirectory).path;
  31. runApp(MultiBlocProvider(
  32. providers: [
  33. BlocProvider<AuthenticationBloc>(
  34. builder: (context) => AuthenticationBloc(
  35. authenticationRepository: authRepository,
  36. userDataRepository: userDataRepository,
  37. storageRepository: storageRepository)
  38. ..dispatch(AppLaunched()),
  39. ),
  40. BlocProvider<ContactsBloc>(
  41. builder: (context) => ContactsBloc(
  42. userDataRepository: userDataRepository,
  43. chatRepository: chatRepository),
  44. ),
  45. BlocProvider<ChatBloc>(
  46. builder: (context) => ChatBloc(
  47. userDataRepository: userDataRepository,
  48. storageRepository: storageRepository,
  49. chatRepository: chatRepository),
  50. ),
  51. BlocProvider<AttachmentsBloc>(
  52. builder: (context) => AttachmentsBloc(chatRepository: chatRepository),
  53. ),
  54. BlocProvider<HomeBloc>(
  55. builder: (context) => HomeBloc(chatRepository: chatRepository),
  56. ),
  57. BlocProvider<ConfigBloc>(
  58. builder: (context) => ConfigBloc(),
  59. )
  60. ],
  61. child: Messio(),
  62. ));
  63. }
  64.  
  65. // ignore: must_be_immutable
  66. class Messio extends StatelessWidget {
  67. ThemeData theme;
  68.  
  69. @override
  70. Widget build(BuildContext context) {
  71. return BlocBuilder<ConfigBloc, ConfigState>(builder: (context, state) {
  72. if (state is UnConfigState) {
  73. theme = SharedObjects.prefs.getBool(Constants.configDarkMode)
  74. ? Themes.dark
  75. : Themes.light;
  76. }
  77. if (state is ConfigChangeState && state.key == Constants.configDarkMode) {
  78. theme = state.value ? Themes.dark : Themes.light;
  79. }
  80. return MaterialApp(
  81. title: 'Messio',
  82. theme: theme,
  83. debugShowCheckedModeBanner: false,
  84. home: BlocBuilder<AuthenticationBloc, AuthenticationState>(
  85. builder: (context, state) {
  86. // return AttachmentPage();
  87. if (state is UnAuthenticated) {
  88. return RegisterPage();
  89. } else if (state is ProfileUpdated) {
  90. BlocProvider.of<ChatBloc>(context).dispatch(FetchChatListEvent());
  91. return HomePage();
  92. // return ConversationPageSlide();
  93. } else {
  94. return RegisterPage();
  95. }
  96. },
  97. ),
  98. );
  99. });
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement