A modern, interactive quiz application built with Flutter, designed to demonstrate Object-Oriented Programming (OOP) principles and best practices in mobile app development.
This Flutter application was developed as a comprehensive teaching tool during a Flutter formation program where I served as the mentor and instructor. I created and designed this app to demonstrate the implementation and efficiency of Object-Oriented Programming principles in organizing a Flutter project, providing my students with a practical, real-world example of professional mobile development practices.
- Demonstrate clean code architecture using OOP principles
- Show efficient project organization and structure
- Implement interactive UI/UX patterns
- Practice state management in Flutter
- Multiple Quiz Categories: Tech, Sports, Math, and more
- Offline Mode: Complete functionality without internet connection
- Interactive UI: Smooth animations and transitions with purple-themed design
- Real-time Feedback: Instant answer validation with visual feedback
- Score Tracking: Track correct and incorrect answers with visual indicators
- Question Progress: Clear progress indication (1/10 format)
- Results Summary: Comprehensive results page with congratulations and performance metrics
- Responsive Design: Optimized for different screen sizes
- Clean Architecture: Domain-driven design with clear separation of concerns
This project demonstrates a Domain-Driven Design (DDD) approach with clean architecture principles and solid OOP implementation:
- Entities: Core business objects (
question.dart,quizz.dart,quizz_card.dart) - Data: Static data sources for offline functionality (
quizzCards.dart,quizzes.dart)
- Screens: Main UI screens with navigation logic
- Widgets: Reusable UI components with single responsibility
- Styles: Centralized theming and design system
- Other: Configuration constants and app-wide settings
- Quiz entities encapsulate their data and behavior
- Widgets maintain private state and expose public interfaces
- Data classes hide internal structure while providing clean APIs
- StatefulWidget and StatelessWidget inheritance for UI components
- Common widget behaviors inherited from Flutter's base classes
- Clean separation between data models and presentation logic
- Abstract UI patterns through reusable widget components
- Business logic abstracted from UI implementation
- Each widget has a single, well-defined purpose
- Entities focus solely on data representation
- Clear separation between data, business logic, and presentation
lib/
βββ constants/
β βββ other.dart # App constants and configurations
β βββ styles.dart # Theme colors, text styles, and UI constants
βββ domain/
β βββ data/
β β βββ quizzCards.dart # Quiz categories data (Tech, Sports, Math)
β β βββ quizzes.dart # Quiz questions and answers data
β βββ entity/
β βββ question.dart # Question model class
β βββ quizz.dart # Quiz model with business logic
β βββ quizz_card.dart # Quiz card model for categories
βββ view/presentation/
β βββ screen/
β β βββ home_page.dart # Main screen with quiz categories
β β βββ questions_screen.dart # Quiz gameplay screen
β β βββ result_screen.dart # Results and congratulations screen
β βββ widget/
β βββ how_to_play.dart # Instructions widget
β βββ question_screen_header.dart # Header with progress and timer
β βββ quizz_card.dart # Category card widget
β βββ submession_button.dart # Submit/Next button widget
β βββ suggestion_box.dart # Answer options widget
βββ main.dart # Application entry point
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Android Studio / VS Code
- Android device or emulator
-
Clone the repository
git clone https://github.com/diaazg/quizz_game.git cd quizz_game -
Install dependencies
flutter pub get
-
Run the application
flutter run
- Select Category: Choose from Tech, Sports, Math, or other available categories
- Read Instructions: Review the "How to play" section
- Answer Questions: Select your answer from multiple choice options
- Track Progress: Monitor your score and remaining questions
- View Results: See your final score and performance summary
This project serves as an excellent learning resource for:
- Flutter Development: Real-world implementation of Flutter widgets and navigation
- OOP Principles: Practical application of encapsulation, inheritance, and polymorphism
- Code Organization: Structured approach to large-scale Flutter applications
- UI/UX Design: Implementation of Material Design principles
- State Management: Handling application state across different screens
- Add more quiz categories and questions
- Implement local storage for user progress
- Add difficulty levels (Easy, Medium, Hard)
- Include multimedia questions (images, audio)
- Custom quiz creation functionality
- Export results functionality
- Dark/Light theme toggle
- Multiple language support
- Enhanced animations and micro-interactions
Note: This application was developed for educational purposes to demonstrate Flutter development skills and OOP implementation in a real-world project.