zubairehman / flutter_boilerplate_project

A boilerplate project created in flutter using MobX and Provider.
http://zubairehman.surge.sh/
MIT License
2.26k stars 905 forks source link

why is languagestore, themestore, userstore registered in service_locator #126

Open dyardy opened 2 years ago

dyardy commented 2 years ago

I notice in feature/mvi branch (the latest) that languagestore, themestore, userstore is registered in service_locator AS well as new'd up again in MyApp. This seems like duplication

i.e. getIt.registerSingleton(LanguageStore(getIt())); getIt.registerSingleton(ThemeStore(getIt())); getIt.registerSingleton(UserStore(getIt()));

and also in my_app.dart final ThemeStore _themeStore = ThemeStore(getIt()); final PostStore _postStore = PostStore(getIt()); final LanguageStore _languageStore = LanguageStore(getIt()); final UserStore _userStore = UserStore(getIt());

tribal2 commented 2 years ago

I notice the same because the UserStore builder was being called twice. I changed my code to:

-  final ThemeStore _themeStore = ThemeStore(getIt<Repository>());
-  final PostStore _postStore = PostStore(getIt<Repository>());
-  final LanguageStore _languageStore = LanguageStore(getIt<Repository>());
-  final UserStore _userStore = UserStore(getIt<UserRepository>());

+  final ThemeStore _themeStore = getIt<ThemeStore>();
+  final PostStore _postStore = getIt<PostStore>();
+  final LanguageStore _languageStore = getIt<LanguageStore>();
+  final UserStore _userStore = getIt<UserStore>();

I'm still learning Dart so I don't know if this was made on purpose or if this is a bug 🤷‍♂️

v1pz3n commented 1 year ago

@tribal2 thanks buddy! I think it's a bug as it double-initializes the store. I applied your suggestion and it solved the problem of values saved in shared preferences when starting the application.