Each platform has its own set of APIs and constraints. Some brief
platform-specific notes:

On iOS and macOS, Flutter is loaded into the embedder as a UIViewController
or NSViewController, respectively. The platform embedder creates a
FlutterEngine, which serves as a host to the Dart VM and your Flutter
runtime, and a FlutterViewController, which attaches to the FlutterEngine
to pass UIKit or Cocoa input events into Flutter and to display frames
rendered by the FlutterEngine using Metal or OpenGL.

On Android, Flutter is, by default, loaded into the embedder as an Activity.
The view is controlled by a
FlutterView,
which renders Flutter content either as a view or a texture, depending on the
composition and z-ordering requirements of the Flutter content.

On Windows, Flutter is hosted in a traditional Win32 app, and content is
rendered using
ANGLE, a
library that translates OpenGL API calls to the DirectX 11 equivalents.