A delightful Flutter experience rating screen with expressive animations, smooth color transitions, and an interactive slider. Built to be easy to drop into any app.
- Smooth, physics-inspired slider with snap-to-states
- Expressive animated face driven by a single percentage value
- Color interpolation across Bad → Not Bad → Good
- Clean architecture with small, testable widgets
- Responsive layout via
flutter_screenutil(iPhone 14/15 base design) - Centralized constants for spacing, durations, and strings
- Drag the handle to change the mood
- Tap “Add notes” to write a note, “Submit” to see a thank-you screen
- Prerequisites
- Flutter 3.16+ recommended
- Install
git clone <your-repo-url>
cd sparkjoy
flutter pub get- Run
flutter run- Copy the
lib/folder or specific widgets/screens you need - Ensure
flutter_screenutilis in yourpubspec.yaml - Set your design size in
main.dartusingScreenUtilInit - Customize constants in
lib/utils/constants.dart
Key files:
lib/screens/rate_experience_screen.dart: Main screenlib/widgets/experience_slider.dart: Custom slider with snappinglib/widgets/animated_face.dart: Face with eyes/mouth animationlib/widgets/animated_text_display.dart: Headline word transitionslib/widgets/action_buttons.dart: Bottom actionslib/widgets/note_input_view.dart: Notes input arealib/widgets/submit_button.dart: Shared Submit buttonlib/models/experience.dart: Enum with colors, labels, and helperslib/utils/constants.dart: Spacing, durations, strings
- Design base: iPhone 14/15 logical size
Size(393, 852)inmain.dart - Adjust spacing, radii, durations, and strings in
constants.dart - Colors live in
Experienceenum; interpolation viaExperience.colorsFor(percentage)
PRs and issues welcome! Please keep code readable and follow existing styles.
This project is licensed under the MIT License – see LICENSE.
Copyright (c) 2025 Ionic Errrrs Code
