Flutter and Architecture
Flutter is a cross-platform UI toolkit that is designed to build applications across operating systems such as iOS and Android, while also allowing them to interface directly with underlying platform services.

Flutter is a framework and not a language as it was built on Dart by Google. When you are building your app, it runs on a virtual machine with a special feature: hot-reload. This lets you see your app changes in real-time without rebuilding/redeploying it.
Dart App
~ Composes widgets into the desired UI.
~ Implements business logic.
~ Owned by app developer.
Framework
The Framework layer is written in Dart and contains the high-level libraries that you’ll use directly to build apps. This includes the UI theme, widgets, layout and animations, gestures and foundational building blocks. Alongside the main Flutter framework are plugins: high-level features like JSON serialization, geolocation, camera access, in-app payments and so on. This plugin-based architecture lets you include only the features your app needs.

~ Provides higher-level API to build high-quality apps (for example, widgets, hit-testing, gesture detection, accessibility, text input).
~ Composites the app’s widget tree into a scene.
Engine
The Engine layer contains the core C++ libraries that make up the primitives that support Flutter apps. The engine implements the low-level primitives of the Flutter API, such as I/O, graphics, text layout, accessibility, the plugin architecture and the Dart runtime. The engine is also responsible for rasterizing Flutter scenes for fast rendering onscreen.

The engine is exposed to the Flutter framework through dart:ui, which wraps the underlying C++ code in Dart classes. This library exposes the lowest-level primitives, such as classes for driving input, graphics, and text rendering subsystems.

~ Responsible for rasterizing composited scenes.
~ Provides low-level implementation of Flutter’s core APIs (for example, graphics, text layout, Dart runtime). Exposes its functionality to the framework using the dart:ui API. Integrates with a specific platform using the Engine’s Embedder API.
Embedder
To the underlying operating system, Flutter applications are packaged in the same way as any other native application. A platform-specific embedder provides an entrypoint; coordinates with the underlying operating system for access to services like rendering surfaces, accessibility, and input; and manages the message event loop.

The embedder is written in a language that is appropriate for the platform: currently Java and C++ for Android, Objective-C/Objective-C++ for iOS and macOS, and C++ for Windows and Linux. Using the embedder, Flutter code can be integrated into an existing application as a module, or the code may be the entire content of the application. Flutter includes a number of embedders for common target platforms, but other embedders also exist.

~ Coordinates with the underlying operating system for access to services like rendering surfaces, accessibility, and input.
~Manages the event loop.
~Exposes platform-specific API to integrate the Embedder into apps.
Runner
~ Composes the pieces exposed by the platform-specific API of the Embedder into an app package runnable on the target platform.
~ Part of app template generated by flutter create, owned by app developer.