This is the closest neighbour on the list. Flutter also describes an interface as a function of state, also rebuilds it, and also draws every pixel itself rather than using the platform's controls. If you are coming from Flutter, most of what you know transfers and the surprises are about scale, not shape.
| Flutter | keal-view |
|---|---|
Text('Hi') | label("Hi") |
ElevatedButton(onPressed: …) | button("Go", { -> … }) |
Column / Row | column([…]) / row([…]) |
Expanded / Flexible | .grows() / .shares() |
Padding(padding: …) | .padAll(…) / .pad(…) |
CustomPaint + CustomPainter | custom({ p -> … }) |
setState / ValueNotifier | state(0) and .set(…) |
Stack + Positioned | stack([…]) and .at(x, y) |
Flutter keeps an element tree beside the widget tree and reconciles them, which is where keys earn their keep. Here the tree is simply rebuilt and thrown away, and the only thing that survives is per-node state — hover, focus, scroll, caret — keyed by position in the tree. Give a node .keyed("…") and it keeps its caret when a row above it is deleted; leave it and it does not.
Flutter's rendering pipeline is large, layered and mostly opaque in practice. Here the rasteriser is canvas.keal, the fonts are font.keal, and the loop is the bottom of app.keal. When a glyph looks wrong you can open the file that drew it.
Flutter drives a ticker and repaints on a vsync. keal-view blocks until the system says something, and an idle window uses no processor at all. The price is that there is no animation beyond a blinking caret yet: implicit animations, curves and controllers have no equivalent here.