Welcome to Chapter 1 of Automating Tests in Flutter Apps.
This chapter is divided into 4 sub chapters, and we are talking about the first chapter, what is Flutter?
Flutter is a multi-platform development tool with a focus on developer productivity.
Yes, it's a lot of words, so let's dissect.
First, multi-platform meaning that a single code base can generate iOS, Android, web, and even desktop apps.
So, you have one single code base, and you can have clients code in different platforms.
Next is developer productivity.
This is a common theme with Dart and Flutter. You will see features like hot-reload and hot-restart, along with debugging and other support, which makes the developer experience and productivity very pleasant — where you can start to feel productive from the get-go.
All of this is powered by using a high level, easy to learn language called Dart, and we'll touch upon this in a little bit.
Google is the main open-source backer for both Flutter and Dart. That's good to know that there is somebody as big as Google, who is contributing to this framework.
It is also important to know what Flutter isn't.
I know this is a course that is being taught in Test Automation University, which is primarily about test automation. But this course only deals with Flutter — the testing aspects of it.
Flutter is not an automation framework.
Flutter is rather a full developmental framework, which has excellent automated testing capabilities.
That's an important distinction to make.
Let's also compare Flutter with other options of native development.
First is the native development itself, right? Like iOS with Xcode or Android with Android studio.
Again, those ones are like first class citizens. Anybody starting with mobile development would likely start there.
And there exists a set of technologies called hybrid frameworks, which aim to have iOS and Android apps generated from the same code base.
The distinction is that if you're using, let's say you are creating an iOS app using Xcode, you had to use a different framework and have a different skill set for Android. Hybrid platforms try to tackle that.
So notable of those are React Native which is a framework from Facebook. It is very similar to React Web, which is obviously a very popular framework.
You can share code and concepts from React Web into React Native. That's why it's quite popular and you code it in JavaScript.
There are also other frameworks like Cordova, Ionic, and Xamarin, which try to do the same thing. But I would say their popularity is quite lower these days.
The third way of rendering code on a mobile device is through Mobile web.
Here you are not creating any new code base, but actually reusing whatever you have for the browser. But just the code, instead of it being in a Native app, will only be accessible from a browser.
So, that's how you can compare Flutter with other options. Flutter is a hybrid framework. It sits in the second group.