Flutter is an open source toolkit developed by Google. It allows to create native applications compiled for iOS and Android, as well as websites and desktop applications. Flutter allows you to develop an application faster using Dart as a programming language; a language that is also developed by Google. Google was inspired by React to create the Flutter framework, of which they released the first version at the end of 2018.
The benefits for application development
Flutter allows you to develop your application from a single code base that can then be deployed on iOS, Android, the web and the desktop (Mac, Windows). This avoids the need to redevelop all the code for each platform with different languages.
The framework is easy to use because most of the widgets already exist. They are reusable components that can be used everywhere in your project to make the work faster. There are widgets that allow you to create a list or a navigation bar, there are widgets that are there to help you place elements on the page or create a form in just a few lines. After a bit of practice, the Dart language becomes quite intuitive and allows you to exploit the potential of widgets.
With Flutter it’s very easy to see in real time the changes you make in your code because it is equipped with a powerful hot reload. When you save your code, the changes made are displayed after a few seconds on the device and there is no need to restart the application entirely.
Another positive point is that there are a lot of packages that can be used and that are there to make the work easier. Other developers have coded them and made them available. Just import them and they are ready to use. An example of an often used package is Google authentication which allows you to login to an application with your google login without having to create a new account.
The limits of this technology
As this is a rather recent technology, not everything is optimal yet.
Flutter is not very suitable for large projects. The files take a lot of space which has a consequence on the final application because it becomes slower at startup.
In terms of documentation, there is a lack on some aspects, even if solutions can be found on the internet for most cases.
Finally, pre-existing packages are missing when we want to get into more complicated notions such as graphics or calendars. There are a few but they are not complete or do not do exactly what you want. So you have to modify them to get a correct result.
To sum up
Flutter is a very good way to build an application for iOS and Android quickly once you learn the Dart language. Widgets are easy to use and help speed up the development process. For someone who has never used Dart, it will obviously take time to learn and understand the language, which is a slight hitch for first applications.
So should you choose Flutter for your next mobile application project? As is often the case with technology choices, it all depends on the needs and functionalities of your project in order to determine what will be the most optimal development technology.
A good article on the pros and cons: https://www.altexsoft.com/blog/engineering/pros-and-cons-of-flutter-app-development/
A good article on the more technical aspects (in French):