Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed assets/human-brain.png
Binary file not shown.
9 changes: 4 additions & 5 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:rememberme/screens/Stats.dart';
import 'package:rememberme/screens/homescreen.dart';
import 'package:rememberme/screens/login-signup.dart';
import 'package:rememberme/screens/profile.dart';
import 'package:rememberme/services/authservice.dart';
import 'package:rememberme/services/userservice.dart';
import 'firebase_options.dart';
import 'package:rememberme/screens/modifycard.dart';
import 'Screens/MemorySelect.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);

UserService.updateUserLoginDate();

runApp(MyApp());
}

Expand Down Expand Up @@ -53,4 +52,4 @@ class MyApp extends StatelessWidget {
home: AuthService.isUserSignedIn() ? Homepage() : LoginOptions(),
);
}
}
}
20 changes: 15 additions & 5 deletions lib/screens/EndScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:rememberme/controllers/MemoryGameController.dart';
import 'package:rememberme/screens/Homescreen.dart';
import 'package:rememberme/screens/MemoryGame.dart';
import 'package:rememberme/controllers/MemoryGameController.dart';
import 'package:rememberme/services/userservice.dart';
import '../widgets/memorygameselectdialog.dart';

class EndPage extends StatefulWidget {
Expand All @@ -15,12 +16,21 @@ class EndPage extends StatefulWidget {
}

class _EndPageState extends State<EndPage> {
late int correct;
late int wrong;
late int accuracy;

@override
Widget build(BuildContext context) {
int correct = widget.m.correctGuesses;
int wrong = widget.m.wrongGuesses;
int accuracy = (((wrong - correct).abs() / correct) * 100).round();
void initState() {
super.initState();
correct = widget.m.correctGuesses;
wrong = widget.m.wrongGuesses;
accuracy = (correct / (correct + wrong) * 100).round();
UserService.setMemoryGameHighScore(accuracy);
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(40),
Expand Down Expand Up @@ -75,7 +85,7 @@ class _EndPageState extends State<EndPage> {
Padding(
padding: const EdgeInsets.fromLTRB(20, 30, 20, 10),
child: Text(
'Accuarcy: ${accuracy}%',
'Accuracy: ${accuracy}%',
style: TextStyle(
color: Colors.black,
fontSize: 25,
Expand Down
129 changes: 75 additions & 54 deletions lib/screens/Homescreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import 'package:rememberme/services/cardservice.dart';
import 'package:rememberme/services/deckservice.dart';
import 'package:rememberme/widgets/MemoryGameButton.dart';
import 'package:rememberme/widgets/deckcarousel.dart';
import 'package:rememberme/widgets/memorygameselectdialog.dart';
import 'package:rememberme/widgets/roundedpage.dart';
import 'package:icon_decoration/icon_decoration.dart';
import 'package:rememberme/widgets/useravatar.dart';
Expand All @@ -26,15 +25,12 @@ class Homepage extends StatefulWidget {

class _HomepageState extends State<Homepage> {
List<PersonCard> _masterCardList = [];
List<Deck> _decks = [];

@override
void initState() {
super.initState();
DeckService.getMasterDeck().then((value) {
setState(() {
_masterCardList = value.cards;
});
});
_update();
}

@override
Expand All @@ -53,43 +49,63 @@ class _HomepageState extends State<Homepage> {
labelStyle: TextStyle(fontSize: 22),
child: const Icon(Icons.note_add,
size: 30, color: Color.fromRGBO(239, 119, 55, 1.0)),
onTap: () => Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const ModifyCard()),
),
onTap: () async {
await Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const ModifyCard()),
);
await _update();
},
),
SpeedDialChild(
label: 'New Deck',
labelStyle: TextStyle(fontSize: 22),
child: const Icon(Icons.collections_bookmark,
size: 30, color: Color.fromRGBO(239, 119, 55, 1.0)),
onTap: () => Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const ModifyDeck()),
),
onTap: () async {
await Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const ModifyDeck()),
);
await _update();
},
),
SpeedDialChild(
label: 'QR Code',
labelStyle: TextStyle(fontSize: 22),
child: const Icon(Icons.qr_code_outlined,
size: 30, color: Color.fromRGBO(239, 119, 55, 1.0)),
onTap: () => Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const QRScan()),
),
onLongPress: () => Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const QRView()),
),
onTap: () async {
await Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const QRScan()),
);
await _update();
},
onLongPress: () async {
await Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const QRView()),
);
await _update();
},
),
],
),
appBarActions: [
IconButton(
onPressed: () {
onPressed: () async {
// method to show the search bar
showSearch(
var res = await showSearch<PersonCard?>(
context: context,
// delegate to customize the search bar
delegate: _CustomSearchDelegate(
cards: _masterCardList,
));
if (res != null && mounted) {
await Navigator.of(context).push(MaterialPageRoute(
builder: (context) => ModifyCard(
existingCard: res,
),
));
}
await _update();
},
icon: const Icon(Icons.search),
)
Expand Down Expand Up @@ -120,38 +136,36 @@ class _HomepageState extends State<Homepage> {
MaterialPageRoute(builder: (context) => const Stats()),
);
},
icon: Stack(
alignment: AlignmentDirectional.center,
children: const [
Icon(
Icons.circle,
size: 70,
color: Color.fromARGB(90, 60, 200, 10),
),
DecoratedIcon(
icon: Icon(Icons.star, size: 30, color: Colors.yellow),
decoration: IconDecoration(
shadows: [
Shadow(
blurRadius: 30,
offset: Offset(1, 0),
color: Colors.brown)
icon: Container(
padding: const EdgeInsets.all(12),
decoration: const BoxDecoration(
color: Color.fromARGB(70, 60, 200, 10),
shape: BoxShape.circle,
),
child: const DecoratedIcon(
icon: Icon(Icons.star, size: 35, color: Colors.yellow),
decoration: IconDecoration(
shadows: [
Shadow(
blurRadius: 20,
offset: Offset(1, 0),
color: Colors.brown,
)
],
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
Color(0xfffaf8f8),
Color(0xfffae16c),
Color.fromARGB(128, 250, 148, 75),
],
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
Color(0xfffaf8f8),
Color(0xfffae16c),
Color.fromARGB(128, 250, 148, 75),
],
),
),
),
],
),
),
label: Text(
'${_masterCardList.length} cards added! ',
' ${_masterCardList.length} cards added! ',
style: const TextStyle(
fontSize: 24,
color: Colors.black,
Expand All @@ -176,7 +190,10 @@ class _HomepageState extends State<Homepage> {
),

//THIS IS TO SET UP THE CAROUSEL
const DeckCarousel(),
DeckCarousel(
decks: _decks,
onChange: () => _update(),
),

Container(
margin: const EdgeInsets.only(bottom: 60),
Expand All @@ -187,9 +204,17 @@ class _HomepageState extends State<Homepage> {
),
);
}

_update() async {
var decks = await DeckService.getAllDecks();
setState(() {
_decks = decks;
_masterCardList = decks.firstWhere((i) => i.isMaster).cards;
});
}
}

class _CustomSearchDelegate extends SearchDelegate {
class _CustomSearchDelegate extends SearchDelegate<PersonCard?> {
final List<PersonCard> cards;

_CustomSearchDelegate({required this.cards});
Expand Down Expand Up @@ -246,11 +271,7 @@ class _CustomSearchDelegate extends SearchDelegate {
var result = matchQuery[index];
return ListTile(
title: Text(result.name),
onTap: () => Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => CardView(initialCard: result),
),
),
onTap: () => Navigator.of(context).pop(result),
);
},
);
Expand Down
Loading