ComputedStateWrapper
Renders one of three builders for a ComputedState: a loading builder while the value is computing, a failure builder when it failed, and the main builder once a value is ready. It is the widget counterpart of useComputedState / useAutoComputedState - drop it into a tree to branch on a computed state without pattern-matching the sum type by hand.
ComputedIterableWrapper
A ComputedStateWrapper for a ComputedState whose value is an Iterable. It adds a fourth branch - an emptyBuilder shown when the computation succeeds but returns no items - so loading, failure, empty, and non-empty each get their own builder.
PaginatedComputedStateWrapper
Wires a MutablePaginatedComputedState to a scrollable: it calls loadMore() when the list nears its end and adds pull-to-refresh. Unlike the computed wrappers, it does not branch the UI for you - builder receives the current items and a loadingMore flag, and you render every state (first load, empty, error, list) from those.
RefreshableComputedStateWrapper
A ComputedStateWrapper wrapped in a RefreshIndicator. It takes a RefreshableComputedState and wires pull-to-refresh to its refresh(), while rendering the same loading / failure / ready builders.
RefreshableComputedIterableWrapper
A ComputedIterableWrapper wrapped in a RefreshIndicator. It takes a RefreshableComputedState whose value is an Iterable, adds pull-to-refresh, and keeps the four-way loading / failure / empty / non-empty branching.
PageControllerWrapper
Owns a PageController and keeps it in two-way sync with a MutableValue index you supply. It creates and disposes the controller, writes the index when the user swipes, and drives the controller when the index changes from elsewhere - so a PageView can be controlled by plain state instead of a hand-managed controller.
TabControllerWrapper
Owns a TabController and keeps it in two-way sync with a MutableValue index. It provides the TickerProvider, creates and disposes the controller, writes the index when the tab changes, and drives the controller when the index changes from elsewhere - the TabBar / TabBarView counterpart of PageControllerWrapper.
TextEditingControllerWrapper
Owns a TextEditingController and keeps it in two-way sync with a MutableValue. It creates and disposes the controller, writes the value as the user types, and updates the field when the value changes from elsewhere - so a TextField can be backed by plain state (a useFieldState) without managing the controller's lifecycle.
HookCoordinator
Runs a use callback as the body of a HookWidget and passes its result to a builder. It is the most general wrapper in this category: it lets you call hooks inline, anywhere in a widget tree, without declaring a dedicated HookWidget subclass.