Skip to content

feat: add JSON-driven onboarding flow for screen building#13

Closed
Ryanditko wants to merge 28 commits intomainfrom
feat/onboarding-screens
Closed

feat: add JSON-driven onboarding flow for screen building#13
Ryanditko wants to merge 28 commits intomainfrom
feat/onboarding-screens

Conversation

@Ryanditko
Copy link
Copy Markdown
Owner

Summary

  • Add 5-step onboarding guide teaching users how to build Flutter UIs from JSON contracts
  • Covers: welcome overview, contract structure, component types, interactive actions with "Try it" buttons, and debugging/error handling
  • All screens are 100% JSON-driven with no Dart code changes required

Screens

  1. onboarding_welcome — Entry point listing what you'll learn
  2. onboarding_structure — Explains schemaVersion, screen, context, theme
  3. onboarding_components — Layout vs leaf types with live examples
  4. onboarding_actions — Hands-on demos for navigate, snackbar, copy, dialog
  5. onboarding_debugging — Common mistakes and built-in safety features

Test plan

  • All JSON files validate with correct schema
  • Each screen loads and renders without layout errors
  • Navigation between onboarding steps works end-to-end

Ryanditko added 28 commits April 1, 2026 13:48
- Wrap buildServerTextButton with Semantics(button: true, label: ...)
- Wrap buildServerOutlinedButton with Semantics(button: true, label: ...)

Made-with: Cursor
- Wrap buildServerInkWell with Semantics(button: node.action != null)
- Wrap buildServerGestureDetector with Semantics for accessibility

Made-with: Cursor
- Wrap selectableText with Semantics(label: content)
- Wrap richText with Semantics using concatenated span text

Made-with: Cursor
- Wrap placeholder with Semantics(label: 'Placeholder')
- Wrap circleAvatar with Semantics(label: label, image: imageUrl != null)

Made-with: Cursor
- Replace snackbar placeholder with actual URL launching
- Use launchUrl with LaunchMode.externalApplication

Made-with: Cursor
- Add url_launcher ^6.3.2 to pubspec.yaml

Made-with: Cursor
- Cover parsePadding, parseAlignment, parseAxis, parseTextAlign
- Cover parseFontWeight, parseFontStyle, parseTextDecoration
- Cover parseBoxFit, parseBorderRadius, parseBoxConstraints
- Cover parseDuration, parseCurve, parseScrollPhysics

Made-with: Cursor
- Test center, align, padding, sizedBox, opacity, clipRRect
- Test safeArea, rotatedBox, ignorePointer, offstage

Made-with: Cursor
- Test textButton, outlinedButton, iconButton, FAB rendering
- Verify Semantics wrappers and label display

Made-with: Cursor
- Test listTile, expansionTile, switchListTile, checkboxListTile
- Verify toggle callbacks report correct id and value

Made-with: Cursor
- Test selectableText, richText rendering and Semantics

Made-with: Cursor
- Test slider rendering and value clamping
- Test radio widget rendering

Made-with: Cursor
- Test placeholder, circleAvatar, verticalDivider
- Verify Semantics wrappers on placeholder and avatar

Made-with: Cursor
- Test inkWell, gestureDetector, tooltip, dismissible
- Verify Semantics and action dispatch on tap

Made-with: Cursor
- Test scrollView, gridView, pageView rendering

Made-with: Cursor
- Test material, hero, indexedStack, transform, banner

Made-with: Cursor
- Test animatedContainer, animatedOpacity, animatedCrossFade
- Test animatedSwitcher and animatedSize rendering

Made-with: Cursor
- Test table with rows and dataTable with columns and rows

Made-with: Cursor
- Full listing of all 103 component types with props and children support
- Organized by category: layout, wrappers, decorators, scrollables, etc.
- Include action types reference table

Made-with: Cursor
- Add new component categories: wrappers, decorators, scrollables, animated
- Update openUrl action description to reflect url_launcher integration
- Expand accessibility section with new Semantics-wrapped components

Made-with: Cursor
- Expand component table from 22 to 103 types across 13 categories
- Add advanced_components to demo screens table
- Add link to COMPONENTS.md reference catalog

Made-with: Cursor
- Showcase layout wrappers, decorators, tiles, button variants
- Demo opacity levels, transforms, rich text, and circle avatars

Made-with: Cursor
- Add Advanced Components button between New Components and Expressions Demo

Made-with: Cursor
- Introduce the Getting Started guide entry point
- List learning topics: JSON structure, components, actions, debugging
- Navigation to onboarding_structure as next step

Made-with: Cursor
- Explain the four sections of a JSON contract: schemaVersion, screen, context, theme
- Include tip box with component node anatomy

Made-with: Cursor
- Differentiate layout vs leaf component types with examples
- Show live JSON-to-widget rendering for column and text
- Chip tags listing available component types

Made-with: Cursor
- Interactive demos for navigate, snackbar, copyToClipboard, showDialog
- Each action has a 'Try it' button for hands-on testing
- Proper expanded layout for row-based card content

Made-with: Cursor
- Document common mistakes: unknown type, missing props, invalid JSON
- Highlight built-in safety features: Error Boundary and Contract Validator
- Graduation section with link to Playground

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 6:19pm

@Ryanditko Ryanditko closed this Apr 1, 2026
@Ryanditko Ryanditko deleted the feat/onboarding-screens branch April 1, 2026 18:30
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