From 402948df8e9d9771851c87e6bab0b22e0c678cde Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Sat, 10 Apr 2021 19:34:08 +0200
Subject: [PATCH] Add mini game with timer

---
 android/gradle.properties |  4 +--
 lib/main.dart             | 69 +++++++++++++++++++++++++++++++++------
 2 files changed, 61 insertions(+), 12 deletions(-)

diff --git a/android/gradle.properties b/android/gradle.properties
index a5ad5f8..c8ded36 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=1.1.2
-app.versionCode=5
+app.versionName=1.2.0
+app.versionCode=6
diff --git a/lib/main.dart b/lib/main.dart
index 42d3a1d..efb9aa0 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'dart:math';
+import 'dart:async';
 
 void main() {
   runApp(MyApp());
@@ -124,6 +125,8 @@ class MyHomePage extends StatefulWidget {
 class _MyHomePageState extends State<MyHomePage> {
   String _randomLetter = '';
   String _randomCategory = '';
+  Timer _timer;
+  int _start = 10;
 
   void _pickRandomLetter() {
     setState(() {
@@ -137,12 +140,46 @@ class _MyHomePageState extends State<MyHomePage> {
     });
   }
 
+  void _startMiniGame() {
+    _pickRandomLetter();
+    _pickRandomCategory();
+    startTimer();
+  }
+
   @override
   void initState() {
     _pickRandomLetter();
     _pickRandomCategory();
   }
 
+  void startTimer() {
+    const oneSec = const Duration(seconds: 1);
+    if (_timer != null) {
+      _timer.cancel();
+    }
+    _start = 10;
+    _timer = new Timer.periodic(
+      oneSec,
+      (Timer timer) {
+        if (_start == 0) {
+          setState(() {
+            timer.cancel();
+          });
+        } else {
+          setState(() {
+            _start--;
+          });
+        }
+      },
+    );
+  }
+
+  @override
+  void dispose() {
+    _timer.cancel();
+    super.dispose();
+  }
+
   @override
   Widget build(BuildContext context) {
     return Scaffold(
@@ -156,10 +193,6 @@ class _MyHomePageState extends State<MyHomePage> {
             Column(
               mainAxisAlignment: MainAxisAlignment.center,
               children: <Widget>[
-                Text(
-                  'Lettre aléatoire :',
-                  style: Theme.of(context).textTheme.headline4,
-                ),
                 Text(
                   '$_randomLetter',
                   style: Theme.of(context).textTheme.headline2,
@@ -177,14 +210,10 @@ class _MyHomePageState extends State<MyHomePage> {
                 ),
               ],
             ),
-            SizedBox(height: 50),
+            SizedBox(height: 20),
             Column(
               mainAxisAlignment: MainAxisAlignment.center,
               children: <Widget>[
-                Text(
-                  'Catégorie aléatoire :',
-                  style: Theme.of(context).textTheme.headline4,
-                ),
                 Text(
                   '$_randomCategory',
                   style: Theme.of(context).textTheme.headline3,
@@ -201,7 +230,27 @@ class _MyHomePageState extends State<MyHomePage> {
                   ),
                 ),
               ],
-            )
+            ),
+            SizedBox(height: 40),
+            Column(
+              mainAxisAlignment: MainAxisAlignment.center,
+              children: <Widget>[
+                FlatButton(
+                  onPressed: _startMiniGame,
+                  color: Colors.blue,
+                  padding: EdgeInsets.all(10.0),
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.center,
+                    children: <Widget>[
+                      Text(
+                        '$_start',
+                        style: Theme.of(context).textTheme.headline2,
+                      ),
+                    ],
+                  ),
+                ),
+              ],
+            ),
           ],
         ),
       ),
-- 
GitLab