From b941c17b844e2650d35006ebd0a1a3d6225f71a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Tue, 25 May 2021 19:24:11 +0200
Subject: [PATCH] Add "shuffling" indicator

---
 android/gradle.properties |  4 ++--
 lib/provider/data.dart    |  9 +++++++++
 lib/screens/home.dart     | 37 ++++++++++++++++++++++++++++++++++---
 3 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/android/gradle.properties b/android/gradle.properties
index db7a1ee..14eed39 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=0.0.3
-app.versionCode=3
+app.versionName=0.0.4
+app.versionCode=4
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 6104e40..5979a1b 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -7,6 +7,8 @@ class Data extends ChangeNotifier {
   String _image = '';
   List _tiles = [];
 
+  // application state
+  bool _shuffling = false;
 
   String get image => _image;
 
@@ -29,6 +31,13 @@ class Data extends ChangeNotifier {
     notifyListeners();
   }
 
+  bool get shuffling => _shuffling;
+
+  set updateShuffling(bool value) {
+    _shuffling = value;
+    notifyListeners();
+  }
+
   void resetGame() {
     _image = '';
     notifyListeners();
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 92ae40c..87da3b9 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -36,8 +36,10 @@ class Home extends StatelessWidget {
   }
 
   Future<void> selectImage(Data myProvider, String imageCode) async {
+    myProvider.updateShuffling = true;
     myProvider.updateImage = imageCode;
     myProvider.updateTiles = await splitImageInTiles(myProvider);
+    myProvider.updateShuffling = false;
   }
 
   Container _buildImageSelectorItem(Data myProvider, String image) {
@@ -205,10 +207,41 @@ class Home extends StatelessWidget {
     );
   }
 
+  Container _buildShufflingIndicatorWidget() {
+    return Container(
+      child: Column(
+        mainAxisSize: MainAxisSize.min,
+        mainAxisAlignment: MainAxisAlignment.center,
+        children: [
+          Text(
+            '⏳',
+            style: TextStyle(
+              fontSize: 60,
+              fontWeight: FontWeight.w600,
+              color: Colors.black,
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
   @override
   Widget build(BuildContext context) {
     Data _myProvider = Provider.of<Data>(context);
 
+    var content;
+
+    if (_myProvider.shuffling) {
+      content = _buildShufflingIndicatorWidget();
+    } else {
+      if (_myProvider.image == '') {
+        content = _buildImageSelector(_myProvider);
+      } else {
+        content = _buildGameWidget(_myProvider);
+      }
+    }
+
     return Scaffold(
       appBar: AppBar(
         title: Text('Puzzle'),
@@ -223,9 +256,7 @@ class Home extends StatelessWidget {
       ),
       body: SafeArea(
         child: Center(
-          child: _myProvider.image == ''
-            ? _buildImageSelector(_myProvider)
-            : _buildGameWidget(_myProvider),
+          child: content
         ),
       )
     );
-- 
GitLab