feat(password-engine): service abstraction, animated generator UI#40
Merged
dhruvanbhalara merged 7 commits intoMar 24, 2026
Merged
Conversation
….dev - Switch password_engine from git path to pub.dev (^1.0.0) - Add flutter_animate and animations for UI motion primitives
- Add AppColors.white, AppColors.black, AppColors.transparent tokens - Replace all Colors.black/white/transparent refs across amoled, dark, light presets - Update AppTheme to use token-based colors for input borders, app bar, cards, switches - Update AppIconBadge and AppListOption doc examples to use semantic tokens
… strategy screens - Add AppFeatureShell: shared scrollable layout with optional FAB overlay - Migrate GeneratorScreen to use AppFeatureShell (convert to StatefulWidget for refresh animation) - Migrate StrategyScreen, StrategyEditorScreen, StrategyEditor to use AppFeatureShell - Add animated FAB with rotating refresh icon using flutter_animate
- Move helper action methods from settings_screen.dart to settings_screen_helpers.dart - Reduce settings_screen.dart complexity
…ntrol widgets - Add PasswordFeedbackView: displays warning and suggestions from PasswordFeedback - Extract PasswordGenerationControlsCard to own file with word count + separator support - Extract LengthStepperButton + GeneratorToggleTile to generator_control_widgets.dart - Add PageTransitionSwitcher + SharedAxisTransition for animated password display - Add fade/slide/shimmer animations on password text change - Update StrategyPreviewCard for new PasswordFeedback entity shape
…d UI refactor - Add generator_control_widgets_test, settings_screen_helpers_test - Add import_export_bloc_actions_and_props_test (split from import_export_bloc_test) - Update generator_bloc_test, generator_screen_test for new PasswordFeedback shape - Update add_edit_password_bloc_test, strategy_preview_bloc_test - Update settings_screen_test, strategy_editor_test, main_shell_test - Remove hardcoded UI literals from filter chips test
709f6fb to
34d2246
Compare
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.
Overview
Introduces a
PasswordEngineServiceabstraction layer, migratespassword_engineto pub.dev, refactors the generator UI with animations and a shared layout shell, and cleans up theme tokens throughout.Changes
Dependencies
password_enginefrom a git path to the official pub.dev packageflutter_animateandanimationsfor UI motion primitivesDesign System
AppFeatureShell— shared scrollable-layout component with optional FAB overlay; eliminates duplicatedScaffold/CustomScrollView/PageHeaderboilerplate across generator, strategy, and settings screensAppColors.white,AppColors.black,AppColors.transparenttokens; replace all directColors.black,Colors.white,Colors.transparentreferences across all theme presets (amoled,dark,light) andAppThemePassword Engine — Domain & Service Layer
PasswordEngineServiceabstract interfacePasswordEngineServiceImpl— wraps the pub.dev package; registered via DIPasswordFeedbackentity withstrength,score,entropy,warning, andsuggestionsfieldsEstimatePasswordStrengthUsecaseandGeneratePasswordUsecaseto depend onPasswordEngineServiceinstead of the package directlyGenerator Feature
GeneratorScreentoStatefulWidget; track refresh tick for animated FAB iconflutter_animatePageTransitionSwitcher+SharedAxisTransition(vertical) + fade/slide/shimmer on password text changePasswordFeedbackView— displays warning and up to 3 suggestions fromPasswordFeedbackPasswordGenerationControlsCard— extracted to its own file, now handles both random and memorable strategies (word count + separator controls)LengthStepperButton+GeneratorToggleTileextracted togenerator_control_widgets.dartGeneratorBlocevents:GeneratorWordCountChanged,GeneratorSeparatorChangedSettings Feature
strategy_screen,strategy_editor_screen, andstrategy_editormigrated to useAppFeatureShellsettings_screen_helpers.dart— extracts helper action methods out ofsettings_screen.dartStrategyPreviewCardupdated to reflect newPasswordFeedbackentity shapeStrategyPreviewBloc/StrategyPreviewStateupdated to usePasswordFeedbackAdd/Edit Password
AddEditPasswordErrorCodesclassAddEditPasswordBlocandAddEditPasswordStateupdated for new service layer contractsLocalisation
wordCountLabel,separatorLabel,separatorNone,memorableStrategy,randomStrategy,randomStrategyTitle,randomStrategySubtitle,memorableStrategyTitle,memorableStrategySubtitle,strategyTypeSubtitleTests
generator_control_widgets_test.dartpassword_engine_service_impl_test.dartsettings_screen_helpers_test.dartimport_export_bloc_actions_and_props_test.dart(split fromimport_export_bloc_test.dart)add_edit_password_error_codes_test.dartgenerator_bloc_test,generator_screen_test,estimate_password_strength_usecase_test,generate_password_usecase_test,add_edit_password_bloc_test,strategy_preview_bloc_test,settings_screen_test,strategy_editor_testStats
36 files changed · +1834 insertions · -737 deletions📊 Code Coverage Report
Generated by PassVault CI