The flutter run variants

We aspire to reach a state where flutter run has the following modes:

  • flutter run: builds a debug version of the app and starts it in “hot reload” mode, then shows the console UI to manipulate the running instance.
  • flutter run --no-hot: builds a debug version of the app and starts it directly, then shows the console UI to manipulate the running instance.
  • flutter run --profile: builds a profile version of the app and starts it directly, then shows the console UI to manipulate the running instance.
  • flutter run --release: builds a release version of the app and starts it directly, then shows the console UI to manipulate the running instance.

Adding --machine in any of the situations above spawns a flutter daemon which:

  • changes the output to JSON so that it can be more easily consumed by IDEs, and
  • allows the use of JSON commands to interact with the running application (e.g. stopping the application).

All of the commands above launch a Flutter application and do not return until that Flutter application exits. Adding --no-resident in any of the situations causes the command to return immediately after the application has been launched rather than waiting until the application exits.