Skip to content

Commit

Permalink
feat(review): added review all cards system
Browse files Browse the repository at this point in the history
  • Loading branch information
SethCohen committed Mar 30, 2023
1 parent 323fb0d commit 82bee53
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 10 deletions.
6 changes: 5 additions & 1 deletion src/lib/common/utils/data_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,11 @@ class DataProvider extends ChangeNotifier {
}

void removeReview(String deckTitle) {
_reviews.remove(deckTitle);
if (deckTitle == 'Review All') {
_reviews = {};
} else {
_reviews.remove(deckTitle);
}
notifyListeners();
}
}
3 changes: 2 additions & 1 deletion src/lib/common/utils/routes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ Route<dynamic> generateRoute(RouteSettings settings) {
} else if (settings.name!.contains("review")) {
final args = settings.arguments as Map<String, dynamic>;
return MaterialPageRoute(
builder: (_) => Review(cards: args['cards']), settings: settings);
builder: (_) => Review(title: args['title'], cards: args['cards']),
settings: settings);
} else {
return MaterialPageRoute(
builder: (_) => const PageManager(), settings: settings);
Expand Down
7 changes: 4 additions & 3 deletions src/lib/features/review/review_details_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import '../../common/utils/data_provider.dart';
import '../flashcard/flashcard.dart';

class Review extends StatefulWidget {
const Review({super.key, required this.cards});
const Review({super.key, required this.title, required this.cards});
final String title;
final List<ReviewModel> cards;

@override
Expand All @@ -24,7 +25,7 @@ class _ReviewState extends State<Review> {
},
child: Scaffold(
appBar: AppBar(
title: Text(widget.cards[0].deckTitle),
title: Text(widget.title),
),
body: Column(
children: [
Expand All @@ -39,7 +40,7 @@ class _ReviewState extends State<Review> {
void _handleIndex() => setState(() {
bool isCompleted = _currentCardIndex == widget.cards.length - 1;
if (isCompleted) {
context.read<DataProvider>().removeReview(widget.cards[0].deckTitle);
context.read<DataProvider>().removeReview(widget.title);
Navigator.pop(context);
} else {
_currentCardIndex++;
Expand Down
5 changes: 5 additions & 0 deletions src/lib/features/review/review_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,9 @@ class ReviewModel {
deckTitle: data['deckTitle'],
deckId: data['deckId'],
);

@override
String toString() {
return 'ReviewModel(deckId: $deckId, deckTitle: $deckTitle, cardId: $cardId, cardTitle: $cardTitle, cardInstructions: $cardInstructions, cardImage: $cardImage)';
}
}
21 changes: 16 additions & 5 deletions src/lib/features/review/reviews_list_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,21 @@ class _ReviewPageState extends State<ReviewPage> {
return const Center(child: Text('Nothing left to review! Good work!'));
}

// TODO "All Cards" review page

return ListView.builder(
itemCount: _decks.length,
itemBuilder: (context, index) => _buildListItem(index));
final allCards = _decks.values.expand((element) => element).toList();
return Column(
children: [
Card(
child: ListTile(
title: const Text('Review All'),
trailing: Text('${allCards.length}'),
onTap: () => _navigateToReview('Review All', allCards))),
Expanded(
child: ListView.builder(
itemCount: _decks.length,
itemBuilder: (context, index) => _buildListItem(index)),
)
],
);
}

Widget _buildListItem(index) {
Expand All @@ -53,6 +63,7 @@ class _ReviewPageState extends State<ReviewPage> {
context,
url,
arguments: {
'title': deckTitle,
'cards': cards,
},
);
Expand Down

0 comments on commit 82bee53

Please sign in to comment.