android_multi_display 0.1.0
android_multi_display: ^0.1.0 copied to clipboard
Flutter plugin for managing multiple external displays on Android, with presentation rendering and real-time data communication between screens.
android_multi_display #

Android Flutter plugin for managing multiple external displays with independent UI rendering and real-time data communication between screens.
✨ Features #
- Support up to 3 ordered displays (primary + secondary + tertiary)
- Render independent Flutter UI on each screen
- Real-time bidirectional messaging (host ↔ panels)
- Fine control over display ordering and attachment
📸 Preview #

🧠 How it works #
-
Main app = Host (primary display)
-
External screens = Panels (secondary / tertiary)
-
Communication:
- Host → Panels:
broadcast - Panels → Host:
panelBridge
- Host → Panels:
🔧 Basic Usage #
final controller = PanelController();
await controller.bootstrap(
secondaryEntrypoint: 'secondaryDisplayMain',
tertiaryEntrypoint: 'tertiaryDisplayMain', //Optional
);
await controller.activatePanels();
🔄 Messaging #
Send data from host:
controller.broadcast({"type": "ping"});
Receive on panel:
Future<bool> publish({
required String action,
dynamic payload,
}) async {
final result = await _panelToHost.invokeMethod<bool>(
'panelToHost',
<String, dynamic>{'action': action, 'payload': payload},
);
return result == true;
}
publish({"type": "pong"});
🧩 Panel Plugins #
If you need to use Flutter plugins inside panel screens (like path_provider), you must register them during bootstrap.
await controller.bootstrap(
secondaryEntrypoint: 'secondaryDisplayMain',
tertiaryEntrypoint: 'tertiaryDisplayMain', //Optional
panelPluginClassNames: const [
'io.flutter.plugins.pathprovider.PathProviderPlugin',
],
);
🤝 Contributing #
Contributions are welcome!
If you have ideas, improvements, or bug fixes, feel free to open an issue or pull request on GitHub.
This plugin was partly inspired by external_display but redesigned with a focus on multi-display orchestration and messaging.
☕ Support / Donate #
If this plugin helped you, consider supporting development:
💳 Card Payment #
🪙 Crypto #
USDT (TRC20):
TJnFcaM8v4s5RVfo9H3jc38tH1HwdA2PkV
📄 License #
MIT License
