pseudo_ui 0.2.3
pseudo_ui: ^0.2.3 copied to clipboard
Server-Driven UI rendering engine for Flutter. Define UI with JSON Schema + View JSON, render natively with Material 3 widgets. 45+ components, expression engine, conditional visibility, LOV cascading [...]
0.2.3 #
-
New: JSON-driven theme palette as public API. Consumers can now load a brand theme from a JSON document (Material Design Tokens / W3C Design Tokens style) without writing any Dart code:
final raw = await rootBundle.loadString('assets/themes/acme.json'); final palette = JsonPalette.fromJson(json.decode(raw)); MaterialApp( theme: buildPseudoThemeData(palette: palette), home: PseudoView(...), );New public types:
PseudoColorPalette— abstract palette contract (20 Material 3 ColorScheme roles + success / warning / info status slots).JsonPalette—PseudoColorPalettefactory that reads a JSON map and exposes the brand colors as DartColors. Missing fields fall back to the M3 baseline.DefaultMaterialPalette— built-in M3 baseline, used as the fallback forJsonPaletteand as a sample to extend from.buildPseudoThemeData(palette: ...)— Material 3ThemeDatabuilder that seeds aColorSchemefrom the palette and attachesPseudoUiThemeExtfor status colors.
-
Spacerdispatch case added toDynamicRenderer. Supports both rigid mode (setwidthand/orheightto render aSizedBox) and flex mode (setflexto expand inside aRow/Column). Previously rendered as an "unsupported" placeholder. -
Internal docs / inline references cleaned up so the package surface carries no internal project names. Publisher identifiers (
@burgan-tech/pseudo-uinpm scope, repository URL, MIT copyright) are preserved as legitimate "who shipped this" signals. -
No breaking changes for existing consumers.
0.2.2 #
- Widen
intlconstraint from^0.19.0to>=0.19.0 <0.21.0so consumers running on Flutter 3.27+ (which pinsintl: 0.20.xviaflutter_localizations) can adopt the package withoutdependency_overridesgymnastics.
0.2.1 #
PseudoViewnow supportsdelegate: nullfor flat views with no actions, LOVs, or nested components. The engine falls back to a built-inNoOpPseudoViewDelegate.instanceso consumers no longer need a stub delegate just to render JSON.NoOpPseudoViewDelegateexported from the public barrel for direct use.loadComponentstill throwsUnsupportedErrorwhen nested refs are encountered, surfacing the gap rather than rendering an incomplete tree.
0.2.0 #
- Add
PseudoComponentRegistry— pluggable extension point for third-party component sets. The renderer's default branch now delegates to the registry, so any design system can register builders without touchingDynamicRenderer. - Add
PseudoUiThemeExt—ThemeExtension<PseudoUiThemeExt>for semantic success / warning / info colors. Falls back to Material 3 defaults when not provided by the host. - Theme awareness across the renderer:
TextField/Dropdown/Cardetc. respect host-providedInputDecorationThemeandColorScheme. DynamicRenderernow exported from the public barrel so external builders can render nested children.- Internal: design-system adapters extracted into a sibling package
(not published to pub.dev — consumers register their own components
via
PseudoComponentRegistry).
0.1.3 #
- CI: use official dart-lang OIDC workflow for automated pub.dev publishing
- Package size optimized (13MB → 31KB) via .pubignore
0.1.2 #
- README: Initial data, Lookups, Data Model, Vocabularies sections added
- Code cleanup: silent catch fixed, empty action handlers wired, lint warnings resolved
- 101 unit and widget tests (up from 15)
- LOV reload optimization: skip unchanged params, skip static LOVs on field changes
- GitHub Actions CI + pub.dev automated publishing
0.1.1 #
- 45+ Material Design 3 component implementations
- Expression engine:
$form,$instance,$param,$ui,$lov,$lookup,$schema,$item,$context - Conditional engine:
showIf/hideIf/enableIf/disableIfwith 13 operators and compound rules - Validation: JSON Schema validation (pattern, format, minLength, min/max) plus async custom validation
- LOV & Lookup: cascade filtering, smart reload (skip unchanged params)
- Overlay surfaces: Dialog, BottomSheet, SideSheet, NavigationDrawer driven by
$uistate - Nested components with isolated contexts and two-way data flow
- 101 unit and widget tests
0.1.0 #
- Initial release with core engine and basic Flutter adapter