Guide to design Flutter app architecture with MVVM pattern, dependency injection, clean code, code generation and retrofit for API calls