quill_native_bridge: Mastering Native Clipboard & Rich Text in Flutter
Explore how quill_native_bridge solves the cross-platform rich text, HTML, and image clipboard bottleneck in Flutter desktop and mobile.
Published on • October 30, 2026
AI Assistant

Building document editors, note-taking apps, or chat clients in Flutter often leads developers straight into a frustrating hurdle: the default Flutter Clipboard API only supports plain UTF-8 text.
When users copy formatted text from Microsoft Word, Safari, or Chrome, they expect bold headings, hyperlinks, bulleted lists, and inline images to paste seamlessly. Enter quill_native_bridge, a specialized native interop package designed to bring rich multi-format clipboard operations to Flutter.
The Clipboard Dilemma in Standard Flutter
By default, Flutter’s built-in Clipboard.getData(Clipboard.kTextPlain) strips all HTML, RTF, and image data:
// Flutter default clipboard only reads plain text
ClipboardData? data = await Clipboard.getData(Clipboard.kTextPlain);
print(data?.text); // Stripped of all bold, links, tables, and images!
For rich-text editors like Flutter Quill or custom markdown editors, losing structure ruins the user experience.
Solving It with quill_native_bridge
quill_native_bridge interfaces directly with platform clipboard systems:
- macOS / iOS:
NSPasteboard/UIPasteboardreadingpublic.html,public.rtf, and image representations. - Windows: Win32 Ole clipboard reading
CF_HTMLand bitmap handles. - Linux: X11 and Wayland MIME type targets (
text/html,image/png). - Web: Standard async browser
navigator.clipboardAPI.
dependencies:
quill_native_bridge: ^0.2.0
Reading HTML and Images from the Clipboard
import 'package:quill_native_bridge/quill_native_bridge.dart';
Future<void> handlePaste() async {
final bridge = QuillNativeBridge();
// Check available MIME types on the system clipboard
final formats = await bridge.getClipboardFormats();
if (formats.contains(ClipboardFormat.html)) {
final String? htmlContent = await bridge.getClipboardHtml();
print('Pasted rich HTML: $htmlContent');
} else if (formats.contains(ClipboardFormat.image)) {
final Uint8List? imageBytes = await bridge.getClipboardImage();
print('Pasted image bytes length: ${imageBytes?.length}');
} else {
final String? plainText = await bridge.getClipboardText();
print('Pasted plain text: $plainText');
}
}
Key Takeaway
If your Flutter application deals with content authoring, documents, or rich messaging across desktop and mobile, integrating quill_native_bridge provides the native clipboard fidelity users expect.