singerdmx/flutter-quill
62.2
Adequate · 23 September 2026
28.3k
lines of production code
Dart
primary language
5
measurements over time
What this system is
Flutter Quill is a rich text editor library for Flutter that manages document structure, formatting, and user input across mobile, desktop, and web platforms. It provides a modular architecture for handling text, images, videos, and lists, supported by extensive tooling for clipboard operations, link validation, and Markdown conversion. The system includes dedicated extensions for media embedding and a separate testing package to facilitate widget and controller interaction testing.
How it got here
2020–2022 — Flutter Quill 11 modularization and example overhaul
17 changes.
This period focused on releasing Flutter Quill 11.0.0, which introduced a modular library structure with new entry points and separated extensions into their own package. The work also involved a comprehensive rebuild of the example application across all platforms, migrating to Material 3, updating native configurations, and demonstrating the new modular capabilities.
2023–2025 — modular architecture and testing expansion
51 changes.
The project underwent a comprehensive architectural restructuring, refactoring the document model, editor, and toolbar into modular components with immutable data structures and builder patterns. This period also saw the introduction of extensive testing utilities, including a dedicated flutter\_quill\_test package and broad coverage for controller, document, and UI behaviors, alongside expanded localization and media embedding features.
Features
Add utility functions for validating URLs and base64 strings
New utility files (patterns.dart, string.dart, utils.dart) have been added to the common utils directory. These provide helper functions to detect base64 strings, HTTP/HTTPS URLs, image base64 data, and YouTube URLs, as well as a function to replace CSS style strings with specific width and height attributes.
_flutter\_quill\extensions/lib/src/common/utils · high confidence
Add web-specific HTML element creation utilities
New platform-specific utilities have been added to the web module, introducing \createHtmlImageElement\ and \createHtmlIFrameElement\ functions. These functions allow the application to register and instantiate HTML image and iframe elements via the platform view registry on web targets, while providing stub implementations that throw errors for non-web platforms to ensure safe cross-platform usage.
_flutter\_quill\extensions/lib/src/common/utils/web · high confidence
Added Linux Flutter build configuration and plugin registration
The Linux build environment for the example application is now configured to support Flutter plugins. The CMake build scripts have been added to link the Flutter Linux library and system dependencies (GTK, GLib, GIO), and the generated plugin registrant explicitly registers the \file\_selector\_linux\ and \url\_launcher\_linux\ plugins, enabling these capabilities in the Linux desktop build.
example/linux/flutter · high confidence
Added Linux desktop build support for the example app
The example application now includes the necessary source files and build configuration to run on Linux desktop. This addition introduces a CMake build system (CMakeLists.txt) and native C++ entry points (main.cc, my\_application.cc/h) that initialize a GTK window, register Flutter plugins, and launch the Dart application, enabling users to build and run the flutter\_quill example on Linux environments.
example/linux · high confidence
Added Windows runner for the example application
The example application now includes a native Windows runner, enabling users to build and run the flutter\_quill demo on Windows desktop. This change adds the necessary CMake build configuration, C++ source files for window management and Flutter integration, and resource files (including DPI awareness and versioning) required to compile the executable.
example/windows/runner · high confidence
Added localization support for Amharic, Arabic, Bosnian, Bulgarian, Catalan, Danish, Greek, Persian, and additional languages
The editor now supports a wider range of languages, with new translation files added for Amharic (am), Arabic (ar), Bosnian (bs), Bulgarian (bg), Catalan (ca), Danish (da), Greek (el), Persian (fa), and others. This allows users to interact with the editor interface in their preferred language, including features like image saving, link insertion, and text formatting.
lib/src/l10n · high confidence
Centralized image, video, and camera embed support
The \flutter\_quill\_extensions\ library now provides a unified \FlutterQuillEmbeds\ utility class to simplify the integration of media embeds. Users can easily configure and register embed builders for images and videos in the editor, with specific support for web platforms via \editorWebBuilders\ (which throws an error if used on non-web platforms) and a platform-aware \defaultEditorBuilders\ method. Additionally, toolbar buttons for inserting images, videos, and capturing photos are now accessible through a single \toolbarButtons\ method, allowing developers to enable or disable specific media controls by passing null for unwanted options.
_flutter\_quill\extensions/lib/src · high confidence
Introduce customizable copy and cut service for embeddable blocks
A new CopyCutService abstraction and its default implementation have been added to handle copy and cut actions for embeddable blocks within the editor toolbar. This service allows the default behavior (returning an object replacement character) to be overridden via CopyCutServiceProvider, enabling custom handling of clipboard operations for specific embeddable types. The service and provider are marked as experimental.
_lib/src/editor\_toolbar\_controller\_shared/copy\_cut\service · high confidence
New URI and View ID extension utilities
Added two new extension methods to the common extensions library: \UriExt\ provides \isHttpBasedUrl\ and \isHttpsBasedUrl\ for checking URL schemes, and \ViewIdExt\ adds \getViewId\ to \BuildContext\ to safely retrieve the current view ID, falling back to platform dispatcher views if no View is in the context.
lib/src/common/extensions · high confidence
New camera, image, and video toolbar buttons with source selection dialogs
The toolbar now includes dedicated buttons for inserting media: a camera button that lets users choose between taking a photo or recording a video, and image and video buttons that offer selection from the gallery, camera, or by pasting a link. Each button includes configuration options for custom callbacks and dialog themes, and the camera-specific options are disabled on desktop platforms.
_flutter\_quill\extensions/lib/src/toolbar · high confidence
New configuration options for code block line numbers and search behavior
The editor now exposes \showCodeBlockLineNumbers\ in \QuillEditorConfig\ to let users toggle the visibility of line numbers in code blocks (defaulting to true), and introduces \QuillSearchConfig\ with a \searchEmbedMode\ option to control whether search functionality includes content within embed nodes.
lib/src/editor/config · high confidence
New custom leading builder API for lists and codeblocks
The editor now exposes a \LeadingBlockNodeBuilder\ typedef and a \LeadingConfig\ class to allow customization of leading content for ordered lists, unordered lists, checklists, and codeblocks. This change introduces a new builder pattern in \lib/src/editor/raw\_editor/builders/leading\_block\_builder.dart\ that encapsulates configuration such as indentation levels, numbering styles (including Roman numerals and alphabetical), and checkbox states. Default implementations for bullet points, checkboxes, and codeblock line numbers are provided in \lib/src/editor/widgets/default\_leading\_components\ to maintain existing behavior while enabling users to supply custom widgets for these leading elements.
_lib/src/editor/raw\_editor/builders, lib/src/editor/widgets/default\_leading\components · high confidence
New customizable character and space shortcut events
The editor now supports a new, extensible system for handling character and space-based shortcuts, allowing users to define custom behaviors for specific key presses. This change introduces \CharacterShortcutEvent\ and \SpaceShortcutEvent\ classes, along with standard implementations for common Markdown-style formatting: single characters like \\\ (italic), \\~\ (strikethrough), and \\ \ \\ (inline code); double characters like \\\\ or \\\_\ (bold); and space-triggered block formats such as \-\ for bullet lists, \1.\ for ordered lists, and \\#\, \\#\#\, \\#\#\#\ for headers. These shortcuts are exposed via the \standard\_char\_shortcuts\` exports, enabling developers to easily integrate or replace these default behaviors within the raw editor configuration.
_lib/src/editor/raw\editor/config/events · high confidence
New image embedding configuration classes for editor and web
The editor now exposes \QuillEditorImageEmbedConfig\ and \QuillEditorWebImageEmbedConfig\ to allow users to customize image handling. The main config provides callbacks for image removal (including a default that cleans up temporary files on mobile), confirmation logic before deletion, custom image providers (e.g., for assets or cached network images), error widgets, and click behavior. The web-specific config allows setting box constraints for embedded images.
_flutter\_quill\extensions/lib/src/editor/image/config · high confidence
New image viewing and resizing widgets for the editor
The editor now includes dedicated widgets for handling image interactions: ImageTapWrapper provides a full-screen photo viewer with zoom capabilities (via photo\_view) and a close button, supporting various image sources (HTTP, file, base64, assets) and custom error/loading builders. ImageResizer offers a UI for adjusting image dimensions using adaptive sliders (Material or Cupertino depending on theme), with debounced updates to the editor.
_flutter\_quill\extensions/lib/src/editor/image/widgets · high confidence
New immutable spacing and structural value types
The library introduces new immutable data structures to support block styling and internal document representation. Users can now utilize HorizontalSpacing and VerticalSpacing, each featuring a zero constant and copyWith methods for creating modified instances, to define horizontal and vertical spacing for block styles. Additionally, new types such as ImageUrl, OffsetValue, OptionalSize, and SegmentLeafNode are provided to handle image styling, offset-based values, flexible sizing, and segment node relationships respectively.
lib/src/common/structs · high confidence
New list item widgets and editor rendering infrastructure
The editor now includes dedicated widgets for rendering list items: QuillBulletPoint for bullet lists, QuillNumberPoint for numbered lists, and QuillCheckboxPoint for task lists, with the latter supporting a custom UI builder via QuillCheckboxBuilder. This change also introduces the underlying rendering infrastructure in lib/src/editor/widgets, including RenderContentProxyBox and RenderEditableBox interfaces for handling text layout and caret positioning, CursorStyle and CursorCont for managing cursor appearance and blinking, and proxy render objects (BaselineProxy, EmbedProxy, RichTextProxy) to wrap Flutter's native render boxes for consistent editing behavior.
lib/src/editor/widgets · high confidence
New markdown conversion module with table, code block, and media support
The \lib/src/packages/quill\_markdown\ location now contains a complete, newly structured implementation for converting between Quill Delta and Markdown formats. This update introduces support for parsing and rendering markdown tables as embeddable elements, preserves programming language metadata in code blocks, and enables the conversion of HTML-style video and image tags into Quill embeds. Users will see improved fidelity when round-tripping content, including proper handling of blockquotes, lists, and horizontal rules, along with utility functions to ensure correct newline insertion around embeddable content.
_lib/src/packages/quill\markdown · high confidence
New text block utility functions for list and code block indentation
A new utility file, text\_block\_utils.dart, has been added to provide default implementations for calculating leading block indentation and number point widths. This introduces the TextBlockUtils class with methods to handle horizontal spacing for block quotes, ordered lists, and code blocks, as well as a default text span builder for rendering inline text with gesture recognizers.
lib/src/editor/widgets/text/utils · high confidence
New utility modules for element handling and media insertion in flutter\_quill\_extensions
This change introduces new utility files within the \flutter\_quill\_extensions\ package to support media insertion and element attribute parsing. It adds \default\_image\_insert.dart\ and \default\_video\_insert.dart\ to handle image and video insertion callbacks, and \image\_video\_utils.dart\ which provides a \TypeLinkDialog\ for validating and inserting image or video URLs. Additionally, it includes \element\_utils\ (split into \element\_shared\_utils.dart\, \element\_utils.dart\, and \element\_web\_utils.dart\) to parse CSS properties and extract element attributes like size, margin, and alignment for both general and web-specific contexts.
_flutter\_quill\_extensions/lib/src/common/utils/element\utils · high confidence
Windows example app now supports file selection and URL launching
The Windows example application has been updated to include support for opening file selectors and launching external URLs. This is achieved by registering the \file\_selector\_windows\ and \url\_launcher\_windows\ plugins in the generated plugin registrant, ensuring these capabilities are available to the Flutter app on Windows.
example/windows/flutter · high confidence
flutter\_quill\_test package introduces new editor interaction APIs and raises SDK requirements
The flutter\_quill\_test package has been separated from the main library and updated to require Flutter 3.44 and Dart 3.12. This release adds a comprehensive set of new testing utilities for the QuillEditor, including methods to enter, replace, and remove text (quillEnterText, quillReplaceText, quillRemoveText), manage cursor position and selection (quillMoveCursorTo, quillUpdateSelection, quillExpandSelectionTo), update editing values with selection, hide the keyboard, and locate editor states (findRawEditor, findEditor).
_flutter\_quill\test · high confidence
Architecture
Editor module restructured with new core files and shared utilities
The lib/src/editor location has been restructured as part of a modular architecture update. This change introduces the core editor implementation in a new editor.dart file, which defines the QuillEditor widget and its state management, and adds a new color.dart utility file in the editor\_toolbar\_shared directory to handle hex color conversions. These files establish the foundational components for the editor's rendering and configuration handling within the new modular layout.
lib/src/editor · high confidence
Refactored raw editor into modular architecture with new configuration and state management
The raw editor implementation has been restructured into a modular architecture, extracting the configuration, state, and rendering logic into dedicated files (raw\_editor\_config.dart, raw\_editor\_state.dart, raw\_editor\_render\_object.dart, etc.). This change introduces the QuillRawEditorConfig class to centralize editor settings, including new options for custom leading builders, code block line numbers, and scribble support, while also deprecating the unused QuillSingleChildScrollView. The refactoring improves code organization and maintainability without altering the external API surface.
_lib/src/editor/raw\editor · high confidence
Restructure flutter\_quill\_extensions into modular architecture
The flutter\_quill\_extensions package has been reorganized into a modular structure, with the main entry point now exporting specific sub-libraries for controller extensions, image and video embeds (including web-specific configurations), and toolbar buttons for camera, image, and video. This change improves organization and allows users to import only the components they need, such as configuring camera options via the newly exported camera\_types.dart or using the updated image and video embed builders.
_flutter\_quill\extensions/lib · high confidence
Restructured document model with new node hierarchy
The document tree has been reorganized into a modular architecture using new classes in lib/src/document/nodes. A new Block node now groups adjacent lines with the same block style, handling merging and adjustment logic. The QuillContainer base class centralizes child management, insertion, and deletion operations for both Block and Line nodes. The Line node now explicitly manages embeds (ensuring they occupy the entire line) and handles line-break splitting and style inheritance. New Embeddable and BlockEmbed classes define the structure for embedded content like images and videos, while the Leaf node handles text and embed data manipulation. This refactoring provides a clearer separation of concerns between block-level and inline-level document structures.
lib/src/document/nodes · high confidence
Restructured editor rules into a modular architecture
The editor's internal logic for handling text operations has been reorganized into a modular structure within the \lib/src/rules\ directory. This change introduces a unified \Rule\ base class and a central \Rules\ manager that applies a specific chain of heuristics for insert, delete, and format operations. Users benefit from improved consistency in how the editor handles complex interactions, such as preserving block styles when splitting lines, merging lines while retaining formatting, and correctly applying link attributes at the caret position.
lib/src/rules · high confidence
Behavioural changes
Add magnifier widget and restore toolbar visibility
The editor now includes a custom magnifier widget (QuillMagnifier) to assist with precise text selection, and fixes a regression where hiding the magnifier previously caused the toolbar to disappear; the toolbar is now correctly restored when the magnifier is hidden.
lib/src/editor/widgets/text · high confidence
Development and release scripts migrated from shell to Dart
The project's automation scripts (including \before\_push.dart\, \publish\_flutter\_quill.dart\, and translation tools) have been rewritten in Dart, replacing the previous shell-based implementations. This migration introduces a structured publishing workflow that validates versions against pub.dev, updates \pubspec.yaml\ and \CHANGELOG.md\ according to Keep a Changelog standards, and manages git tagging, while also standardizing pre-push checks like analysis, testing, and formatting.
scripts · high confidence
Document model refactored with immutable attributes and plain-text caching
The document core has been restructured to use immutable data structures for attributes and style definitions, improving consistency and safety when handling rich text formatting. Additionally, the Document class now caches the plain text representation to avoid redundant computation during text extraction, which can improve performance for operations that frequently access the document's raw text content.
lib/src/document · high confidence
Example app remade with Material 3, custom toolbar, and link validation
The example application has been completely remade to demonstrate Flutter Quill 11.0.0 capabilities. It now uses Material 3 themes and localizations via \flutter\_localizations\. A new \CustomToolbar\ widget showcases granular control over editor buttons, while the main editor demonstrates advanced features like custom embed builders (images, videos, timestamps), external image paste handling, and configurable link validation that accepts \mailto\ links by default.
example/lib · high confidence
Example app scaffolded with updated configuration and metadata
The example application has been remade, introducing a new project structure that includes a .gitignore tailored for Flutter/Dart artifacts, an analysis\_options.yaml file inheriting from flutter\_lints, and a .metadata file tracking the stable Flutter channel and migration state across all supported platforms (Android, iOS, Linux, macOS, Web, Windows). A new README.md has been added to demonstrate usage of the flutter\_quill package with screenshots for various modes, and the macOS runner workspace configuration has been initialized to support the platform.
example · high confidence
Example iOS project migrated to Swift and Xcode 15
The iOS example application has been completely remade, switching the native implementation from Objective-C to Swift (AppDelegate.swift) and updating the Xcode project to object version 54 (Xcode 15.1). The minimum deployment target is now iOS 12.0, and the project structure now includes a dedicated RunnerTests target for unit testing. Additionally, the Info.plist has been updated to include required privacy usage descriptions for the camera, microphone, and photo library to support the flutter\_quill demo features.
example/ios · high confidence
Expanded localization support with new language translations
The generated localization files in lib/src/l10n/generated have been updated to include translations for a significantly larger set of languages, including Amharic, Arabic, Bulgarian, Bengali, Bosnian, Catalan, Czech, Danish, German, Greek, Spanish, Persian, Finnish, and others. This change ensures that the FlutterQuill editor interface is now available in many more regional languages, improving accessibility for non-English speaking users.
lib/src/l10n/generated · high confidence
Flutter Quill 11.0.0: New modular library entry points and internal APIs
This release restructures the public API surface with new library entry points: \flutter\_quill.dart\ now serves as the main export file, \quill\_delta.dart\ exposes only the Delta datatype, and \internal.dart\ provides experimental APIs for related packages. The \flutter\_quill\_internal.dart\ file is deprecated in favor of \internal.dart\. Additionally, a \LocalizationsExt\ extension is added to \BuildContext\ for easier access to localization strings, and new structs for horizontal/vertical spacing and image URLs are exported.
lib · high confidence
Introduce rich clipboard service abstraction with native bridge support
The editor now uses a new \ClipboardService\ abstraction to handle clipboard operations, enabling support for rich content such as HTML, Markdown, images, and GIFs. The default implementation delegates to \QuillNativeProvider\ (quill\_native\_bridge) for these capabilities, while gracefully falling back to null or basic text checks when the native bridge is unsupported or unavailable on the current platform (e.g., web). A \ClipboardServiceProvider\ allows swapping the implementation, and the service includes a check for clipboard content presence.
_lib/src/editor\_toolbar\_controller\shared/clipboard · high confidence
New attribute extension and deprecated controller extensions
A new \FlutterAlignmentAttribute\ and its corresponding extension are added to \attribute.dart\ to support custom alignment attributes. In \controller\_ext.dart\, the \QuillControllerExt\ extension is marked as deprecated, advising users to replace the \index\ and \length\ getters with \selection.baseOffset\ and \selection.extentOffset - selection.baseOffset\ respectively, and to remove usage of \insertImageBlock\ and \insertVideoBlock\ methods which are also deprecated.
_flutter\_quill\extensions/lib/src/common/extensions · high confidence
New clipboard configuration and paste handling logic
The clipboard subsystem has been refactored to introduce \QuillClipboardConfig\, a new configuration class that allows users to customize paste behavior through callbacks such as \onClipboardPaste\, \onImagePaste\, \onGifPaste\, \onRichTextPaste\, and \onPlainTextPaste\. The underlying paste implementation has been split into dedicated files (\quill\_controller\_paste.dart\ and \quill\_controller\_rich\_paste.dart\) to handle plain text, HTML, and Markdown pasting separately, enabling more granular control over how content from the system clipboard is processed and inserted into the editor.
lib/src/controller/clipboard · high confidence
New delta diffing utilities and deprecation of experimental Markdown/HTML conversion
This change introduces a new \Diff\ class and helper functions (\getDiff\, \getPositionDelta\, \getDirectionOfNode\) in \lib/src/delta/delta\_diff.dart\ to calculate text differences and handle text directionality, while simultaneously deprecating the experimental \DeltaX\ class in \lib/src/delta/delta\_x.dart\. The \DeltaX\ methods for converting Markdown and HTML to Delta are now marked as deprecated with warnings directing users to external packages (\markdown\_quill\ and \flutter\_quill\_delta\_from\_html\), signaling the removal of built-in experimental conversion support in future releases.
lib/src/delta · high confidence
New embed context and builder interface for rich text editor
The editor now uses a dedicated EmbedContext class to encapsulate parameters (controller, node, read-only state, inline flag, text style) for embedded content, and an EmbedBuilder abstract class to define how these embeds are rendered. This introduces a structured way to customize embedded content display within the rich text editor, replacing previous ad-hoc embedding logic with a consistent builder pattern.
lib/src/editor/embed · high confidence
New image embedding and management capabilities in the editor
The image handling subsystem has been restructured into a modular architecture, introducing dedicated embed builders for native and web platforms. Users now benefit from improved image saving logic that intelligently selects between gallery saves (on mobile/macOS) and native file dialogs (on desktop), along with enhanced image copying that properly handles image bytes. The editor also supports configurable image providers and error widgets, allowing for more flexible image display and interaction, such as resizing and removal via a context menu.
_flutter\_quill\extensions/lib/src/editor/image · high confidence
New keyboard shortcut system with custom event hooks
The editor now uses a dedicated keyboard shortcut architecture that maps standard shortcuts (like Ctrl+B for bold, Ctrl+Z for undo, and Cmd+M for indent) to specific intents and actions. This change introduces an \onKeyPressed\ callback, allowing users to intercept and handle raw key events before the default shortcuts are processed, providing greater control over keyboard interactions.
_lib/src/editor/raw\_editor/keyboard\shortcuts · high confidence
New macOS example project structure
The macOS example application has been remade, introducing a fresh Xcode project configuration for the \flutter\_quill\_example\ app. This update includes a new project file (\project.pbxproj\) that defines the build targets, source files (such as \AppDelegate.swift\ and \MainFlutterWindow.swift\), and resources, alongside a new workspace configuration and build scheme. The scheme is configured to run a Flutter framework preparation script before building, ensuring the native macOS environment is correctly set up for the Flutter engine.
example/macos/Runner.xcodeproj · high confidence
New modular video embedding architecture with custom builder support
The video embedding system has been restructured into a modular architecture, introducing distinct embed builders for general platforms (QuillEditorVideoEmbedBuilder) and web-specific contexts (QuillEditorWebVideoEmbedBuilder). This change adds a new QuillEditorVideoEmbedConfig that allows users to provide a customVideoBuilder callback, enabling custom rendering logic for video URLs and supporting various platforms beyond the default implementation. The web embed builder now handles YouTube URL conversion to embed format using a dedicated utility, while the general video app continues to support local and network video playback via the video\_player package. This modular approach allows for more flexible video embedding strategies across different platforms.
_flutter\_quill\extensions/lib/src/editor/video · high confidence
New utility modules for color, link validation, and platform detection
The \lib/src/common/utils\ directory now includes several new utility files that enhance editor capabilities and internal structure. The \color.dart\ module allows \stringToColor\ to resolve colors from a custom palette defined in \DefaultStyles\, in addition to standard CSS color names and hex codes. The \link\_validator.dart\ module introduces a \LinkValidator\ class with a \LinkValidationCallback\ typedef, enabling users to override link validation logic and accept \mailto:\ and other non-HTTP schemes by default. The \platform.dart\ module provides improved platform detection using \defaultTargetPlatform\ constants, while \quill\_native\_provider.dart\ integrates \quill\_native\_bridge\ for accessing platform-specific APIs. Additional utilities include \cast.dart\ for safe casting, \embeds.dart\ for retrieving embed nodes, \font.dart\ for font size handling, \string.dart\ for parsing key-value pairs and alignments, and \widgets.dart\ for conditional widget wrapping.
lib/src/common/utils · high confidence
QuillController restructured with modular config and embed search support
The QuillController has been refactored to support a modular architecture, introducing a dedicated QuillControllerConfig class that exposes experimental clipboard configuration and a new requireScriptFontFeatures option for rendering subscripts and superscripts via OpenType Font Features. Additionally, the controller now accepts and propagates editor configuration to the underlying document, enabling search functionality within embedded objects (such as images) by exposing embed builders and search configuration properties.
lib/src/controller · high confidence
Rebuilt Android example app with updated build configuration
The Android example application has been recreated to ensure it is runnable, including a new .gitignore to exclude build artifacts and sensitive keystore files. The app's AndroidManifest.xml now declares INTERNET permissions for development, WRITE\_EXTERNAL\_STORAGE for image saving on older Android versions, and a FileProvider to support copying images to the system clipboard via quill\_native\_bridge. The MainActivity has been updated to extend FlutterActivity, and theme resources have been added to support both light and dark modes. Additionally, the Gradle wrapper has been updated to version 9.1.0.
example/android · high confidence
Toolbar buttons refactored with unified options resolution and base classes
The toolbar implementation has been restructured to use a new \QuillToolbarButtonOptionsResolver\ that applies a consistent fallback strategy: specific button options now override shared \baseOptions\ for properties like icons, tooltips, and sizes. This change introduces new base classes (\QuillToolbarBaseButton\, \QuillToolbarBaseButtonStateless\) and a scrollable \QuillToolbarArrowIndicatedButtonList\ to improve layout handling. As a result, toolbar buttons such as alignment, clipboard, color, and font controls now support a unified configuration model where global defaults can be set via \baseOptions\ while individual buttons retain their specific customizations.
lib/src/toolbar · high confidence
Updated macOS Flutter example to use native bridge and updated plugins
The macOS Flutter example project has been regenerated to include the \quill\_native\_bridge\_macos\ plugin alongside \file\_selector\_macos\, \url\_launcher\_macos\, and \video\_player\_avfoundation\. This change updates the \GeneratedPluginRegistrant.swift\ to register these plugins, reflecting a shift in the example's dependencies and potentially its underlying implementation details for native functionality.
example/macos/Flutter · high confidence
Updated web assets for the flutter\_quill example app
The example application's web entry point and manifest have been updated to align with current Flutter web standards. The new index.html includes proper base href handling for non-root deployment paths and updated meta tags, while the manifest.json now defines the app as a standalone PWA with specific theme colors and icon assets, ensuring the example renders correctly and behaves like a native app when added to a home screen.
example/web · high confidence
flutter\_quill\_extensions v11.0.0: Major breaking changes and SDK upgrade
The flutter\_quill\_extensions package has been separated from the main flutter\_quill package and released as version 11.0.0, introducing several breaking changes. The minimum supported SDK version is now Flutter 3.44 and Dart 3.12. The super\_clipboard plugin has been removed, and deprecated YouTube video support has been dropped. Configuration class names have been updated to use the 'Config' suffix instead of 'Configurations'. Additionally, the universal\_html dependency was replaced with web to fix WASM compilation issues, and the image save functionality was rewritten to support all platforms.
_flutter\_quill\extensions · high confidence
macOS example app project structure and configuration
The macOS example application (Runner) has been remade with a standard Flutter macOS project structure. This includes the addition of the AppDelegate and MainFlutterWindow Swift files, the MainMenu.xib interface, and the Info.plist configuration which declares usage descriptions for the photo library. The project also introduces a Configs directory containing xcconfig files for build settings and warnings, as well as entitlements files for sandboxing and network access.
example/macos/Runner · high confidence
Test coverage
Added integration test for QuillEditor input handling; Added macOS Runner test scaffold; Added test coverage for link validation, platform detection, and native provider logic; Added tests for PreserveInlineStylesRule behavior; Added tests for QuillEditor configuration, content insertion, and localization handling; Added tests for color conversion utility; Added tests for color dialog initialization and link validation behavior; Added tests for document attribute scopes, search within embeds, and style collection; Added tests for image save utilities and menu; Added unit tests for QuillController clipboard and core operations; Added widget tests for QuillEditor interactions; Initial test coverage for toolbar styling, editor focus, and context menu behavior; New flutter\_quill\_test library entry point; New test utilities for simulating QuillEditor interactions.
Dependencies
Flutter Quill 11.6.0 release with Flutter 3.44 and Dart 3.12 support
This release updates the minimum supported versions to Flutter 3.44.0 and Dart 3.12.0 across the main \flutter\_quill\ package, the \flutter\_quill\_extensions\ add-on, and the \flutter\_quill\_test\ utilities. The example application has been migrated to the new Kotlin DSL (Kotlin 2.3.20, AGP 9.0.1) and updated to use the \dev.flutter.flutter-gradle-plugin\. Additionally, the example now depends on \flutter\_quill\ version 11.0.0-dev.4 and \flutter\_quill\_extensions\ version 11.0.0-dev.3, with dependency overrides pointing to the local source paths for development.
(dependencies) · high confidence
Housekeeping
Initial repository scaffolding and documentation
The repository has been initialized with essential project files, including a comprehensive README, a CHANGELOG following the Keep a Changelog format, a Code of Conduct, and a Contributing guide. Configuration files for Dart analysis (analysis\_options.yaml) and localization (l10n.yaml) are now present, alongside a .gitignore tailored for Flutter/Dart projects and a .git-blame-ignore-revs file to streamline code review by ignoring large formatting commits. The LICENSE file has been updated to reflect the 2024 Flutter Quill project copyright.
(repo-wide) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 54 → 62 (+8.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 88 (-5.6)
- Architecture 97 → 90 (-7.0)
- Maturity 53 → 52 (-0.9)
- Readiness 49 → 58 (+8.8)
- Security 43 → 75 (+31.6)
- Domain Modelling 100 → 100 (+0.0)
Resolved (33)
- Change coupling: clear_format_button.dart ↔ color_button.dart (lib/src/toolbar/buttons/clear_format_button.dart)
- Change coupling: clear_format_button.dart ↔ indent_button.dart (lib/src/toolbar/buttons/clear_format_button.dart)
- Change coupling: color_button.dart ↔ history_button.dart (lib/src/toolbar/buttons/color/color_button.dart)
- Change coupling: color_button.dart ↔ indent_button.dart (lib/src/toolbar/buttons/color/color_button.dart)
- Change coupling: color_button.dart ↔ search_button.dart (lib/src/toolbar/buttons/color/color_button.dart)
- Change coupling: history_button.dart ↔ indent_button.dart (lib/src/toolbar/buttons/history_button.dart)
- Change coupling: history_button.dart ↔ search_button.dart (lib/src/toolbar/buttons/history_button.dart)
- Change coupling: indent_button.dart ↔ toggle_style_button.dart (lib/src/toolbar/buttons/indent_button.dart)
- Change coupling: select_header_style_buttons.dart ↔ indent_button.dart (lib/src/toolbar/buttons/hearder_style/select_header_style_buttons.dart)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Further sole-owners (lower concentration)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 13 more
New (151)
- Change coupling: editor_config.dart ↔ raw_editor_state.dart (lib/src/editor/config/editor_config.dart)
- ClassTooLong: QuillController (lib/src/controller/quill_controller.dart)
- ClassTooLong: QuillRawEditorState (lib/src/editor/raw_editor/raw_editor_state.dart)
- ClassTooLong: RenderEditableTextLine (lib/src/editor/widgets/text/text_line.dart)
- ClassTooLong: RenderEditor (lib/src/editor/editor.dart)
- ClassTooLong: _TextLineState (lib/src/editor/widgets/text/text_line.dart)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Document._autoAppendNewlineAfterEmbeddable (cyclomatic 16) (lib/src/document/document.dart)
- Document._searchLine (cognitive 25) (lib/src/document/document.dart)
- Document.collectStyle (cognitive 22) (lib/src/document/document.dart)
- Document.replace (cognitive 17) (lib/src/document/document.dart)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (flutter_quill_extensions/lib/src/toolbar/image/select_image_source.dart)
- Duplicated block (10–11 lines × 2) (lib/src/editor/config/editor_config.dart)
- Duplicated block (10–12 lines × 2) (lib/src/editor/raw_editor/keyboard_shortcuts/editor_keyboard_shortcut_actions.dart)
- Duplicated block (12 lines × 2) (lib/src/rules/delete.dart)
- Duplicated block (12 lines × 2) (lib/src/toolbar/buttons/font_family_button.dart)
- Duplicated block (12 lines × 2) (lib/src/toolbar/buttons/hearder_style/select_header_style_dropdown_button.dart)
- Duplicated block (12 lines × 3) (lib/src/rules/insert.dart)
- …and 131 more
Changes since last survey
- 9 commits — 3 feature/other, 6 fixes
By area
- (root) — 4 commits
- lib/src — 4 commits
- flutter_quill_test/lib — 1 commit
Notable commits
- fix: Code block invisible line numbers fixed, QuillEditorConfig.showCodeBlockLineNumbers added (#2733)
- fix: Fix/selection context menu out of view (#2739)
- fix: Fix: selection handle horizontal drag stays on current line (#2731)
- fix: Search bar: whole-word seach fixed for Unicode, search dialog style improved (#2729)
- fix: fix: prevent toolbar flicker when tapping a checklist checkbox (#2747)
- fix: fix: reveal caret when keyboard inset changes (#2742)
- change: Added custom callback to transform a link before it is launched (#2727)
- change: chore(release): prepare to publish 11.6.0
- change: chore(release): prepare to publish 11.6.0
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
singerdmx/flutter-quill was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e880534f8750072c879fecd72ada72d0902bc5e8 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.