Yeah completely agree with you. What problem I faced is, MaterialApp always have a navigator attached to it. Its difficult to pass data with Route map style where we define the screens where I can navigate well in advance. We can use the onGenerateRoute callback to pass data. But I wanted to go the BLoC way which is what I feel comfortable doing. I found out that we can access BLoC in our app using two different approach. 1) Single instance and 2) Scoped Instance. For this app I followed the Single Instance approach. It can be done with Scoped Instance(InheritedWidget) as well. There might be numerous ways but I am following one style. I really appreciate your comments and feedback. I will keep learning and finding better ways to architect Flutter projects.