This is done by starting a Dart Isolate in the Dart runtime.
The isolate is Dart’s container for memory and threads.
A number of auxiliary threads on the host platform are
also created at this point to support the isolate, such
as a thread for offloading GPU handling and another for image decoding.

One isolate exists per FlutterEngine instance, and multiple isolates
can be hosted by the same Dart VM.

On Android, this happens when you call
DartExecutor.executeDartEntrypoint()
on a FlutterEngine instance.

On iOS, this happens when you call runWithEntrypoint:
on a FlutterEngine.

runApp() in your

Attaching a UI to the Flutter engine

A standard, full Flutter app moves to reach this state as
soon as the app is launched.

startActivity()
with an

Intent built using

FlutterActivity.withCachedEngine()
on