flutter_fbdev library
Run Flutter on no-DRM framebuffer handhelds (Anbernic RG34XXSP and friends), with gamepad/evdev input and an on-screen button-mapping overlay.
See the README for the full picture: this package ships a software-rendered
/dev/fb0 Flutter embedder (native/), build + deploy tooling (tool/), and
the Dart input layer exported here.
Classes
- FbdevAudio
- Plays a bundled audio file through the framebuffer embedder.
- HandheldButtonEvent
- A press or release of a HandheldButton.
- HandheldInput
-
Receives raw evdev input forwarded by the framebuffer embedder over the
flutter_fbdev/inputplatform channel, maps it to HandheldButtons via a HandheldProfile, and dispatches press/release events. - HandheldInputOverlay
-
On-screen overlay that flashes + bounces the most recently pressed handheld
button (mapped name, or the raw
KEY n/HAT X +for unmapped inputs). - HandheldProfile
-
Maps a device's raw evdev codes to HandheldButtons. The d-pad is assumed to
be an
EV_ABShat (hatX/hatY); face/shoulder/menu buttons areEV_KEYcodes in keys. Override for other devices - rg34xxsp is the default. - HandheldSticks
-
The state of both analog sticks, each axis normalized to
-1.0 .. 1.0(0= centred). evdev exposes no fixed range over the raw channel, so values self-calibrate as the stick is swept to its extremes - expect a short warm-up the first time a stick is used.
Enums
- HandheldButton
- A logical handheld button, mapped from raw evdev events by a HandheldProfile.
Constants
- flutterFbdevVersion → const String
-
The published package version, mirroring
version:inpubspec.yaml.
Properties
- isFbdevHandheld → bool
-
True when running on a no-DRM framebuffer handheld via the
flutter_fbdevembedder (the engine reports the Linux target). Gate handheld code paths on this: button input, landscape layout, silent audio, skipping touch menus, etc.no setter
Functions
-
fbdevTryStep(
FutureOr< void> step()) → Future<bool> -
Runs
step, swallowing any error so a platform service that's unavailable on the minimal embedder (shared_preferences, audio, haptics, Game Center, …) can't abort startup. Wrap each risky bootstrap call. Returns true on success.