Flutter: A few Advantages and Disadvantages of this famous Framework
Maybe you have heard about flutter a lot lately, and in this article we’ll talk a bit more about why this framework is so trendy and why you should consider using it in your mobile app development.
Cross-platform framework characteristics
Flutter is a cross-platform framework, which means that it has the same code base for IOS, Android, Windows, Linux, macOS, and Web and generates the same application for all these platforms quickly, without more significant problems as coding an entire project in another environment, which it is necessary when dealing with Native Frameworks.
All you have to do in order to keep the development for both IOS and Android simultaneously is always configure the AndroidManifest.xml (for android) and Info.plist (for IOS) files to keep the permission and operations working fine for these platforms.
In some cases, you will have to pay more attention when you are building screens because the Notch of the iPhone, for example, can provoke an overflow in your layout. But in some other cases, Flutter will automatically recognize the system and configure the Widget on the screen to fit even if the Notch is there or not.
And sometimes configuring libraries to work in both systems can be tough, because each system behaves in a different way, and it can take time of development.
But in most of the cases just installing and following straight the documentation of the library can solve all of your possible problems.
Development and Design toolkit
Flutter has a complete toolkit for interface development, making it easier for the development and design team work together. This toolkit makes it possible to build rich and creative interfaces
Take a look at this video to see how rich your app can be when developed with flutter: https://www.youtube.com/watch?v=6Hb3QiH_yps
Talking about Architecture
When we are talking about Flutter architecture we have to be careful, because it is an agnostic framework that gives you the freedom to choose any architecture based on your needs. So, if you make bad choices at the beginning of the development, your app will be affected later on, but, on the other hand, you can mix, create and even recreate some patterns that are available in the Community of Flutter and Dart.
One thing that is vastly debated in the Flutter community is its state managers, because some of them as a Bloc offer to the development team a great possibility of control of the events and states, but it costs the readability of the project, making necessary for the developer to write a lot of boilerplate code to create small modules.
And some others are simpler, such as State Notifier, which will make the process of Development swifter, but without the level of state control that Bloc offers.
Dart Language
This language is awesome. Very clear, strongly typed, all based on Object Orientation, and has a great community that is always growing.
Flutter is all based only on Dart Language, and it brings a vast number of benefits that makes a Flutter project clean, readable, and with good writing syntax.
But there is a downside about Flutter being 100% based only on Dart Lang, that is its in-growing community state, making necessary to the development team to create some features from scratch, such as a regex and small functions that will need to develop some specific features.
Conclusion
This framework is awesome, I’ve already had the experience of working with React Native on some projects, which is Flutter’s main competitor in the field of cross-platform frameworks, but, to be honest, the experience working with flutter was way better, since the control of building screens until the navigation handling and state management.
And differently from what people think about performance in cross-platform frameworks, Flutter can build apps that are as fast as the native ones, running up to 60 frames per second and occupying almost the same space in the device’s memory.
Maybe, in the beginning, it will be a bit harder to get used to the way you build screens and treat the state management, because it is all different from the base HTML and CSS that we are used to use in web development. However, after learning well its logic, the productivity level of the development team is unparalleled.