flutter_mcq_template 0.0.1
flutter_mcq_template: ^0.0.1 copied to clipboard
A customizable MCQ quiz widget for Flutter apps.
Flutter MCQ Quiz Widget 📝
A comprehensive, animated quiz widget package for Flutter with navigation, progress tracking, gradient backgrounds, and customizable styling
Features ✨ #
- 🎯 Multiple Choice Questions - Support for dynamic question and answer lists
- 🧭 Smart Navigation - Navigate between questions with embedded controls
- 📊 Progress Tracking - Visual progress indicator showing current question (e.g., 2/10)
- 🚀 Auto-Navigation - Automatic progression after answer selection with customizable delay
- 🔒 Answer Validation - Require answers before allowing progression
- 📐 Consistent Height - Maintains consistent widget height throughout the quiz
- 🎨 Gradient Backgrounds - Beautiful gradient backgrounds with completion state changes
- 🎉 Completion Feedback - Green gradient background when quiz isflutter completed
- ✨ Smooth Animations - Elegant slide and fade animations with fixed container
- 📱 Mobile Optimized - Responsive design with proper overflow handling
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
flutter_mcq_template: ^1.0.0
Then run:
flutter pub get
Basic Usage #
import 'package:flutter/material.dart';
import 'package:flutter_mcq_template/flutter_mcq_template.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text("MCQ Quiz Example")),
body: MCQQuiz(
questions: [
Question(
text: "What language is used by Flutter?",
options: ["Dart", "Kotlin", "Swift", "Java"],
correctIndex: 0,
),
Question(
text: "Who developed Flutter?",
options: ["Google", "Apple", "Meta", "Microsoft"],
correctIndex: 0,
),
],
onCompleted: (score) {
debugPrint("Quiz completed! Score: $score");
},
),
),
);
}
}
Question Model Properties #
class Question {
final String text; // Question text
final List<String> options; // List of answer options
final int correctIndex; // Index of the correct answer
Question({
required this.text,
required this.options,
required this.correctIndex,
});
}
Configuration Options #
| Property | Type | Default | Description |
|---|---|---|---|
backgroundColor |
Color |
Color(0xFF1E3A8A) |
Background color (used when gradients disabled) |
textColor |
Color |
Colors.white |
Text color for options and UI elements |
questionTextColor |
Color |
Colors.white |
Text color for question text |
cornerRadius |
double |
12 |
Corner radius for rounded edges |
padding |
EdgeInsetsGeometry |
EdgeInsets.all(20) |
Internal padding of the widget |
showProgressIndicator |
bool |
true |
Show/hide progress indicator |
requireAnswerToProgress |
bool |
true |
Require answer before going to next question |
allowBackwardNavigation |
bool |
true |
Allow going back to previous questions |
enableAutoNavigation |
bool |
true |
Auto-navigate after answer selection |
autoNavigationDelay |
Duration |
Duration(milliseconds: 800) |
Delay before auto-navigation |
useGradientBackground |
bool |
true |
Enable gradient backgrounds |
gradientColors |
List<Color>? |
null |
Custom gradient colors (uses default if null) |
animationDuration |
Duration |
Duration(milliseconds: 300) |
Animation duration for transitions |
questionFontSize |
double |
20 |
Font size for question text |
optionFontSize |
double |
18 |
Font size for option text |
Navigation Behavior #
- Embedded Controls: Progress indicator is embedded within the quiz widget
- Auto-Navigation: Automatically moves to next question after answer selection (configurable delay)
- Progress Indicator: Shows current position (e.g., "2/10") in the top-left corner
- Quiz Completion: Background changes to green gradient and triggers
onQuizCompletedcallback
Styling & Customization 🎨
You can customize:
-
Card styling: Background color, border radius, elevation
-
Option styling: Text color, font size, selection color
-
Progress indicator: Shows current position
Example:
MCQQuiz(
questions: myQuestions,
onCompleted: (score) {
print("Quiz completed! Score: $score");
},
)
Callbacks 🔔 onCompleted
onCompleted: (score) {
print('Quiz finished! Score: $score');
// Use _score to save or display results
}
Example App #
Check out the example/ directory for a complete working example that demonstrates:
- Multiple question types
- Custom styling and gradients
- Answer handling and results display
- Responsive design patterns
To run the example:
cd example
flutter pub get
flutter run
Requirements #
- Flutter SDK:
>=3.0.0 - Dart SDK:
^3.4.0
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License #
This project is licensed under the MIT License.
Support #
If you like this package, please give it a ⭐ on GitHub and a 👍 on pub.dev!
For issues and feature requests, please use the GitHub issue tracker.