What is Flutter?
Flutter is an open-source UI (user interface) toolkit developed by Google for building natively compiled mobile, web, and desktop applications from a single codebase. It allows you to create beautiful and highly performant digital products with rich customizable widgets.
If you want some background, here are some key facts about Flutter:
- Flutter originated from Google and serves as the foundational technology for many of Google’s renowned products, such as Google Pay and Google Ads.
- Flutter was officially launched as an open-source project in May 2017, making it accessible to a broader community of developers. In December 2018, Flutter reached its first stable release.
- The framework initially targeted mobile platforms, particularly iOS and Android devices. It was created as an alternative to existing cross-platform development frameworks. Eventually, Flutter became more popular than its major competitor, React Native.
- As Flutter continues to gain popularity, its ecosystem flourishes. The abundance of packages, libraries, and tools continues to expand, providing developers with a rich pool of resources. This allows for faster app development by leveraging existing solutions.
- Flutter fosters a vibrant and collaborative community where developers can freely share knowledge, contributing to its continuous growth and enhancement.
- Many top apps are made with Flutter, including eBay Motors, Reflectly, Alibaba, Hamilton, Realtor.com, Square, Topline, Hookle, Birch Finance, Nubank, ING Bank Śląski (Poland), and Credit Agricole Bank Polska (Poland). Here you can find some more Flutter apps that are currently in production.
How does Flutter work?
Now is probably the right time to say that Flutter is not a programming language. Instead, it’s a mobile app SDK (software development kit) for cross-platform app development. It’s also often referred to as Flutter framework.
What is an SDK?
An SDK is like a ready-made kit for building apps. It’s one package you install, and it has all the tools you need, like a tool for turning code into an app, finding mistakes, and sometimes even a set of pre-made parts. It’s made to work with specific devices and systems. Developers use SDKs to add app features like ads and notifications easily.
Software Development Kit
What are the architectural layers in Flutter SDK?
Flutter SDK is fully-fledged, providing a complete toolset for building apps. It has its own drawing engine for graphics, pre-built pieces called widgets to drop into your app, and tools for testing how everything works together. Let’s dive into its main parts and how they all work.
- Embedder
The embedder layer utilizes a platform-specific language (such as Java or Objective-C) to enable Flutter apps to run seamlessly on various operating systems. It acts as a bridge between the native machine code, the platform, and the Flutter engine, ensuring compatibility and smooth execution.
- Engine
Flutter’s heart is the Flutter engine, which is mainly written in C++. It’s like the backstage crew of a theater, handling all the groundwork for every Flutter app. Every time something changes, it draws all the visual elements of your app on the screen. It’s also the powerhouse that runs all of Flutter’s basic features, like creating graphics, arranging text, managing files and network activity, supporting accessibility, allowing add-ons, and running and compiling Dart, the language Flutter apps are written in.
- Framework
Within Flutter, the term “framework” usually refers to the collection of tools, libraries, and functionalities that Flutter provides to developers. This includes things like #widgets, which are the pre-made elements you can use and combine to build your app. It’s within this layer that the magic of reactive programming happens. our app can easily update in response to changes, such as a chat message appearing.
Further enriching the framework are the Material and Cupertino libraries. Think of them as themed toolkits: Material caters to Google-style designs, while Cupertino is tailored to Apple-inspired aesthetics. They enable the utilization of the basic components from the widget layer to craft an application that seamlessly blends into the Android or iOS environment.
In essence, the Flutter framework is engineered to streamline the process of crafting user interfaces that dynamically respond to events, such as user interactions, and maintain a uniform appearance across various platforms.