Introducing Flutter Mobile application framework

Learn more about and how to install the cross-platform software development framework.

The mobile application development market has grown considerably over the past decade, to an extent where many new businesses and even established businesses consider a mobile first strategy when introducing new products and services to the market.

The mobile application market to certain extent has been monopolised by two operating systems of Android and iOS, which has often required developers to develop two versions of the same applications. Then when also having to do the same if they wanted to provide a version of the application for the Web and Desktop.

Developers aiming to target cross-platform environments often find it difficult to choose the right framework to enable them to target multiple platforms with the same code base, for a number of different reasons:

Cross-Platform Dependencies:  iOS and Android apps work very differently internally, so the developers had to redesign and reconfigure the same content for individual platforms.

Time Constraints: Developing professional app requires a lot of time. Companies usually set a time limit in which the app should be ready to be launched to market.

More Developers: To develop an app for both the platforms, a greater number of app developers knowing about the individual platform had to be hired.

Development Cost: Since the app has to be made individually for both the platforms, the cost of development will increase.

 

Flutter helps solve cross platform development

Flutter is a cross-platform software development framework, enabling apps to be developed to have the look and feel of a native app, the design and; working is a bit different, although the required operation remains the same. Native apps are designed to work for a specific platform, while apps made via flutter are designed to work on cross-platform devices, so the app has to be at a common position to work on both the platforms.
We’ve previously discussed the reasons behind using Flutter for app development and the biggest advantage of flutter is that it can be used to create cross-platform apps. Using Flutter enables developers to develop create iOS, Android, Web and Desktop applications apps in just one go, there is no need to develop app individually for any of the platforms.

Installing Flutter on Ubuntu

The best way we’ve found to get started with Flutter is by installing it on Ubuntu and by using Android Studio

Although it is possible to use a lightweight Editor like VS Code, we’ve found that configuring VS Code to enable a fully functioning IDE with all the additional capabilities of Android Studio is just more effort than it is actually worth.

Flutter framework actually consists of three parts

  • Software Development Kit (SDK) : A collection of tools and utilities to help develop and compile code to native machine code to run on multiple platforms.
  • UI Libraries and Widgets : Reusable UI elements you can use and adapt to develop your UI.
  • Dart programming language:  A programming language developed by Google

 

Flutter reduces the time to develop great applications, but it does not necessarily ship with everything you need to build and deploy your applications and it has dependency on Kotlin and Java to enable this heavy shifting. Therefore it is ideal to ensure you install Java on your machine.

Install Java

				
					sudo apt install openjdk-11-jdk
				
			

Install Android Studio

				
					sudo snap install android-studio --classic
				
			

Alternatively, if you have a Jetbrains All Products Subscriptions you can install Android Studio using Toolbox App

Install Flutter

Our preferred way to install Flutter is to make use of the ubuntu snap package repository

				
					sudo snap install flutter --classic

## Once the installation is complete you can make use of the following command to get yoru Flutter SDK path

flutter sdk-path

				
			

You can now also check which versions of Flutter and the Dart programming languages have been installed, using the following command

				
					dart --version && flutter --version

Dart SDK version: 2.14.4 (stable) (Wed Oct 13 11:11:32 2021 +0200) on "linux_x64"
Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 18116933e7 (2 weeks ago) • 2021-10-15 10:46:35 -0700
Engine • revision d3ea636dc5
Tools • Dart 2.14.4


				
			

This will confirm that we have everything we need installed however there is still a little more configuration required before we can start developing.  We need to ensure we have accepted all the android licenses 

				
					sudo su flutter doctor --android-licenses

				
			

If you have any difficulties with this step I have previously posted about How to overcome flutter doctor –android-licenses java error and the information there may help you sort your problem out.

To ensure you have successfully installed and configured flutter simply run the doctor command to show information about the installed tooling

				
					flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.3, on Ubuntu 21.10 5.13.0-20-generic, locale
    en_GB.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2020.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2021.2)
[✓] Connected device (2 available)

• No issues found!
				
			

You can drill down further into the details of your Flutter configuration by using the -v switch

				
					flutter doctor -v
[✓] Flutter (Channel stable, 2.5.3, on Ubuntu 21.10 5.13.0-20-generic, locale en_GB.UTF-8)
    • Flutter version 2.5.3 at /home/garyw/snap/flutter/common/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 18116933e7 (2 weeks ago), 2021-10-15 10:46:35 -0700
    • Engine revision d3ea636dc5
    • Dart version 2.14.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/garyw/Android/Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /home/garyw/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
    • cmake version 3.10.2
    • ninja version 1.8.2
    • pkg-config version 0.29.1

[✓] Android Studio (version 2020.3)
    • Android Studio at /home/garyw/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7784292
    • Flutter plugin version 61.2.2
    • Dart plugin version 203.8452
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.2)
    • IntelliJ at /home/garyw/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/212.5457.46
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Ubuntu 21.10 5.13.0-20-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 95.0.4638.69

• No issues found!

				
			

Upgrading flutter

Upgrading flutter is relatively simple process of using the upgrade command

				
					flutter upgrade
				
			

Switching flutter channels

If you want to take a sneak peek at some future flutter features you can switch between the different channels. You can check what channels are available by using channel command
				
					flutter channel

Flutter channels:
  master
  dev
  beta
* stable

				
			

To use channel simply select the channel

				
					flutter channel beta

				
			

Conclusion

After completing the steps above you should have flutter installed and can’t start developing using the framework.