Tired of typing flutter clean, flutter pub get, or flutter upgrade every time?
With this little ESP32/Arduino gadget, you can map physical buttons to your Flutter commands.
Press a button on the device β the command runs instantly on your computer. β‘
- π±οΈ Physical buttons trigger Flutter commands
- π₯οΈ Cross-platform Python daemon (macOS, Linux, Windows)
- π Auto-detects serial port
- β Token validation (only recognized commands are executed)
- π§ Built with Arduino IDE / ESP32 firmware + Python script
firmware/
esp32_flutter_keys/
esp32_flutter_keys.ino # ESP32/Arduino firmware
daemon/
main.py # Python cross-platform daemon
requirements.txt # Python dependencies
- Written in C++ (Arduino IDE)
- Uses
INPUT_PULLUPbuttons on GPIOs - On press, sends a short token via Serial:
CLEANβflutter cleanPUBGETβflutter pub getUPGRADEβflutter upgrade
π Flash the firmware using Arduino IDE (choose ESP32 board or Arduino board). π On the ESP32 C6, recommended pins are 20 / 21 / 22 (safe GPIOs).
π Online project on Wokwi: https://wokwi.com/projects/440295324580074497
- Listens on the serial port
- Validates incoming tokens
- Executes the matching Flutter command in your project directory
Requirements:
# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r daemon/requirements.txtRun:
# Activate virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Set your Flutter project path
export FLUTTER_KEYS_PROJECT="~/dev/my_flutter_app" # your project path
# Run the daemon
python3 daemon/main.pyCross-platform details:
- macOS/Linux β runs inside
zsh/bash, inherits your PATH correctly - Windows β runs in PowerShell, uses your PATH or FVM shims
- Clone this repo
- Flash the ESP32/Arduino firmware
- Install the Python requirements
- Run the daemon and press the buttons π
This project is licensed under the MIT License. Feel free to fork, modify, and share.

