Cross-platform mobile development today is full of compromise & developing apps that run for both the operating systems is a tedious process. So Google has launched Flutter, a platform that gives you the best of both worlds: hardware-accelerated graphics and UI, powered by native ARM code, targeting both popular mobile operating systems. This progressive technology provides traditional and modern methods of developing hybrid mobile applications.
Flutter has released it's first stable release of Google's UI toolkit for creating beautiful, native experiences for iOS and Android by keeping a single codebase.
What is Flutter?
Flutter is an open-source, mobile development framework developed by Google. It allows high-performance, beautiful applications to be built for iOS and Android from a single code base. You only need to write your app once instead of maintaining two code bases: one for Android, one for iOS.
It uses Dart as a programming language which gets compiled to run on any platforms. Unlike other cross-platform solutions, which uses a bridge to connect your code with the underlying platform, Flutter code get compiled directly into machine code eliminating the performer's bottleneck from the bridge. Additionally, it is also the development platform for Google’s upcoming Fuchsia operating system.
Flutter means faster & more dynamic mobile app development. We can make changes in the code and it reflects directly in the app which can be done with hot reload. Hot reload works by injecting updated source code files into the running Dart Virtual Machine (VM). After the VM updates classes with the new versions of fields and functions, the Flutter framework automatically rebuilds the widget tree, allowing you to quickly view the effects of your changes.
Expressive and Flexible UI
Flutter enables you to build beautiful apps. Flutter ships with features which focuses on native end user experience. The layered architecture allows for full customization, let you control every pixel on the screen, and its powerful compositing capabilities let you overlay and animate graphics, video, text, and controls without limitation.
Flutter includes a full set of widgets that deliver pixel-perfect experiences on both iOS and Android. And it enables the ultimate realization of Material Design, Google's open design system for digital experiences.
Widgets are the central class hierarchy in the Flutter framework. The best feature of flutter is its widget support it provides view and interface to an app provides a natural look and feel regardless of screen size. Widgets provide features like navigation, scrolling, icons, and fonts to provide full native performance on both iOS and Android.
Flutter 1.2 is the first major feature update for Flutter & dart are they have focused on a few major areas:
The use of Dart language is playing a major game-changer role for Flutter. In Dart 2.2, they have specifically focussed on improving the performance of AOT-compiled code, improving AOT performance for flutter 1.2. They have reduced the overall type check which reduces the cost of the type checks for both AOT-compiled and VM with JIT (just-in-time) compilation.
Dart core library provides the number of collection classes for modeling Maps, Lists, and Sets of objects.
When the user initiates an in-app purchase in the App Store, the transaction continues in your app, the product will then be added to a list that you can access through the method getAppStoreInitiatedProducts. Google Play and the App Store for both developers require to configure an app with in-app items for purchase to call their in-app-purchase APIs. (Note: This plugin is not ready to be used yet in flutter 1.2 )
An Android App Bundle provides all your app’s compiled code and resources but defers APK generation and signing to Google Play.
Google Play’s new app serving model is Dynamic Delivery, it uses your app's bundle to generate and serve optimized APKs for each device configuration, so they download only the code and resources they need to run your app.
No need to manually manage multiple APKs
No need to build, sign, and manage multiple APKs to support different devices and users get smaller, more optimized downloads.
Dynamic Feature Module
These modules contain features and assets that you can decide not to include when users first download and install your app. but Play Core Library can allow you to download those modules as dynamic feature APKs.
Reduced APK size
Android App Bundles uses Split APK mechanism that helps in reducing app size and enables new features like dynamic delivery for Android apps. The apps published with app bundles are reduced to 20% in size.
Flutter framework supports different tools, including support for Android Studio and Visual Studio Code as well as support for building apps from the command line, Dart DevTools which is a new debugging tool, so we knew we needed flexibility in how we expose debugging and runtime inspection tools. It also lets developers view logs, debug apps and inspect the widgets for Flutter App Development.
widget inspector : It enables the visualization and exploration of the tree hierarchy that Flutter uses for rendering.
Timeline view : It helps you monitor your application at a frame-by-frame level, identifying rendering and computational work.
Source-level Debugger : It let you step through code, set breakpoints and investigate the call stack.
Logging View : It Displays the activity you log from your application as well as network, framework and garbage collection events.
Flutter has improved so much and added many features and improvements for the developers with the latest v1.2. Flutter team has big plans ahead and they are planning to grow flutter beyond the mobile platform. They have announced the project named "Hummingbird" which brings Flutter to the web but it's in pipeline and the flutter team will share the technical details soon. So can expect some competition to React & Angular in the future.
Check our Blog on React Native vs Flutter for Mobile App Development