armature_flutter 0.3.0
armature_flutter: ^0.3.0 copied to clipboard
Flutter integration for armature: ArmatureApp bootstrap, slot widgets, reactive providers, and a debug overlay.
0.3.0 #
Fixed #
- Per-container renderer — the pre-0.3.0
rendererContextglobal singleton has been replaced by a per-AppContainerrenderer slot, accessed via the newContainerRendererextension (container.renderer). TwoArmatureApps living sibling-by-sibling or mounting / unmounting in rapid succession each carry their own renderer — the previous race where an outgoing widget's async dispose nulled out the incoming widget's renderer is gone.
BREAKING (internal) #
rendererContextglobal removed.ArmatureApp.initStateandbootstrap()now callcontainer.setRenderer(...)instead of assigning the global. Custom renderers and slot implementations read viacontainer.renderer.initTestRendererintest_utils.dartnow takes anAppContainer:initTestRenderer(container).pumpFeatureinstalls aFlutterRendererlazily on each container, so most widget tests don't need to callinitTestRendererdirectly anymore.useSingleSlot/useMultiSlotextensions record the binding into the feature's config (via the new internalFeature.recordPortBindinghelper) instead of callingport.addHandler. User-facing API is unchanged.- Slot widget builders use
container.renderer.renderSlot(...)instead ofrendererContext.renderer.renderSlot(...). Thecontaineris available at every existing call site — no extra plumbing needed.
Depends on #
armature: ^0.3.0— see that package's CHANGELOG for the full config/runtime split.
0.2.0 #
Note: This release has breaking changes.
- BREAKING FEAT(website): add interactive docs and examples site. (f30d28c1)
0.1.0 #
- Initial release — Flutter integration for
armature:ArmatureApp— top-level widget that bootstraps the container and installs providers.bootstrap(...)remains as the manual alternative for custom lifecycles.FeatureRoot/createFeatureRoot— mounts a feature as a top-level root widget via its descriptor (widget:+ optionalloader:).- Slot widgets:
SingleSlot,MultiSlot,SingleSwitchSlot,MultiSwitchSlot. Registration via the typedfeature.useSingleSlot(...)/useMultiSlot(...)extensions — handlers returnWidget?and the framework wraps them into descriptors. - Port providers:
PipeProvider,BehaviorProvider,SingleSlotProvider,MultiSlotProvider,MultiPortBuilder/PortReaderfor multi-port reactive reads. - Store widgets:
context.store<T>()— one-shot imperative store lookup.StoreBuilder<T>— reactive DI + rebuild on any tracked state change.StoreSelector<V>— equality-based rebuild on derived values, for multi-store projections and fine-grained optimisation.StateObserver— raw reactive wrapper for custom builders.
- Renderer: pluggable
Rendererinterface withFlutterRendereras the default;FlutterRendererOptions.errorBuilder/loaderBuilderfor customising slot error / loading states. - Debug overlay:
FeatureGraphOverlay— interactive feature-graph canvas with pan / zoom / drag, node detail panel, live store inspector, minimap, refresh button, gesture hint. - Test utilities (
package:armature_flutter/test_utils.dart):initTestRenderer,wrapForTesting,pumpFeature.