zeba_academy_flashcards 1.0.1
zeba_academy_flashcards: ^1.0.1 copied to clipboard
Professional Flashcard engine with flip animation, swipe gestures, and spaced repetition algorithm.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:zeba_academy_flashcards/zeba_academy_flashcards.dart';
import 'package:uuid/uuid.dart';
void main() {
runApp(const FlashcardDemo());
}
class FlashcardDemo extends StatefulWidget {
const FlashcardDemo({super.key});
@override
State<FlashcardDemo> createState() => _FlashcardDemoState();
}
class _FlashcardDemoState extends State<FlashcardDemo> {
final FlashcardController controller = FlashcardController();
@override
void initState() {
super.initState();
controller.loadCards([
FlashcardModel(
id: const Uuid().v4(),
question: "What is Flutter?",
answer: "Flutter is Google’s UI toolkit for building beautiful apps.",
),
]);
}
@override
Widget build(BuildContext context) {
final card = controller.cards.first;
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: const Color(0xFFF5F7FA),
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.transparent,
foregroundColor: Colors.black,
centerTitle: true,
title: const Text(
"Zeba Academy Flashcards",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Column(
children: [
const SizedBox(height: 30),
// Progress Bar
ClipRRect(
borderRadius: BorderRadius.circular(10),
child: LinearProgressIndicator(
value: controller.progress,
minHeight: 10,
),
),
const SizedBox(height: 40),
// Flashcard
Center(
child: FlashcardWidget(
card: card,
onDifficultySelected: (difficulty) {
setState(() {
controller.markDifficulty(card, difficulty);
});
},
),
),
const SizedBox(height: 40),
// Difficulty Buttons
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_difficultyButton("Hard", Colors.red, () {
setState(() {
controller.markDifficulty(card, Difficulty.hard);
});
}),
_difficultyButton("Medium", Colors.orange, () {
setState(() {
controller.markDifficulty(card, Difficulty.medium);
});
}),
_difficultyButton("Easy", Colors.green, () {
setState(() {
controller.markDifficulty(card, Difficulty.easy);
});
}),
],
),
],
),
),
),
);
}
Widget _difficultyButton(String text, Color color, VoidCallback onTap) {
return ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: color,
padding: const EdgeInsets.symmetric(horizontal: 22, vertical: 12),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
onPressed: onTap,
child: Text(
text,
style: const TextStyle(fontWeight: FontWeight.bold),
),
);
}
}