RgaText class

A convergent collaborative text CRDT for editors, built on RgaList.

var doc = RgaText(replicaId: 'device-a').insert(0, 'hello');
doc = doc.insert(5, ' world');
doc = doc.delete(0, 1).insert(0, 'H');   // 'Hello world'

// Another device edits concurrently, then both merge to the same string:
final merged = doc.merge(otherDeviceDoc);
Implemented types

Constructors

RgaText({required String replicaId})
Creates an empty document owned by replicaId.
RgaText.fromMap(Map<String, dynamic> map, {String? replicaId})
Deserializes a document; pass this device's replicaId for local edits.
factory

Properties

hashCode → int
The hash code for this object.
no setterinherited
length → int
The text length.
no setter
props → List<Object?>
The list of properties that will be used to determine whether two instances are equal.
no setter
replicaId → String
This replica's identity.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
stringify → bool?
If set to true, the toString method will be overridden to output this instance's props.
no setterinherited
tombstoneCount → int
Deletes count characters starting at index. Number of tombstoned characters retained for ordering (see compact).
no setter
value → String
The current text.
no setteroverride

Methods

characterIdAt(int index) → String
A stable id for the character at index (anchor for remote cursors).
compact() → RgaText
Returns a copy with every tombstone purged — see RgaList.compacted for the coordination contract (compact only at a sync barrier). Character ids, and therefore cursor anchors, are preserved.
delete(int index, int count) → RgaText
indexOfCharacter(String id) → int
The current index of the character with id, or -1 if deleted.
insert(int index, String text) → RgaText
Inserts text at character index as one contiguous, non-interleavable run.
merge(covariant RgaText other) → RgaText
Merges this CRDT with another of the same type.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toMap() → Map<String, dynamic>
Converts the CRDT state to a map for serialization.
override
toString() → String
A string representation of this object.

Operators

operator ==(Object other) → bool
The equality operator.
inherited