Skip to content

feat: add comprehensive Flutter widget support to server-driven UI engine#11

Merged
Ryanditko merged 15 commits intomainfrom
feat/all-flutter-components
Apr 1, 2026
Merged

feat: add comprehensive Flutter widget support to server-driven UI engine#11
Ryanditko merged 15 commits intomainfrom
feat/all-flutter-components

Conversation

@Ryanditko
Copy link
Copy Markdown
Owner

@Ryanditko Ryanditko commented Apr 1, 2026

Summary

Expands the rendering engine from 26 to 76 component types, covering virtually all commonly used Flutter widgets — all configurable via JSON contracts at runtime with no Dart changes needed per screen.

New component categories

Layout wrappers (22): center, align, padding, sizedBox, aspectRatio, fittedBox, constrainedBox, fractionalSizedBox, safeArea, intrinsicHeight, intrinsicWidth, limitedBox, overflowBox, offstage, ignorePointer, absorbPointer, clipRRect, clipOval, opacity, rotatedBox, coloredBox, baseline

Decorators (7): material, hero, indexedStack, decoratedBox, transform, backdropFilter, banner

Scrollables (6): scrollView, gridView, pageView, customScrollView, sliverList, sliverGrid

Interactives (6): inkWell, gestureDetector, tooltip, dismissible, draggable, longPressDraggable

Animated (9): animatedContainer, animatedOpacity, animatedCrossFade, animatedSwitcher, animatedAlign, animatedPadding, animatedPositioned, animatedSize, fadeTransition

Button variants (5): textButton, outlinedButton, iconButton, floatingActionButton, segmentedButton

Tiles (5): listTile, expansionTile, switchListTile, checkboxListTile, radioListTile

Text variants (3): selectableText, richText, defaultTextStyle

Input variants (3): slider, rangeSlider, radio

Tables (4): table, tableRow, tableCell, dataTable

Misc (7): placeholder, circleAvatar, verticalDivider, popupMenuButton, searchBar, linearProgressIndicator, circularProgressIndicator

Infrastructure

  • Shared parsing_utils.dart with reusable parsers for padding, alignment, colors, gradients, borders, shadows, durations, curves, scroll physics, box constraints, and text styling
  • All new input-like components integrate with the existing onInputChanged callback
  • Uses RadioGroup API for radio components (Flutter 3.41+ compatible)
  • ContractValidator updated to validate all 76 types

Test plan

  • All 111 existing tests pass
  • flutter analyze clean (zero errors/warnings)
  • Verify new components render correctly via Playground with sample JSON contracts
  • Test animated widgets respond to prop changes (duration, curve, opacity)
  • Test input variants (slider, radio, rangeSlider) fire onInputChanged callbacks
  • Test scrollable components (gridView, pageView) with multiple children
  • Test interactive wrappers (inkWell, gestureDetector, dismissible) trigger actions

Ryanditko added 15 commits April 1, 2026 11:58
- Extract common parsers for padding, alignment, colors, gradients, borders and shadows
- Add duration, curve, scroll physics, box constraints and clip behavior parsers
- Add text style parsers (fontWeight, fontStyle, textDecoration, textOverflow, textAlign)
- Include buildSingleChild/buildAllChildren helpers for consistent child rendering

Made-with: Cursor
- Add center, align, padding, sizedBox, aspectRatio, fittedBox builders
- Add constrainedBox, fractionalSizedBox, safeArea, limitedBox, overflowBox builders
- Add intrinsicHeight, intrinsicWidth, offstage, ignorePointer, absorbPointer builders
- Add clipRRect, clipOval, opacity, rotatedBox, coloredBox, baseline builders

Made-with: Cursor
- Add material, hero, indexedStack and decoratedBox builders with full prop support
- Add transform builder with rotate, scale, translate and flip modes
- Add backdropFilter builder for blur effects
- Add banner builder for overlay labels

Made-with: Cursor
- Add scrollView (SingleChildScrollView) with direction, reverse and physics support
- Add gridView with crossAxisCount, spacing and aspect ratio props
- Add pageView with snapping and scroll direction support
- Add customScrollView, sliverList and sliverGrid builders

Made-with: Cursor
- Add inkWell and gestureDetector builders with action handling
- Add tooltip builder with message, position and duration props
- Add dismissible builder with direction and background color support
- Add draggable and longPressDraggable builders

Made-with: Cursor
- Add animatedContainer, animatedOpacity, animatedCrossFade and animatedSwitcher
- Add animatedAlign, animatedPadding, animatedPositioned and animatedSize
- Add fadeTransition using TweenAnimationBuilder
- All animated builders support duration and curve props from JSON

Made-with: Cursor
- Add textButton, outlinedButton and iconButton builders with action handling
- Add floatingActionButton builder with extended and mini variants
- Add segmentedButton builder with multi-selection support

Made-with: Cursor
- Add listTile builder with leading icon/image, trailing, and action support
- Add expansionTile builder with collapsible children and theming props
- Add switchListTile, checkboxListTile and radioListTile with state management
- Use RadioGroup API for radioListTile (Flutter 3.41+ compatible)

Made-with: Cursor
- Add selectableText builder with font styling and maxLines support
- Add richText builder with styled spans (fontSize, color, decoration, spacing)
- Add defaultTextStyle builder to propagate text styling to children

Made-with: Cursor
- Add slider builder with min/max, divisions and label support
- Add rangeSlider builder with start/end values and color props
- Add radio builder using RadioGroup API (Flutter 3.41+ compatible)
- All input variants integrate with onInputChanged callback

Made-with: Cursor
- Add placeholder, circleAvatar and verticalDivider builders
- Add popupMenuButton and searchBar builders
- Add standalone linearProgressIndicator and circularProgressIndicator builders
- Add enhanced card builder with margin, shadow and surface tint props

Made-with: Cursor
- Add table builder with recursive row/cell children and border support
- Add dataTable builder with columns, rows, sorting and checkbox props
- Add tableRow and tableCell builders for composable table layout

Made-with: Cursor
- Register 22 layout wrapper builders (center, align, padding, sizedBox, etc.)
- Register 7 decorator builders (material, hero, transform, decoratedBox, etc.)
- Register 6 scrollable builders (scrollView, gridView, pageView, slivers)
- Register 6 interactive builders (inkWell, gestureDetector, tooltip, dismissible, etc.)
- Register 9 animated builders (animatedContainer, animatedOpacity, etc.)
- Register 5 button variants (textButton, outlinedButton, iconButton, fab, segmented)
- Register 7 input variants with onInputChanged wrappers (slider, radio, tile variants)
- Register remaining leaf types (selectableText, richText, circleAvatar, dataTable, etc.)

Made-with: Cursor
- Add 33 new layout types (wrappers, decorators, scrollables, animated, interactives)
- Add 17 new leaf types (button variants, text variants, input variants, display widgets)
- Organize types by category with inline comments for readability

Made-with: Cursor
- Add exports for 12 new widget files (layout wrappers, decorators, scrollables, etc.)
- Maintain alphabetical ordering of exports

Made-with: Cursor
@Ryanditko Ryanditko added the enhancement New feature or request label Apr 1, 2026
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flutter-backend-driven-ui Ready Ready Preview, Comment Apr 1, 2026 3:06pm

@Ryanditko Ryanditko merged commit d071ce6 into main Apr 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant