Flutter: Native Cross-Platform for Mobile Development

Android and iOS are the two main platforms for mobile app development. Each of these platforms requires different types of coding for a smooth app development process. The present situation has led to a series of problems for many app developers and mobile app development companies. Hence, many companies are looking for cross-platform solutions to have a smooth app development process.

There are many tools that have been facilitating the app development community. Microsoft offers Xamarin while Adobe has PhoneGap. The social networking giant Facebook has provided the popular React Native. Every tool has something different to offer. But developers are always on the lookout for an improved cross-platform solution to save valuable time and money.

This revolution in app development has led to the birth of Flutter, which was launched by Google in May 2017. Flutter has won critical acclaim for its multi-faceted features as it offers a multitude of benefits to app developers.

Write once, run anywhere

Most of us have heard the phrase “write once, run anywhere.” However, it’s been a distant dream for developers and virtually impossible for users.

Even the best cross-platform apps have a few drawbacks.  The biggest one being that such apps are usually slow as they run by means of a code interpreter (usually JavaScript). The apps don’t feel native since they use different widgets or buttons.

The reason why Flutter promises so much potential is because the platform has a few clever tricks to avoid all such issues. Not only it complies with native code, the apps you develop with it act and feel as other native apps. You can say that these apps are pixel-perfect. That’s because what you view in your development environment’s emulator screen is exactly what you get on your actual phone.

Flutter utilizes the same codebase to develop both the Android and iPhone apps. Based on the Dart programming language from Google, the platform provides a rendering engine based on the Skia Graphics Library, which is also utilized by Chrome to draw pixels on a screen.

Flutter paints every individual pixel on the screen instead of wiring up to native iOS and Android components. Flutter offers pixel-perfect replications of Android’s Material UI as well as the iOS UI so developers can create familiar experiences.

What is Flutter?

Launched by Google, Flutter is a software development kit which employs Dart language for programming. The cross-development program offers several features that were missing in the previous tools. All apps developed using Flutter can be run on iOS, Android and Google Fuchsia, which is another platform from Google.

According to the group product manager for Flutter, Tim Sneath, who spent 17 years at Microsoft; the cross-platform is more like Unity which is a gaming engine. While Microsoft acquired Xamarin a few years back, Facebook works with its own cross-platform solution known as React Native.

Although developing a cross-platform app across a single codebase is a great development, Flutter aims to add more features to its platform.

One of the best parts of the platform is its hot reload feature which allows developers to modify their apps during testing. This saves the developers from losing or restarting the app, which is an invaluable feature if you are working on a specific bug or UI element. This way you developers are saved from the frustration of having to go through several steps when making any changes.

Flutter’s incredible functionality enables developers to update their existing apps, all at once or by converting it in stages.

Flutter is already making waves in the app development industry. Google has been using it internally to work on various internal apps whereas global companies like Alibaba, Tencent and Capital have worked with Flutter to develop their apps.

As more companies begin to adopt flutter, startups are also beginning to opt for Flutter instead of the once popular React Native.

Google’s incredibly functional kit enables you to create 2D mobile apps. Developers can benefit from the platform as it helps them create full-featured apps with options such as geolocation, camera support, storage, network and more. Flutter continues to impress everyone with its potential to develop stock platform apps and branded designs.

Interesting facts about Flutter

  • Open source and free
  • Utilizes the C++ rendering engine and is based on Dart
  • Features its own widgets
  • Its architecture is based on reactive programming

Let’s find out more about the most interesting features of Flutter!

Hot reload

One of the best parts of the platform is its hot reload feature which allows developers to modify their apps during testing. This saves the developers from losing or restarting the app, which is an invaluable feature if you are working on a specific bug or UI element.

This way your developers are saved from the frustration of having to go through several steps when making any changes. This feature as implemented in Flutter has received widespread praise.

A complete set of widgets

Flutter offers a rich catalogue of built-in UI components. You have two sets of widgets: Cupertino for iOS and Material Design for Android. Developers easily do whatever they want and can also implement every widget on every platform.

When you implement some Cupertino or Material Design widget, it’ll appear the same on every iOS and Android device. There’s nothing to worry about whether it would be different across multiple devices.

Everything is a Widget

Thanks to Flutter’s core principle, everything is a widget. The layout and structure, your app class, and just about everything is a widget. It is because of this functionality, creating UI becomes as simple as composing layouts with several different parts.

Flutter also has another core principle. If you need to create a new widget, you don’t need to extend the widget class, but simply compose new widget with few small widgets.

Different themes for Android/iOS

Typically, we want all our Android applications to be unique than iOS apps. Desired differences are not only in terms of colours but also in styles and dimensions of widgets. Users can accomplish this goal in Flutter with themes.

Dart has Two modes

There’s compiled mode, compiling your app down to native machine code at the time of the release of your app. Then there is the interpreted mode on the Dart virtual machine, which offers the sweet hot reload experience. Thanks to these features, Dart is suited to developers with an incredible development and release experience.

Moreover, Dart was engineered to be easy to understand. Any of you who have worked with a C-style language like JavaScript or C++ can easily get familiar with Dart.

But for newbies, Dart can be a challenge. For users who don’t have any experience in the languages we’ve just mentioned, learning Flutter can be cumbersome. Even some experienced developers may take some time learning the architecture of Flutter.

As Flutter is still in its early stages, some developers believe it should not be used for creating a complex commercial app yet. It’s better suited for prototyping and simpler apps. However, by judging the success of the platform, one can easily see that the future looks bright for Flutter. The development community believes the SDK will get better with every passing month.

What is Flutter good for?

Google’s development kit enables developers to build 2D mobile apps. For that reason, it is used for developing full-featured apps that feature support for storage, geo-location and cameras. Flutter is ideal for developing stock platform apps and stunning branded designs.

Although there seem to be only a few uses of the toolkit, the future looks promising for Flutter. Google itself has benefitted from Flutter to produce the AdWords app, which helps advertisers monitor ad buys. China’s largest e-commerce company, Alibaba, has built an app with Flutter.

However, there are a few apps developed with Flutter that aren’t as famous as Alibaba and AdWords. For example, there is also an app for the Broadway musical, Hamilton which features exclusive videos, news and daily lotteries. There is also a merchandise store, a trivia game and much more to entertain the users.

A meditation app built for the German market, Coach Yourself, is another example of how Flutter can help you create a stunning mobile experience.

While Flutter follows the reactive development architecture, it does so with a twist. What’s crucial to know about reactive programming is that it mechanically updates UI contents when a user updates the variables in the code.

This principle is also followed by React Native. However, it uses the JavaScript Bridge for accessing OEM widgets. As the app has to cross this bridge for accessing widgets every time, it leads to delays and issues in performance.

However, Flutter completely omits this bridge and establishes smooth communication with the native platform through Dart.

The object-oriented language of Flutter utilizes Ahead-of-Time compilation techniques, and it successfully compiles into native code without any additional bridge. This speeds up the app startup time. Moreover, Flutter doesn’t need to call to original equipment manufacturer widgets, since it has its own.

Flutter takes the OS as a canvas to build an interface and move services including animations, rendering and gestures into the framework itself. This functionality gives more control to developers over the entire system.

Dart also makes way for efficient debugging in Flutter. Dart Observatory and Dart Analyzer tools locate errors with specific commands. There is another method which includes employing Flutter-supported IDEs and their debuggers. Since it doesn’t utilize WebView, Flutter can’t be debugged in a browser like Ionic.

NativeScript and React Native enable testing by means of Chrome Developer Tools. But, since these products usually prefer third-party solutions to debug anyway, this platform’s process does not appear too different.

With an automated testing toolset, Flutter is a full-fledged SDK. It particularly offers three types of tests: widget test, integration test and unit test. The platform also provides support for the Continuous Delivery model through Fastlane, which is a free tool used for bridging Flutter with Jenkins, Travis, or Cirrus.

There are several factors that are considered for evaluating an app’s performance: number of requests per second, number of frames per second, CPU usage, average response time, and more. Flutter promises a consistent 60fps, a rate at which the latest screens display a clear and smooth picture.

Developers attempt to maintain motion at this level as any lag in such a frame rate is easily noticed by the human eye. For evaluating how well Flutter pulls through, a trial that compared Flutter with React Native and Xamarin concluded that Flutter impresses with a 58fps rate and a 220-millisecond launch time.

However, React Native was declared second with 57fps and 229 ms while Xamarin came in at 53fps in 345 ms. Flutter closely matched native app CPU usage; however, it took up 50% more memory than React Native.

To benefit from Flutter, make sure you check your system requirements. Mac OS developers require a 64-bit version with Xcode 9.0 or newer installed. Linux users don’t need to comply with any typical requirements. Windows users should have Windows 7 SP1 or later with Git for Windows pre-installed and Windows PowerShell 5.0.

After downloading Flutter SDK, select your OS and follow the instructions. Dart is pre-installed with Flutter.

Now you need to install an editor. Users can go for any IDE having Flutter command lines. However, Google suggests using their plugins for official editors: Visual Studio, Android Studio, and IntelliJ.

Developing an app with Flutter

Flutter makes app development a fascinating journey. Developers are happy to work on Flutter since the app development process is fast and less costly.

There are several other benefits of using Flutter.

Pros

  • Perfect for MVP

Flutter is the best platform for developing your apps, in case you want to show your product to the investors as soon as possible. By developing an app that looks native on both iOS and Android, you give a fair idea of how your MVP looks like. Creating two apps would take much more money and time.

  • Widgets

Widgets are crucial for an app’s interface and view. All widgets must have a natural feel and look in spite of the screen size. The best widgets are customizable, fast and extensible. Flutter takes your widgets to a whole new level. Widgets are not just used for views in Flutter. They are used for entire screens and sometimes for the app itself.

Flutter claims that each widget is an absolute part of the user interface. Flutter makes widgets a consistent and unified object model whereas other frameworks separate view controllers, views and other properties.

Widgets structure a hierarchy based on their composition. Every widget sits inside of and inherits attributes from its parent. There is no separate application object as the root widget plays this role.

  • Hot Reload

This is probably one of the best features and pros of using Flutter. You simply change something in the code editor before saving and the UI refreshes on the iOS sim or the Android emu. The whole process is so fast and easy it’s hard to go back to any other platform once you’ve tried the Hot reload feature in Flutter. Although React Native and Xamarin offer the equivalents of this feature, users are quick to claim that it’s much faster on Flutter.

  • Less code

Dart is the programming language of Flutter which is strongly typed and object-oriented. Flutter doesn’t require a JavaScript bridge, which enhances app startup times and the overall performance. Dart accomplishes this thanks to AOT or Ahead-of-Time compilation.

Dart utilizes the JIT or Just-in-Time compilation which enhances the development workflow by enabling for a hot reload capability. This feature refreshes the UI during development without the requirement for a new build.

  • Multiple Themes

Typically, we want our Android application to be unique from an iOS app. Such differences are not just in colours, but also in styles and dimensions of widgets. In Flutter, developers can accomplish this goal thanks to the multiple themes the platform offers for a convenient app development process.

Cons

  • No TV and CI support

Although Flutter’s development is supported on both Android and iOS phones, it is not yet available for Android TV or Apple TV.

  • No CI support yet

Flutter does not offer CI support like other platforms that offer integration support, like Jenkins and Travis, to the iOS and Android apps. Instead of these CI platforms, Flutter offers other ready-made solutions but for that developers need to set up toolkits.

  • Few libraries

Flutter offers libraries, but not a broad range of it. Google may have included some common ones, but several useful libraries are not yet unavailable. If a developer wants to use any of the unavailable libraries, he will need to build it himself and the process can take quite some time.

How much does it Cost to Build a Flutter Mobile App?

Developers report that they can complete up to 50% of a project if the required features are covered by the Flutter’s cross-platform libraries. But, they would still need to develop pieces of native code for each platform and include them in the Flutter app.

It typically takes around 250 hours to create an app with Flutter that works both on Android and iOS. However, you need roughly 400 hours for developing an app for iOS.  You can easily calculate the number of hours it would take to develop an app with Flutter to determine the billing rate of your developers.

It takes both, time and money to develop an app for both the platforms. Flutter is the best choice for developing apps quickly as developing an app on this cross-platform development platform is easier than choosing to work on two native apps.

Interested in software development costs?

What does the Future Hold for Flutter?

Flutter has recently emerged into the app development industry. But it has already received praises and rave reviews from the app development community. Looking at its stable release in December 2018, it’s very early to say anything. However, the future looks promising for Flutter. Google has also launched an updated version of Flutter with new and exciting features.

Our development team at Arkbauer wanted to experiment with the platform.

However, none of our partners or customers was interested in any mobile development at that time so we decided to present a gift to Latvian Christian Radio on its 25th anniversary:

A mobile radio application built on Flutter

The main goal was to create a mobile app which:

  • offers the live-stream of the radio station
  • features an archive of the episodes
  • displays the show schedule
  • is easy to use
  • feels and looks great
Let's Talk
First name
Last name
Phone
Phone number entered is invalid.
Message*
Message must not be empty.
preloader