FluentDocument class
Properties
allStyleHooks
→ List <RenderStyleHook >
All rendering style hooks active on this document, combining document-level
styleHooks and registered plugin hooks (including suggestion rendering
provided by FluentSuggestionPlugin via its styleHook override).
no setter
authorName
↔ String
getter/setter pair
cachedCursorContainerId
→ String ?
O(1) when pre-computed, falls back to O(1) cache-miss otherwise.
no setter
cachedSelection
↔ dynamic
getter/setter pair
cachedSelectionKey
↔ String ?
Cached resolved selection keyed by cursor state. Populated by
resolveSelectionFromCursor in handler_helpers.dart so multiple
widgets (toolbar, font selector, font size selector) reuse the
same ResolvedSelection instead of re-resolving O(n) each time.
getter/setter pair
canRedo
→ bool
Checks if redo is possible
no setter
canUndo
→ bool
Checks if undo is possible
no setter
caretStops
→ List <CaretStop >
no setter
clipboardPayload
↔ String ?
Internal clipboard payload (JSON serialized) with preserved formatting.
getter/setter pair
Optional comment plugin. When set, the editor will display
comment highlights, a sidebar, and allow adding / managing comments.
getter/setter pair
containerOrder
→ List <String >
no setter
content
→ Root
no setter
contentVersion
→ int
no setter
cursor
→ Cursor
no setter
cursorOnlyChange
→ bool
True while listeners are being notified for a cursor-only change.
Widgets that do expensive work on every document change can check this
flag and skip irrelevant updates (e.g. toolbar style scan, full tree
rebuild) when the document text / structure did not change.
no setter
dialogPresenter
→ DialogPresenter
no setter
documentLanguage
↔ String
Document-level language (BCP-47 code). Defaults to the language
selected in DocumentLanguageController or the system locale.
getter/setter pair
editorFocusNode
→ FocusNode
FocusNode for the editing area. The toolbar can request focus
after an interaction (e.g., font selection) by calling requestEditorFocus .
final
eventHandler
→ EventHandler
no setter
hashCode
→ int
The hash code for this object.
no setter inherited
hasListeners
→ bool
Whether any listeners are currently registered.
no setter inherited
imeHandler
→ FluentTextInputHandler
final
isFullDocumentDirty
→ bool
Returns true if all nodes are considered dirty (e.g. full document refresh).
no setter
isResizingImage
↔ bool
True when an image resize handle is being dragged.
Used to prevent text selection from interfering with image resize.
getter/setter pair
isResizingTable
↔ bool
True when a table column/row/table resize handle is being dragged.
Used to prevent text selection from interfering with table resize.
getter/setter pair
labels
↔ FluentEditorLabels ?
Localization labels for the user interface.
getter/setter pair
logicalLines
→ List <LogicalLine >
no setter
paragraphRegistry
→ ParagraphRegistry
no setter
pendingColor
↔ String ?
Active text color for collapsed cursor. Null = auto.
getter/setter pair
pendingFontFamily
↔ String
Active font family for collapsed cursor (persistent like Word).
When the user types, new text inherits this font.
getter/setter pair
pendingFontSize
↔ double
Active font size for collapsed cursor.
getter/setter pair
pendingHighlightColor
↔ String ?
Active highlight color for collapsed cursor. Null = none.
getter/setter pair
pendingIndent
↔ int
Active indentation for collapsed cursor.
Used when creating a new paragraph.
getter/setter pair
pendingLineHeight
↔ double
Active line height for collapsed cursor.
getter/setter pair
pendingSpacingAfter
↔ double
Spacing after paragraph in points.
getter/setter pair
pendingSpacingBefore
↔ double
Spacing before paragraph in points.
getter/setter pair
pendingStyle
↔ ParagraphStyle
Active style for collapsed cursor.
Used when creating a new paragraph.
getter/setter pair
pendingStyles
↔ List <String >
Active inline styles for collapsed cursor (bold, italic, underline).
getter/setter pair
pendingTextAlign
↔ String
Active text alignment for collapsed cursor (left, center, right).
Used when creating a new paragraph.
getter/setter pair
registry
→ FluentPluginRegistry
no setter
runtimeType
→ Type
A representation of the runtime type of the object.
no setter inherited
selectionManager
→ SelectionManager
no setter
stopsByContainer
→ Map <String , List <CaretStop > >
no setter
styleHooks
→ List <RenderStyleHook >
Active document-level rendering style hooks.
no setter
suggestionProvider
↔ SuggestionProvider ?
Optional suggestion plugin / tracked changes provider.
getter/setter pair
suggestionStyleHook
↔ SuggestionStyleHook
Hook configuration for suggestion addition and deletion styles.
getter/setter pair
undoRedoManager
→ UndoRedoManager
no setter
Methods
addListener (VoidCallback listener )
→ void
Register a closure to be called when the object changes.
inherited
addStyleHook (RenderStyleHook hook )
→ void
Registers a rendering styleHook on this document.
clearUndoRedo ()
→ void
Clears undo/redo stacks
cursorOnlyUpdate ()
→ void
Notifies listeners for a cursor/selection-only change that does NOT
mutate the document structure or text. Crucially it does NOT invalidate
the content-derived caches (node index, caret-stop rail), so repeated
arrow navigation reuses them instead of rebuilding O(n) on every press.
dispose ()
→ void
Discards any resources used by the object.
inherited
findLogicalContainerCached (String fragmentId )
→ InlineContainerNode ?
Returns the inline container node for fragmentId using the cached
container-id + node index. O(1) on cache hit, O(n) on first lookup.
Handlers should prefer this over findLogicalContainer(root, fragmentId).
findLogicalContainerId (String fragmentId )
→ String ?
Returns the id of the inline container that directly contains
the fragment (Paragraph inside a ListItem/Cell, or standalone Paragraph).
findParentCached (String childId )
→ String ?
O(1) lookup of the parent id of childId.
Returns null if childId is the root or not found.
flattenContainer (FNode container )
→ List <(Fragment , int , int ) >
Returns the flattened fragment list for container with global
offsets, using the document cache when available.
forceNewAction ({String description = 'New action' })
→ void
Forces creation of a new action (not grouped)
getGlobalOffsetInParagraph (String paragraphId , String fragmentId , int localOffset )
→ int ?
Calculates the global offset within paragraphId for a local
(fragmentId, localOffset) pair. Returns null if the fragment is not found.
getKeyForNode (String nodeId )
→ GlobalKey <State <StatefulWidget > >
getSelectionRangeForNode (String nodeId )
→ ({String endFrag , int endOff , String startFrag , int startOff } )?
invalidateNodeIndex ()
→ void
Marks the id→node index as stale so it gets rebuilt on next lookup.
isNodeDirty (String nodeId )
→ bool
Returns true if nodeId was marked dirty by the last
notifyDocumentChanged or updateContent call. If no specific dirty nodes were set,
returns true for all IDs (backward-compatible behaviour).
isNodeSelected (String nodeId )
→ bool
load (List <FNode > data )
→ void
loadContent (Root newContent )
→ void
Loads new content into the document, resetting cursor and selection.
manageEvent (KeyEvent event )
→ bool
nodeById (String id )
→ FNode ?
Returns the node with the given id in O(1) using a cached index.
The index is rebuilt lazily (single tree walk) only when the document
has changed since the last lookup.
noSuchMethod (Invocation invocation )
→ dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyDocumentChanged ({Set <String > ? affectedIds })
→ void
Notifies document listeners that the content changed.
Use this after undo/redo where updateContent must NOT be called
(it would create a new undo record).
notifyListeners ()
→ void
Call all the registered listeners.
inherited
notifyTextMutation (String paragraphId , int fromOffset , int delta )
→ void
Notifies the comment provider and registered plugins that text in paragraphId was mutated.
redo ()
→ bool
Executes redo of the last undone action
removeListener (VoidCallback listener )
→ void
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
removeStyleHook (RenderStyleHook hook )
→ void
Unregisters a rendering styleHook from this document.
replaceRegistry (FluentPluginRegistry registry )
→ void
Replaces the plugin registry with registry.
requestEditorFocus ()
→ void
requestMobileKeyboardFocus (BuildContext context )
→ void
Opens the virtual keyboard via the IME handler.
resolveCaretX (CaretStop stop )
→ double
Caret coordinate resolver for vertical navigation.
resolveCaretY (CaretStop stop )
→ double
saveState ({String description = 'Document change' , bool forceNewAction = false })
→ void
Begins capturing the old document state for a delta-based undo.
The delta is committed automatically by updateContent after the
mutation, producing a minimal undo record that stores only the
changed top-level nodes (50-100x smaller than a full snapshot).
syncPendingFontWithCursor ()
→ void
toJson ()
→ String
topLevelIndexOf (String fragmentOrNodeId )
→ int
O(1) lookup of the top-level index for a node id, or -1 if not found.
Uses findLogicalContainerId to resolve fragments to their container.
toString ()
→ String
A string representation of this object.
inherited
undo ()
→ bool
Executes undo of the last action
updateContent ({Set <String > ? affectedIds , String ? targetNodeId })
→ void
updateParentCache (String childId , String ? parentId )
→ void
Manually update the parent cache for a newly inserted node/fragment.