• ...
  • SDK
  • Yocto
  • ...
  • ...
  • your first application
  • tools
  • ...

Getting started with Flutter#

Before you start#

Before we can use the SimpleSwitch™ SDK for Flutter we need to download the SDK extension. For this you need to run from the sourced SimpleSwitch™ SDK

GITHUB_TOKEN="<your personal access token for Github>" GITHUB_USERNAME="<your Github username>" simpleswitch-sdk-tool install flutter
eval "$(simpleswitch-sdk-tool activate)"

Github personal access token

To create a Github personal access token see Github container registry (GHCR)

Example Flutter Project#

To create an example project, you may use from the sourced SDK (see Source the SDK)

flutter create myapp

myapp can be replaced by the name of your application.

Build the Flutter project using CLI#

In order to build and deploy using Flutter, you will need to add a Flutter custom device.

Adding a Flutter custom device#

A custom device can be added using the command flutter-add-simpleswitch-device coming with the SimpleSwitch™ SDK

flutter-add-simpleswitch-device <device_id> <target_ip>

Building and Running on custom device#

Using flutter command, you will be able to build and deploy the application with a single command

flutter run -d <device_id>

Where <device_id> is the id you specified for your custom device in Flutter configuration file.

If you want to build a package without deploying, please refer to Using an external tool section below.

Managing Flutter custom devices#

You can list existing custom devices

flutter custom-devices list

You can delete a specific custom device

flutter custom-devices delete -d <device_id>

To modify the configuration of an existing custom device, you can directly modify the custom devices configuration file in ${XDG_CONFIG_HOME}/.config/flutter/custom_devices.json. This can be useful to tweak the startup command, modify the install process, etc.

Using an external tool with Flutter#

You can also build from command line using flutter utility

flutter-create-bundle

You can then use the --copy-dir option of the simpleswitch-generate-package the Generate a SimpleSwitch™ package

simpleswitch-generate-package --name simpleswitch-example --copy-dir build:/usr/share/simpleswitch-example \
   --template flutter --startup-command '/usr/bin/flutter-runner simpleswitch-example -f'

For a different than the release profile try

flutter-create-bundle --debug
simpleswitch-generate-package --name simpleswitch-example --copy-dir build:/usr/share/simpleswitch-example \
   --template flutter --startup-command 'FLUTTER_MODE=debug /usr/bin/flutter-runner simpleswitch-example -f'

respectively

flutter-create-bundle --profile
simpleswitch-generate-package --name simpleswitch-example --copy-dir build:/usr/share/simpleswitch-example \
    --template flutter --startup-command 'FLUTTER_MODE=profile /usr/bin/flutter-runner simpleswitch-example -f'

Debugging running Flutter application#

Before debugging a running application, you must get the observatory URI, exposed by Flutter on startup. This can be done using following command

ssh root@<target_ip> journalctl -u simpleswitch-app@simpleswitch-example.service | grep 'Observatory listening on'

Optionally, you can start the Flutter devtools, allowing to debug the running code

flutter pub global run devtools

Then, in your Flutter application source directory, you can then use a Flutter attach command

flutter pub get
flutter attach -d custom-devices --debug-url <observatory URI>
Now you can interact as with an application running locally:
  • Modify the sources and use Hot reload with the r key.

  • If you started the devtools, use the live debugger. It’s URL should be printed in the console: The Flutter DevTools debugger and profiler on imx8 is available at:.

Further reading#