$ show Flutter-Bounty-Hunters/super_editor
super_editor is a Flutter framework for building configurable rich text editors, read-only document viewers, and chat/messaging UIs. It provides a document model based on nodes and attributed spans, a single-column layout engine, platform-specific selection/caret/toolbar controls, IME integration, and serialization to/from Markdown, HTML, and Quill Delta. The repository is a monorepo containing the core super_editor package plus supporting packages: attributed_text, super_text_layout, super_keyboard, super_editor_clipboard, and super_editor_spellcheck. It is used in production by apps such as Superlist and ClickUp, and includes example clones of Google Docs, Slack, Quill, Bear, Obsidian, Medium, and iOS Messenger.
The LLM identified 5 files worth highlighting for reuse:
Implements the core span model for rich text: overlapping attributions (bold, italic, links, custom metadata) stored as markers over character ranges. Handles splitting, merging, and querying spans efficiently, and is fully unit-tested. The attributed_text package is standalone and can be extracted into any Flutter/Dart project needing a robust attributed string model.
Provides a custom text layout and rendering engine (SuperText, SuperTextWithSelection, BlinkController) that supports decoration layers above/below text, custom carets, and selection painting without relying on Flutter's built-in TextField. It is a separate package with its own tests, making it directly reusable for apps that need precise control over text rendering.
Unified cross-platform API for observing keyboard visibility and frame changes on iOS and Android. Abstracts platform channels behind a simple builder/controller pattern, with separate Android and iOS implementations. Reusable in any Flutter app that needs to react to the software keyboard.
A ValueNotifier subclass that can temporarily pause and resume notifications, buffering or suppressing transient state changes. Useful for avoiding unnecessary rebuilds during complex multi-step updates. Self-contained and easily extracted.
A keyboard-navigable list widget with active/selected states, focus management, and item selection callbacks. Implements common list interaction patterns (arrow keys, home/end, selection changes) in a reusable widget that is independent of the editor domain.