What is Flutter?

Oct 01, 2022

Recognize the features and functionality available in Flutter. Flutter is a free and open-source user interface framework for creating native mobile applications. The Flutter framework was originally released by Google. It's now part of open-source, but it's also actively maintained by Google engineers.

In the world of mobile application development, Flutter is a hot buzzword today. It's quite possible that you're thinking of building a brand-new mobile application and someone on your team has recommended Flutter, and it's quite likely that you've heard rave reviews of how easy it is to use Flutter and how much time that can save your development team. And I'm quite sure that's gotten you curious. What exactly is this Flutter and is it worth my while learning Flutter? Well, the answer to the second question is an emphatic yes. Let's answer the first question. Flutter is a free and open-source user interface framework for creating native mobile applications. The Flutter framework was originally released by Google. It's now part of open-source, but it's also actively maintained by Google engineers.

Mobile application development has been around for over a decade now and there are stable robust platforms available for all your operating systems. And in this world, you could say that Flutter is a fairly recent entrant. The alpha launch of Flutter was in May 2017, which is not so very long ago. The official stable release was in December 2018. So, at the time of this recording, you could say that Flutter has been around really in its stable form for about four years. But why Flutter needed when you have iOS, Swift, Kotlin, and so on? Well, Flutter allows you to build mobile applications for all platforms using a single codebase and a single programming language, and this is what makes Flutter amazing. Any startup or large-scale organization building a mobile app needs to target two main platforms, Android and iOS. This often requires that teams build and maintain two separate applications, one for each platform because the development environment and development tools, the framework, everything is different for each platform. But with Flutter you can build a cross-platform app, build one app and have it run on both Android as well as iOS. And as you can imagine, this can save your team a huge amount of effort and make building both iOS and Android apps simpler and faster simply by unifying the codebase.

Flutter is a true cross-platform application. Not only can you build apps for mobile development that is on iOS and Android, but you can also build apps for the desktop whether it's on Windows or macOS desktops. You can also build apps for the web. This means as an engineer if you're investing time learning Flutter, not only can you develop mobile applications, but you'll also be able to develop desktop and web applications, which is a big deal. Flutter helps make you more versatile as a developer and allows you to apply for a range of front-end jobs. Now one thing to remember is that Flutter is an SDK, or a software development kit. It is not best characterized as either of framework or a library. Now you might ask me now what exactly is the difference. I mean it provides APIs, I use those APIs. What's an SDK and how is it different from a framework or a library? Well, I'll try to answer that.

Let's first understand what exactly a library is. A library can be thought of as a reusable bit of code that can be included in an app to perform a certain function. You have a bunch of utilities that you include, they are in packages, those packages are often libraries. You include those packages in your programming language. You call into the functions to perform their operations, get the result, and then display the result in your app. Libraries can be very powerful, so they can have a powerful range of offerings. But the whole idea is you embed the invocation to the library code within your application and then you use the results of the libraries processing as you wish. Let's say you're working on a web application and you include an HTTP package in order to make HTTP requests to the server. Well, that is likely a library. Think of a library as something that is pretty lightweight.

A framework is something that is much more heavyweight. Think of a framework as providing a structure for how you need to build your application then all you need to do is write in the right bits of code in the missing parts. The framework then calls your code as needed in order to perform operations. Think of the framework as driving how the application should behave and it calls into your code as needed for customizations. Think of a library as used when you decide how the app should behave and you call into the library for the functionality that you need. But Flutter is neither a library nor a framework, it's much, much more. It's an SDK, a software development kit. SDKs tend to have a much wider scope. SDKs contain tools, libraries, docs, APIs, and even frameworks. Everything that you need for software development is held within an SDK. Think of Flutter as having everything that you need to build a great app on any platform.