So, you are a developer looking for the next fun playground or evaluation viable technologies for your companies next big project?
As someone who has been there already and inevitably decided on Flutter, let me see if I can help you with that one.
Flutter is a cross-platform framework designed to allow developers/companies to use a single codebase and deploy to multiple platforms.
At the time of writing these included Mobile (Android/iOS), Web, Desktop (Mac, Windows, Linux), Smart TV’s/Devices (AppleTV, Android TV, Samsung Smart TV’s), Cars.
There is also presently no other framework capable of such an expansive deployment capability, the closest being React-Native which supports Android and iOS with Web being made possible by an external group of developers.
Flutter is not simply a Framework, it’s a complete solution for building applications, it’s SDK provides everything a developer needs in order to build a quality and performant user interface and includes pre-built widgets for both Material Desing (Android) as well as Cupertino (iOS).
So not only can you build for both platforms with a single codebase, but you can also build them using the native UI elements as well, giving your users a more familiar user experience without having to maintain 2 separate codebases.
Flutter is the framework, but Dart is the actual programming language behind it, like Flutter, Dart is also an open-sourced product being developed by Google.
Within its core, there is also a high-speed C++ compiler, the resulting combination allows for highly performant native experiences at 60 or even 120fps.
Unlike React-Native, Flutter and Dart make use of the Skia C++ graphics engine which minimizes interactions with the host operating system and removed the need for any form of Bridge.
There are many benefits to using Flutter, but like any other framework, nothing is perfect, so as always, an informed decision is based on knowing both the good and the bad.
Being a single framework in a single language that supports multiple platforms, I am sure you have guessed that it is much more cost-effective as you would not need a development team per platform.
Normally you would need 2 or 3 teams for an application, 1 for Android, another for iOS and a 3rd for Web if that was part of your product availability.
This also means that development time can be exponentially faster, which is extremely valuable for startups or MVP development of a new product.
Flutter aims to achieve true, native-like performance, out the box it aims to achieve 60fps and can even reach 120fps on supporting devices.
Flutter does not make use of any bridges as with other cross-platform frameworks which is how it manages to achieve such high levels of performance.
This ones for the developers, but also slips into that budget category, when developing Flutter has a listener running that listens for code changes, allowing near-instant updates to the currently connected device.
This means developer won’t lose their place within the application when the compiler recompiles the updated code, the developer can simply go back to the development device and carry on where they left off.
This way you get the benefits of more tangible work achieved in a smaller amount of time.
One of the biggest disadvantages to Flutter right now would be size, the core of the framework itself adds about 5MB to an application, which would mean it would be quite tricky to be able to use Flutter for something like InstantApps.
Flutter is still on the younger side when compared to its counterparts, and while it has matured quite a lot in this time and has even overshadowed what's currently available, this can lead to bigger and more impactful changes coming with each release.
Depending on these changes determines just how much of a con it can be, as it can also be considered a pro.
Much of the time the changes have minimal impact on the development and are as simple as running flutter upgrade and generally have significant impacts on the resulting applicant, either with new features supported or speed boosts.
However, with Flutter 2.0 shipping out, there was the potential for a larger impact on development with the sound null-safety release that required some considerable code changes in order to fully implement, this was mitigated with tooling and the ability to do this incrementally.
Being a newer framework, developers and especially experienced ones are quite scarce at this point so it could be a risk heading in this direction without doing some research in your area regarding developers and would be worth getting into the communities, you could always hire globally by building a remote team.
Overall, Flutter is likely to be a good long term choice and maybe worth any of the short term cons you may encounter.
This is just one person's opinion, feel free to get a second, third… tenth :D.
Hope you enjoyed the read, if you have any questions or comments go right ahead.
I hope you enjoyed this post, if you have any questions, comments, or suggestions, feel free to drop a comment.
If you liked it, a heart would be awesome, and if you really liked it, a cup of coffee would be great.
Thanks for reading.