This repository is the Flutter phone app for Android and iOS. It connects to PocketController Server.
app/ (Flutter)
├── screens/ (controller, connection)
├── widgets/ (controls, layout surface and picker)
├── models/ (gamepad state, layouts)
├── services/ (persisted settings)
└── network/ (connection, discovery, auto-connect)
- Controls: 8-way D-pad, A/B/X/Y, two analog sticks, LB/RB, analog LT/RT, Back / Home / Start — all multi-touch.
- Layouts: Classic, Racing and Compact, plus custom layouts you can drag, resize, save and delete.
- Discovery and reconnect: the app lists a PC on the same Wi‑Fi and rejoins it at launch, when it appears later, or after a dropped connection. Entering an IP manually still works.
- Connection status: Connected is shown only after an acknowledgement, with latency and specific errors otherwise.
- Comfort: haptic feedback (toggleable), screen-reader labels, 44 px minimum touch targets, sizing for small phones.
- Settings and layouts are stored on the phone.
| Setting | Value |
|---|---|
| UDP port | 5555 |
| Discovery | UDP 5556 (probes) / 5557 (announcements) |
| Send rate | 60 Hz |
- Flutter 3.x / Dart 3.x
- An Android or iOS phone on the same Wi-Fi network as the PC
- Build and install this app (
cd app && flutter run). - Open the PC connection screen (status chip, top left). Your PC appears under On your network; tap it. Or enter the IP address and port manually and tap Connect.
Next time, the app reconnects to the same PC automatically when it finds it.
Having trouble? See SUPPORT.md.
The app is not compatible with DroidJoy or other controller servers. The packets it sends are documented in docs/PROTOCOL.md.
cd app
flutter analyze
flutter testSee CONTRIBUTING.md. The Flutter project notes are in app/README.md.
| Project | Version |
|---|---|
| PocketController-App app | 1.2.2 |
See the changelog.
