What is Flutter?
Popular cross-platform conception could not be ignored by industry monster Google. So, React Native got his maybe main competitor for now.
Flutter is attracting a lot of attention from all the developers and customers. Many technological meetups, conferences and talk shows are referring to this particular cross-platform. The number of Flutter mobile apps in AppStore and Google Play have been increasing more and more.
Open-source developing framework for mobile applications also known as Flutter is utilized as a developing platform of mobile applications for Android and iOS. Flutter uses Dart as the programming language. You can start to meet Flutter from its home page or FAQ.
The first version of Flutter was known as “Sky” and ran on the Android operating system. It was revealed at the 2015 Dart developer summit, with the intent of being able to render consistently at 120 frames per second. During the keynote of Google Developer Days in Shanghai, Google announced Flutter Release preview 2 which is the last big release before Flutter 1.0. On December 4, 2018, Flutter 1.0 was released at the Flutter Live event, denoting the first stable version of the Framework. On December 11, 2019, Flutter 1.12 was released at the Flutter Interactive event, it was announced that Flutter was the first UI platform designed for ambient computing.
So, Flutter is considered as comparatively new platform, despite this, there are many famous companies who have already used this platform for their solutions, among them: Alibaba Group, Tencent, Abby Road Studios, BMW, Groupon, CapitalOne, Square, Ebay, EMAAR and, of course – Google. Thus even being new Flutter has influenced the market and has grabbed the space in the app development industry.
The developing platforms of Flutter are: Windows, MacOS, Linux.
Flutter is used to develop applications for Android, iOS, Windows, Mac, Linux, Google Fuchsia and the web.
It is interesting to know that Flutter UI elements follow specific guidelines. Flutter is freebie and open source product. Architecture based on reactive programming. Flutter is highly customizable and have fast widgets. Dart, which is used in developing, is objective-oriented programming language. The C++ rendering engine is used in it.
Advantages of using Flutter
Main but not unique advantages, which are true for almost every cross-platform frameworks:
- Faster Development
- Simultaneous App Updates on Android and iOS
- Easier to Maintain and Develop New Features
All of the advantages above arise due to the main feature – same code. Developers can use the same code base for both Android and iOS apps.
The development process requires less coding, and thus, one can launch fester. If developer need to add/modify feature during the maintenance, he/she just have to make it in one place to both the platforms together.
High Performance. Performance of an app is very important always. Main factors impact the performance: response time, CPU usage, frame number, request number, etc. Flutter offers stable 60fps, that is the rate at which synchronously screens display a clear and smooth picture. Compared to React Native and Xamarin, Flutter framework is ahead.
Hot reload feature. Flutter’s architecture has hot reload function, Just-in-Time (JIT) compilation, which allows developers to observe any change made to the code in real-time. So, no one need to re-start the app to carry on after every code modification. Updated source code can be inscribed to the app in functioning condition.
The widget tree is automatically created by Flutter to provide the real-time. The hot reload feature makes the process speeding and improved. Developers can test new features, catch the bugs before they appear, get UI refreshed during the process without any hassle. Immediate updates is very convenient feature for devs, of course. Consequently, improved productivity assists with fast iterations.
Easy to learn. Dart is simple to learn. Developers with little coding knowledge can start to develop prototypes and apps with Flutter framework. Sometimes you don’t need any mobile development experience to use it. But, in any cases, it would be problematically to create and distribute mobile application, even if not native, without deep knowledge of all the aspects of mobile apps development process.
Moreover, Google is popular for developing well-structured and detailed documentation, which is something that React Native has an issue doing. You can go through these documents as well as video lessons and Codelabs’ practical lessons. Courses are available on Udacity and Udemy, and you can even join many Facebook communities.
Perfect for MVP. The app developed using Flutter looks native on both the platform Android and iOS. If one business wants to present its products in a short time, then Flutter can be right solution. This feature provides an idea to the investors about the final look of the app.
It would cost much more, if you have to develop two separate applications for Android and iOS from the beginning.
Widgets. Flutter offers ready-designed Widgets for the look and user interface. Regardless of the size of the screen Widgets look natural, easily customizable, fast and extensible. Widgets are an absolute declaration of the user interface, unified object model that can be used for the app itself and for the entire screens. While other frameworks have separate layouts, views, view controllers. widgets as a unified object model.
Flutter’s unified object model gives the opportunity to have every object (fonts, buttons, paddings, etc.) as widget. Developer can combine widgets to form layouts, and you can decide to utilize widgets on any customization level.
But this tool has disadvantage as well, to be described further.
Future-proof: Instant Fuchsia Support. Do you know about new and promising operating system Fuchsia from Google?
There is contradictory info today what this OS can be and what is for, but there is probably that Fuchsia OS will replace Android in future. It is interesting that Flutter is a native framework for Fuchsia applications. If you decide to develop an application in Flutter, you will be ready to release it on Fuchsia from once it becomes actual. This can give your product an early adopter boost.
Disadvantages of using Flutter
Still Only for Mobiles. Flutter can only be used for mobile applications development. Flutter is not supported by web browsers now.
But looking at the roadmap of Flutter, we shouldn’t wait long for support for desktop and web applications.
IOS problems. Flutter for mobile development has been created by Google. Google is the main competitor of Apple. Google has a direct interest in the quick fixing of bugs and making updates for Android. IOS developers worry about iOS support by Google Flutter not without reason.
For example, IPhone settings were created on the framework to allow for possibilities of Cupertino widgets. But these and other design features were updated later and were based on iOS 10 features even though iOS 11 had already been released for a while.
It is fair to assume that Apple, for its part, is entitled to update often both the policy and implementation of its mobile platform. Thus, Flutter realization is always in state of the catching up with changes.
No third-Party Libraries. Third-party libraries play a significant role in automating software development for developers and relieving the requirement to program everything from the start. Though Flutter offers several important libraries but still lacks some functionalities which are required for the development process. Even if you have required libraries declared by Flutter, it is the high risk available that these libraries were well-tested. Sometimes, there is no other option for developer than start to invent the wheel again.
Flutter official resource of free packages is still improving, and its tool list is still experiencing growth.
Massive Size of the App. The framework Flutter could disappoint developers after the “Hello world” app got to 5Mb. For example, in comparison with Kotlin that is 550Kb and native Java that is 539Kb. But Google is working hard in optimizing the size.
Stability Problem. Flutter is new, and its instability is natural. Many developers complain about the failure to work out changes in the user interface of Android and iOS. Many frustrating small unexpected issues occur from time to time.
Widgets. Widgets in Flutter arranged in trees, which helps in rendering, but can lead to excessive complexity of the structure. Not trivial applications can need many layers of code to form a basic object. Therefore, adequate planning of the structure is essential in advance.
Some words about Dart
Dart is used for Flutter’s development and has both advantages and disadvantages. It is object-oriented programming language. Though, without fear or favor it is not as great as programming languages like Java orC#. It is not natural to start developers’ career with Dart, so it can be not easy to find new Flutter developers for your team. Experienced developers who tried to learn Dart usually have mixed impression…
Should be noticed as usually for any known cross-platform frameworks: you will get your app faster, you will save your money, you will be able to validate your business idea quicker. These are true very much in case of MVP development. But if you plan to implement many platform-specific features or different UIs for both platforms you will lose all the advantages of that framework.
There are some specific advantages of using Flutter. Hot reload, widgets, Google’s strategical plans would be very attractive for developers and designers.
Disadvantages must be taken into consideration too. Both parties Business Owners and Developers will not like instability, iOS problems, the unsupporting web. If these can be acceptable – well, if not – try to believe in Google and just wait for future upgrades or use other cross-platform frameworks or at last use Native approach.
For us in Mobiwolf there is no doubt that Flutter is currently one of the most exciting tools in the market to develop mobile applications.
We advice to use it especially to e-commerce and tech-related companies and startups who want to enter the market faster and cheaper with a product that fits the definition of MVP.