crdt_lf_flutter 0.5.0+1 copy "crdt_lf_flutter: ^0.5.0+1" to clipboard
crdt_lf_flutter: ^0.5.0+1 copied to clipboard

Flutter reactivity for crdt_lf — rebuild widgets when CRDT state changes, with selectors, a provider and a collaborative text field. Wraps provider, like flutter_bloc.

0.5.0+1 #

Date: 2026-08-28

compare to previous release

Fixed #

  • chore: fixed changelog

0.5.0 #

Date: 2026-08-28

compare to previous release

Added #

  • Reactivity on a handler's deltas: CrdtHandlerDeltaBuilder holds the handler's value and rebuilds with it already moved by each change, while CrdtHandlerDeltaListener hands each change to a callback and never rebuilds its subtree. Both cost the size of the edit instead of a read of the whole value. 132
  • debugVerifyCrdtTextFieldProjection turns off the debug-only whole-value check CrdtTextFieldBuilder runs on its derived text.

Changed #

  • Requires crdt_lf 4.1.0, for the handler delta streams.
  • CrdtHandlerDeltaListener takes an origin: tag your own writes with it and its onDelta skips them, so a projection you move by hand is not moved twice.

Fixed #

  • CrdtTextFieldBuilder no longer drops a remote change published in the window between a keystroke and its delivery.
  • CrdtTextFieldBuilder keeps a pending IME composition across a remote change.
  • CrdtTextFieldBuilder and CrdtTextCursorsOverlay follow their id when it changes, instead of staying bound to the handler they started with.

0.4.0 #

Date: 2026-08-16

compare to previous release

Changed #

  • Requires crdt_lf 4.0.0, where text is indexed by code point rather than by code unit. 106

Fixed #

  • CrdtTextCursorsOverlay: a remote cursor anchored past an emoji (or any non-BMP character) now paints at the right position instead of drifting by one code unit per preceding astral character. 106

0.3.0 #

Date: 2026-08-01

compare to previous release

Added #

  • CrdtTextCursorsOverlay carets now moves to their new position instead of jumping there. 102

0.2.1 #

Date: 2026-07-21

compare to previous release

Fixed #

  • CrdtTextFieldBuilder: an edit made next to an identical character no longer slides to the wrong side of that character. The text delta is now anchored to the post-edit caret.

0.2.0+1 #

Date: 2026-07-19

  • Documentation release: refreshes the CHANGELOG and docs published on pub.dev. No functional changes since 0.2.0.

0.2.0 #

Date: 2026-07-18

compare to previous release

Added #

  • Split the presence overlay into three composable, all-exported pieces for maximum flexibility:
    • CrdtAwarenessCursorsBuilder — the transport/layout half of the overlay (positioning + local-pointer handling) with a per-cursor builder, so you can draw a completely custom marker (an avatar, a badge, …) per cursor.
    • CrdtAwarenessCursorMarker — the standalone default marker (pointer arrow
      • name bubble) for a single cursor, positioning-agnostic.
    • CrdtAwarenessCursorsOverlay — the ready-made combination of the two.
  • CrdtAwarenessCursorStyle to style a marker: a plain color for the common case, or a full style (color + label text style + marker sizes) when you need more. Set it per cursor via CrdtAwarenessCursor.style or for the whole overlay via CrdtAwarenessCursorsOverlay.style (each peer keeps its own identity color).

0.1.0 #

Date: 2026-07-17

Added #

  • Initial release of crdt_lf_flutter (94), a Flutter reactivity layer for crdt_lf built on top of provider (minimal re-exported):
    • CrdtProvider — dependency injection of a CRDTDocument, created and owned by the provider or caller-owned;
    • CrdtBuilderbuilder: (context, document), rebuilds on every document update.
    • CrdtSelector<R>selector: (context, document) => R, rebuilds only when the selected value changes.
    • CrdtHandlerBuilder<H>id + builder: (context, handler), rebuilds only when that handler changes (an applied change, a snapshot import, or — with nested: true — a descendant handler). Hands you the concrete typed handler to read its value.
    • CrdtHandlerSelector<H, R>id + selector: (context, handler) => R, rebuilds only when the selected value changes.
    • CrdtHandlerListener<H> — fires a side-effect callback on a handler change (BlocListener analogue).
    • CrdtTextFieldBuilder — binds a TextEditingController to the text handler registered under id.
    • CrdtTextCursorsOverlay + CrdtTextCursor — paints collaborators' carets, selection highlights and name tags over the text field.
    • CrdtAwarenessCursorsOverlay + CrdtAwarenessCursor — overlays collaborators' mouse-style presence cursors (pointer arrow + name bubble) on any pane, and reports the local pointer for publishing.
    • Context helpers: context.crdtDocument, context.watchCrdtDocument(), context.selectCrdtDocument(...), and context.crdtHandler<H>(id) for imperative access.
0
likes
160
points
175
downloads

Documentation

API reference

Publisher

verified publishermattiapispisa.it

Weekly Downloads

Flutter reactivity for crdt_lf — rebuild widgets when CRDT state changes, with selectors, a provider and a collaborative text field. Wraps provider, like flutter_bloc.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#crdt #local-first #flutter #reactive

License

MIT (license)

Dependencies

crdt_lf, flutter, provider

More

Packages that depend on crdt_lf_flutter