Skip to content

Commit

Permalink
3 adet yanlış cevap verilen bulmacanın, o kullanıcı için kapatılması.
Browse files Browse the repository at this point in the history
  • Loading branch information
yolcura1@gmail.com authored and yolcura1@gmail.com committed Apr 16, 2020
1 parent e6d3158 commit 6a2a4d8
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 54 deletions.
2 changes: 2 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ void main() {

runApp(MyApp());
}
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();

class MyApp extends StatelessWidget {
@override
Expand Down Expand Up @@ -55,6 +56,7 @@ class MyApp extends StatelessWidget {
),
buttonTheme: ButtonThemeData(),
),
navigatorKey: navigatorKey,
),
);
}
Expand Down
79 changes: 30 additions & 49 deletions lib/screens/quiz.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'package:define9/main.dart';
import 'package:define9/shared/lockprocess.dart';
import 'package:define9/shared/tokenprocess.dart';
import 'package:flutter/material.dart';
import '../shared/shared.dart';
Expand Down Expand Up @@ -66,7 +68,7 @@ class QuizScreen extends StatelessWidget {
scrollDirection: Axis.vertical,
controller: state.controller,
onPageChanged: (int idx) =>
state.progress = (idx / (quiz.questions.length + 1)),
state.progress = (idx / (quiz.questions.length + 1)),
itemBuilder: (BuildContext context, int idx) {
if (idx == 0) {
return StartPage(quiz: quiz);
Expand All @@ -84,49 +86,38 @@ class QuizScreen extends StatelessWidget {
);
}
}

class StartPage extends StatelessWidget {
final Quiz quiz;
final PageController controller;
StartPage({this.quiz, this.controller});
bool isLocked(snapshot){
return (snapshot.hasData &&
snapshot.data != null &&
snapshot.data.quizzes != null &&
snapshot.data.quizzes[quiz.topic] != null &&
snapshot.data.quizzes[quiz.topic]["wrongNumber"] ==3);
}

@override
Widget build(BuildContext context) {
return FutureBuilder<LockReport>(
future: Global.lockReportRef.getDocument(),
builder: (context, AsyncSnapshot<LockReport> snapshot) {
var state = Provider.of<QuizState>(context);
return Container(
padding: EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(quiz.title, style: Theme.of(context).textTheme.headline),
Divider(),
Expanded(child: Text(quiz.description)),
ButtonBar(
alignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton.icon(
onPressed: state.nextPage,
label: false ? Text('Locked') : Text('Start Quiz!'),
icon: Icon(Icons.poll),
color: Colors.green,
)
],
)
],
),
);

var state = Provider.of<QuizState>(context);
return Container(
padding: EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(quiz.title, style: Theme.of(context).textTheme.headline),
Divider(),
Expanded(child: Text(quiz.description)),
ButtonBar(
alignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton.icon(
onPressed: state.nextPage,
label: isLocked(snapshot)? Text('Locked') : Text('Start Quiz!'),
icon: Icon(Icons.poll),
color: Colors.green,
)
],
)
],
),
);

});


}
Expand Down Expand Up @@ -159,7 +150,7 @@ class CongratsPage extends StatelessWidget {
Navigator.pushNamedAndRemoveUntil(
context,
'/topics',
(route) => false,
(route) => false,
);
},
)
Expand Down Expand Up @@ -247,18 +238,8 @@ class QuestionPage extends StatelessWidget {
);
}

/// Database write to update report doc when complete
Future<void> _updateUserReportForWrongQuestion(Quiz quiz) {
return Global.lockReportRef.upsert(
({

'quizzes': {
'${quiz.topic}': { 'wrongNumber': FieldValue.increment(1)}
}
}),
);

}
/// Bottom sheet shown when Question is answered
_bottomSheet(BuildContext context, Option opt) {
bool correct = opt.correct;
Expand Down Expand Up @@ -306,9 +287,9 @@ class QuestionPage extends StatelessWidget {
);
if(!correct){
TokenProcess.getState().updateUserTokenConsume();
_updateUserReportForWrongQuestion(quiz);
LockProcess.getState().updateUserReportForWrongQuestion(quiz.topic);

}
}


}
45 changes: 40 additions & 5 deletions lib/screens/topics.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:define9/shared/lockprocess.dart';
import 'package:flutter/material.dart';
import '../services/services.dart';
import '../shared/shared.dart';
Expand Down Expand Up @@ -42,6 +43,31 @@ class TopicsScreen extends StatelessWidget {
);
}
}
showAlertDialog(BuildContext context) {

// set up the buttons
Widget remindButton = FlatButton(
child: Text("Devam"),
onPressed: () {Navigator.pop(context);},
);

// set up the AlertDialog
AlertDialog alert = AlertDialog(
title: Text("Bilgi"),
content: Text("Bu bulmaca 3 adet yanlış cevap verdiğiniz için kitlenmiştir."),
actions: [
remindButton,
],
);

// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}

class TopicItem extends StatelessWidget {
final Topic topic;
Expand All @@ -56,11 +82,20 @@ class TopicItem extends StatelessWidget {
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => TopicScreen(topic: topic),
),
);

Global.lockReportRef.getDocument().then((snapshot) {
if(LockProcess.getState().isLocked(snapshot, topic.id)){
showAlertDialog(context);
}else{
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => TopicScreen(topic: topic),
),
);
}
});


},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
Expand Down
43 changes: 43 additions & 0 deletions lib/shared/lockprocess.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:define9/main.dart';
import 'package:define9/services/globals.dart';

class LockProcess{
static LockProcess _instance;

static LockProcess getState() {
if (_instance == null) {
_instance = new LockProcess();
}

return _instance;
}
bool isLocked(lockReport, topic){
return (lockReport != null &&
lockReport.quizzes != null &&
lockReport.quizzes[topic] != null &&
lockReport.quizzes[topic]["wrongNumber"] >2);
}
/// Database write to update report doc when complete
Future<void> updateUserReportForWrongQuestion(topic) {
Global.lockReportRef.upsert(
({

'quizzes': {
'${topic}': { 'wrongNumber': FieldValue.increment(1)}
}
}),
);
checkLock(topic);
}
checkLock(topic){
Global.lockReportRef.getDocument().then((snapshot) {
if(isLocked(snapshot, topic)){
print(topic + " checklock");
navigatorKey.currentState.pushNamed("/topics");

}
});
}

}

0 comments on commit 6a2a4d8

Please sign in to comment.