Implementing Flutter Base - Part 1: Why?

I. Why did I switch to Flutter?
After many years working in the field of Mobile programming, but up to now, I haven't been able to contribute to the community in any way. Now is the time for me to learn how to write a blog to share, continue learning and enhance my knowledge, and at the same time, it will help me improve my writing skills, enrich my vocabulary, thereby helping me to change gradually.
In this first tutorial, I would like to share my self-learning journey and how I've written a basic to advanced Flutter base from scratch.
I'd like a few minutes to share the reasons why.:
- In the past, our company built applications entirely using native development, which consumed a lot of resources and efforts to maintain a Mobile team (including both Android and iOS). To optimize this process, transitioning to another platform was a natural step. There were also questions about performance, costs, and human resources. The ultimate decision was to go with Flutter.
- So why Flutter, and not another option? There are numerous comparisons available online that address this question, but I'll refrain from going into specific details. The choice of the approach depends on the company's strategy as well as the nature of the project, each with its unique set of expectations and considerations.
After finalizing the decision to use Flutter, the next step was the learning process. Starting from scratch, getting familiar with the Dart language, and then building the foundational structure for the project. Leveraging past experiences with Native development and React, I dedicated one to two weeks to grasp the fundamentals of Flutter before diving into the development of the Flutter base.
II. Identify the important components that need to be in the base.
First is the basic understanding of Flutter, and identifying the essential components that need to be in the base:
- Thinking about working with Flutter in which architecture?
- How should state management be approached?
- A basic app always needs to connect to a backend -> How should the framework for this part be built (auto-generate code models, dependency injection)? How should the configuration of different environments like SIT -> UAT -> PROD be set up, and what should the project structure look like?
- How to navigate between screens?
- In a mobile project, there's usually a connection to Firebase -> How should it be implemented? And how can the Firebase structure be configured for different environments?
- How to store secure information?
- Multilingual support in the app.
- How to write cleaner and more concise code?
These are the essential headings to form the structure of a project, and in this series, I will share each part to help beginners get started. Those with more experience can also refer and provide feedback, which would be even better.
In the upcoming articles, we will tackle each of the above sections together. Thank you, and I hope to receive support from all of you.