Flutter - What Who Mo?
Nice to meet you - Flutter, from Google, is an open-source software package for developing applications for a variety of platforms such as Android, iOS, Linux, Mac, Windows, Google Fuchsia & Web using a single code base.
The mobile world is divided into two main operating systems that dominate the market, with which we are all familiar, Android and iOS. Have you ever wondered - when we open a product and mobile app, how do we decide which operating system to choose? Do we want an app for Android users or iOS users? Funny question? No? - You will be surprised to know that this is a question that has been asked in the past and decisions like it has been made for a variety of products and applications. In the past, many companies chose to develop for a specific operating system first and then adapt and develop for the second operating system. By the way, they usually started developing for Android-enabled devices and then developed, if at all, iOS.
How have we progressed from that dark past to the present?
Today, there is no question at all - when developing an app developer for all operating systems with a desire to support all types of devices and versions. This change is due to a clear business concept - if you are not there you do not exist. There is no self-respecting company or product that will not be present in all operating systems and app stores. So, what's the difference? In the past, there were two operating systems, and we chose not to develop them all or do so in stages over months or even years, if at all. Explaining the difference is simple - double investment - double resources and double costs (and even more). Why? Because it needs a separate developer team that will develop for Android and a separate developer team that will develop for iOS, each operating system in its programming language. In addition, the behavior and user experience are also not the same and therefore product managers, designers, marketing managers, app stores, and the rest of the research and development chain invest double time and effort to provide the same application to all systems.
So we went over the background, past, and present - what about the future?
The answer is Flutter - a hybrid development technology. If we stop for a moment and think simply about all the apps in the world - really about all of them. What is the difference between the same app on Android and the same app on iOS? Are WhatsApp users on Android enjoying more? Do Instagram users on iOS see a different app than Android users? Do our favorite new apps show different content on Android and iOS? - of course not. So why would the same application be written twice in different languages, in different code, in different architectures, by different developers and that dealing with them would require twice as many resources? Flutter is an efficient and sophisticated Cross-Platform technology and if in the past choosing a Cross-Platform approach was considered a compromise, today it is clear that choosing Flutter is a step that should be seriously considered in developing any application, including those that require significant resources. Flutter is written in Dart language and has an engine that includes the Skia graphics engine. The engine can run on top of various operating systems as if it were living in its own bubble. It is in one layer above the operating system and activates its native capabilities without being dependent on the system, components, and UI. The result is native performance and clean development that is not at all noticeable not done in the development language of Android or iOS. Another significant advantage of Flutter is the ability to perform Hot Reload. Did you make a change to the code and want to see how it works now? No need to render and wait for the process to end. After a quick save you can immediately see the effect of the change. This is a capability that significantly shortens development times. "
How complex is it to develop in Flutter? And what about performance?
The development in Flutter is based on widgets, so it is easy to reuse the existing ones. There is a large pool of ready-made UI components, they have several modes, and they adapt themselves to the operating system while it is running. For example, buttons, side menus, and tabs. Lists, for example, behave differently on Android and iOS, but Flutter can adjust the behavior automatically and thus eliminates the need to rebuild. It is also easy to develop development in Flutter to native code from a previous version, thanks to the bridging concept. In terms of performance - there is no harm to performance. The user experience is smooth and feels completely native. The engine manages all the processes and ensures 60FPS performance - which is equivalent to the native. On supported devices, it can even reach 120 FPS sometimes. The result works at the same level and the user will not feel the difference.
At the tip of the fork - more hybrid technologies compared to Flutter
Flutter is not alone in the mobile development market. Apart from native development for Android and iOS, there are also other development platforms, such as the Ionic open-source platform and the React Native platform from Facebook. But while Ionic focuses on the web and its capabilities and performance are mediocre and React Native has not yet left the beta stage and it is not clear how much Facebook plans to invest in it - Flutter is taking root and expanding. The platform is in production and large applications have already been chosen to be based on it, such as Ali Baba in the world and El-Al and IAI in Israel. The Flutter user community is growing rapidly and provides an extensive knowledge base of professionals. GitHub, which follows trends in the world of technology, introduces Flutter at the forefront of emerging development technologies today. Although she's a few years younger than React Native, Flutter's community size has already surpassed her.
How challenging is conversion to Flutter? Still, the development team needs to learn new technology
This is a relatively simple transition. It's very easy to take a native key of Android or iOS and convert it to Flutter. The same is true with web developers since the way Flutter works are somewhat like web development. In code writing and reactive work, for example. From our extensive experience at Compie, converting a development team requires quite a short study time. The training is fast and short and so is the learning curve. An experienced developer will not find the issue as complex. The principles of language development are already familiar to him. We have already gone through many developers who came without experience in Flutter and within a few weeks have already started programming in it.