Repository navigation
Current Validation & Revamp Example App - #20
Merged
Merged
Conversation
…xport current validation
…pport localization without coupling ui to view models
…e docs and examples.
… text widgets without losing native support
jshep23
added a commit
that referenced
this pull request
Apr 28, 2026
* Support ViewModel Reassignment on CurrentWidget Rebuilds (#17) * Added option to allow reassigning an existing view model to an new instance of a widget * Assign the ViewModel to the hash of the state instead of the CurrentWidget * Fix assignedTo check in ViewModel * Update the already assigned exception to explain steps the user can take to support reassignment of view models * Grammar... * Grammar... * Format exception message * Add documentation to CurrentState * Allow setting CurrentProperty by directly setting the value * Enhance State Change Handling (#18) * Changed StateChanged Stream to a single Event broadcaster Added listenable support to busy status changes * Updated example app to use new state changes * Expand ErrorEvent handling options. Allow specific subscribing, and handling internal errors * Add error handling example to example application * Added isDirty property. Added factory shorthands for current specific primary property types * Export CurrentClonable * Update example view model to use new shorthand factory * Added calculated isDirty getter to CurrentViewModel * Add tests for isDirty prop * Add docs to new BusyStatusChanged event * Current Text Controller (#19) * Implemented controller. Fixed vm reset not clearing busy status. * Added CurrentTextController to Example project * Fix type check on date time controller * Fix default value, and hash equality assignments and checks * Updated text field carrot snapback to select text when backspacing on a non-null field * Fix date time asString when cant be parsed. added tests for other supported types * Fix issue when resetting view model or using setMultiple manually. add test * Update example. Added missing test. * Clean up * Make example page scrollable * Add seperate custom and any state change listener * Add seperate custom and any error event listeners * Fix issue where lists and maps marked as dirty on initial set. * Fixed an issue where calling resetAll on the view model behaved differently for lists and maps * Report prop name and hash on list/map change. report inserted item instead of whole list. added tests * Optionally allow external / parent widget to handle viewmodel lifecycle. * Fix issue where setMultiple always issued notifications, even if nothing actually changed. * Update value equality implementation. This fixes issues with map keys, and odd comparison results. Updated stale test descriptions. * deprecated math functions on int property (generics were odd since you can't impl num) * added tests for the new int property functions. * added tests to cover null scenarios in double property math functions * Current Validation & Revamp Example App (#20) * Clean up statle documentation * added current validation state. added additive extension (nonbreaking). * add docs to new current validation classes. fix docs in view model. export current validation * add some docs around the _omitted internal variable. added unit tests * progress on integrating current validation with new current text controller. * Add option to localize default validation errors * Add additional docs to the current text controller * update core web files for example app * Progress on new space themed example app. added logos. removed old example page * added flight forms page. redfactored app view model * added launch missing, map and telemetry examples * added widget tests * add third version branding * Move viewmodels out of widget pages * clean up * clean up * clean up * add code examples to example app. add link to third version website * Restructure validation results to produce typed issues. This is to support localization without coupling ui to view models * Update Readmes * Change current validation to explicit opt in. Reduces footguns. Update docs and examples. * clean up example propery initialization * Clean up validation registration. better support context based localization * Remove unused mixin. Remove tests * Tie validation execution to TextFormFields. Added convenience Current text widgets without losing native support * Added tests for text form field integration * Update readme * add convenience setter functions for various properties * Rename factories on CurrentTextController for consistency * 3.0.0 Beta 1 (#21) * bump version, generate docs * Add changelog entry * Improve DX When Binding CurrentTextControllers (#23) * Add type specific controllers to tighten api around binding * update documentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a major refactor and redesign of the example Flutter app's structure and UI, focusing on a new "Mission Control" shell and theming system. It replaces the previous counter demo logic with a multi-section, themed dashboard, and adds new navigation, theming, and UI component abstractions. The iOS build configuration is also updated to support CocoaPods and modern Flutter workflows.
Key changes include:
UI Architecture and Navigation
MissionControlShellwidget as the main app shell, supporting multiple sections (overview, telemetry, forms, star map, events, code examples) with responsive layouts for wide and compact screens. This includes custom navigation components for both desktop and mobile. [1] [2]MissionSectionenum to define and manage the different sections of the dashboard.Theming and Shared Components
SpaceBackdrop,MissionPanel,CurrentBrandMark,MissionFooterAttribution, andStatusPillwidgets to provide a consistent, branded look and feel across the app.Add Validation Integration Support
CurrentValidationStateconcept. This allows for robust, and tightly integrated data validation, including core support for CurrentTextController.