At Latitude Technolabs Pvt Ltd, we very often have an opportunity to create projects in new, modern technologies. In this article, we would like to describe our experience we gained programming with Flutter, a modern, an open-source mobile application development Software Development Kit, cross-platform framework created by Google. It is used to develop applications for Android and iOS, as well being the primary method of creating applications for Google Fuchsia.
What is Flutter?
Flutter is a modern, reactive framework, created by Google for development of mobile applications that work on both Android and iOS. Due to good promotion during the last I/O Conference, it’s getting more and more popular.
Ahead of its I/O 2018 developers conference, Google has launched the third beta release of Flutter, its open source mobile User Interface framework that helps developers build native interfaces for Android and iOS. The Flutter Software Development Kit has also gained official support from the Material Design team.
Flutter was first announced as an early alpha at I/O 2017 in May, and only arrived as a beta in February. Meant to compete with frameworks like Facebook’s React Native, the library is designed to combine the performance and platform integrations of native mobile with the rapid development and multi-platform reach of portable User Interface toolkits. Google has taken the wraps of Flutter, a new open source mobile development framework that uses the Dart Programming language to create high-performance apps that can run on iOS and Android with one code base.
Modern, reactive framework allows us to build powerful User Interface with animations, shared codebase and views over iOS and Android platforms. It makes development process easier, development costs at minimal and rapid deployment. Flutter is built with C, C++, Dart and Skia. And the most beautiful part is that all release code is compiled in native code (Android NDK, LLVM, AOT-compiled) without interpreter involved. If developers are familiar with performance drawbacks of hybrid frameworks developers can easily say that flutter compile fasted code very close to pure native performance.
Flutter has a lot of advantages. The main one is that a lot of code can be shared between platforms – developers do not have to write any platform-specific code. The way layouts are created in Flutter might be nit very intuitive, which may slow down development at the very beginning. However, after some time spent programming, it gets easier very quickly. The frameworks perform integration with Intellij IDEA can also be very helpful.
Advantages of Flutter:
• Supported by Google. Used in production by some of “top apps”. Primary development SDK for Google’s new mobile Operating System called Fuchsia. High performance. Native C/C++ compiled code. Full control over widgets rendering. Ease of development with “hot reload”. Build, test, install is easy with one terminal command, blazing fast IDE IntelliJ IDEA.
• Applications created in Flutter work and look like native ones (Flutter preserves platform-specific behavior.)
• Mobile app development is a relatively recent field of endeavor. Third-party developers have been able to build mobile apps for less than a decade, so it is no surprise that tools are still evolving.
• Flutter has a lot of shared code between platforms. It has excellent performance – it is designed to achieve a constant 60fps.
• Thanks to hot reloading, changes can be applied very fast, which speeds up the development process.
• Flutter has a new architecture that includes widgets that look and feel good, are fast, and are customizable and extensible. That’s right, Flutter does not use the OEM widgets (DOM Web Views), it provides its own widgets.
• Flutter raises the widgets and renderer from the platform into the app, which allows them to be customizable and extensible. All that Flutter requires of the platform is a canvas in which to render the widgets so they can appear on the device screen, and access to events (touches, timers, etc.) and services (location, camera, etc.)
However, Flutter also has some Disadvantages:
• The community is rather small compared to React Native or Xamarin. Developers are creating new libraries and plugins, but Flutter still has a long way to go.
• It’s a new technology, so lot of services, like AWS, don’t support it yet.
• According to the official documentation: ‘We measured the size of a minimal Flutter app to be approximately 6.7MB’ – so Flutter apps are inherently larger than native ones.
• If developers are lacking in time, and would like to create a useful application on Android and iOS, developers should consider using Flutter, especially when developers would like to use some of Google’s services, like Firebase.
• Flutter is easy to learn and, after developers get used to it, developers can develop multi-platform applications quickly and easily.
• However, if developers would like to use some other services, such as AWS, it would be very difficult to work with Flutter – the support just isn’t there yet.
• Moreover, we would recommend it only for smaller projects – it is a rather new technology, and we cannot be sure of its future.
We would like to sum up our knowledge about Flutter. Hopefully, it will make developers decision about using the framework much easier:
• Flutter has excellent performance. From the official documentation: ‘Flutter is designed to help developers easily achieve a constant 60fps. Flutter apps run via natively compiled code – no interpreters are involved. This means Flutter apps start quickly.’ Applications created with Flutter are very stable and really look like native ones.
• Flutter is very easy to learn for developers experienced in objective languages, like Java or C#. However, for developers familiar with React, React Native can be a better choice.
• Flutter is a reactive framework, and Google highly recommends to use reactive programming with Flutter. If developers are not used to this kind of programming, think about using a different platform than Flutter.
• Flutter is using Dart as a programming language. Every developer familiar with JAVA can learn this language very easily.
Here’s the app in action (the little circle reflects the position of the user’s finger on the screen)
• Flutter community is still growing and at early stage. Many services do not support Flutter, and developers won’t be able to find solution every problem they have.
• Without some specific cases, developer do not need to do any extra work for specific platform – every widget works on both platforms and developer do not need any platform – specific code.
• With Flutter’s hot reload feature let developers reload changes with sub-second reload times. It can speed up development process.
• Flutter is modern, interesting way of creating mobile apps. If client would like to create application in Flutter, client may expect fast development process and good product quality. However, depending on client needs, client may not be able to use Flutter, because some services may do not support it yet. But in other cases, choosing Flutter may be a very good choice. Also check what official documentations say about it.
What’s New and Exciting about Flutter?
• Fast, smooth, and predictable; code compiles AOT to native (ARM) code.
• The developer has full control over the widgets and layout.
• Comes with beautiful, customizable widgets.
• Great developer tools, with amazing hot reload.
• More performance, more compatibility, more fun.
Flutter is a modern, reactive framework, created by Google for development of mobile applications that work on both Android and iOS. Due to good promotion during the last I/O Conference, it’s getting more and more popular in developer community.
We at Latitude Technolabs Pvt Ltd still not willing to make a judgment call one way or the other about which framework is faster in the real world, but developers around the world is excited to watch continue to develop.