From 051c212a48f3d4f0b4300f1534db12658c27c76f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Fri, 16 Apr 2021 12:16:12 +0200
Subject: [PATCH] Clean/improve application conception

---
 android/gradle.properties                 |  4 +-
 lib/main.dart                             | 52 +++++++++++++----------
 lib/provider/data.dart                    |  5 +++
 lib/{ => screens}/game_pick_word.dart     |  0
 lib/{home_page.dart => screens/home.dart} | 11 +++--
 pubspec.lock                              | 15 +++++++
 pubspec.yaml                              |  1 +
 7 files changed, 61 insertions(+), 27 deletions(-)
 create mode 100644 lib/provider/data.dart
 rename lib/{ => screens}/game_pick_word.dart (100%)
 rename lib/{home_page.dart => screens/home.dart} (82%)

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/main.dart b/lib/main.dart
index 067f75b..900d8ea 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,7 +1,10 @@
 import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
 import 'package:flutter/services.dart';
-import 'package:wordguessing/home_page.dart';
-import 'package:wordguessing/game_pick_word.dart';
+
+import 'provider/data.dart';
+import 'screens/home.dart';
+import 'screens/game_pick_word.dart';
 
 void main() {
   WidgetsFlutterBinding.ensureInitialized();
@@ -12,29 +15,34 @@ void main() {
 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
-    return MaterialApp(
-      title: 'Jeux de mots et lettres',
-      theme: ThemeData(
-        primarySwatch: Colors.blue,
-      ),
-      home: HomePage(),
-      onGenerateRoute: (settings) {
-        final args = settings.arguments as Map<String, dynamic>;
+    return ChangeNotifierProvider(
+      create: (BuildContext context) => Data(),
+      child: Consumer<Data>(builder: (context, data, child) {
+        return MaterialApp(
+          title: 'Jeux de mots et lettres',
+          theme: ThemeData(
+            primarySwatch: Colors.blue,
+          ),
+          home: Home(),
+          onGenerateRoute: (settings) {
+            final args = settings.arguments as Map<String, dynamic>;
 
-        switch(settings.name) {
-          case '/game-pick-word': {
-            return MaterialPageRoute(
-              builder: (context) => GamePickWordPage(),
-            );
-          }
-          break;
+            switch(settings.name) {
+              case '/game-pick-word': {
+                return MaterialPageRoute(
+                  builder: (context) => GamePickWordPage(),
+                );
+              }
+              break;
 
-          default: { print("Unknown menu entry"); }
-          break;
-        }
+              default: { print("Unknown menu entry"); }
+              break;
+            }
 
-        return null;
-      },
+            return null;
+          },
+        );
+      }),
     );
   }
 }
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
new file mode 100644
index 0000000..26ba515
--- /dev/null
+++ b/lib/provider/data.dart
@@ -0,0 +1,5 @@
+import 'package:flutter/foundation.dart';
+
+class Data extends ChangeNotifier {
+
+}
diff --git a/lib/game_pick_word.dart b/lib/screens/game_pick_word.dart
similarity index 100%
rename from lib/game_pick_word.dart
rename to lib/screens/game_pick_word.dart
diff --git a/lib/home_page.dart b/lib/screens/home.dart
similarity index 82%
rename from lib/home_page.dart
rename to lib/screens/home.dart
index eacdb01..6c24f31 100644
--- a/lib/home_page.dart
+++ b/lib/screens/home.dart
@@ -1,10 +1,15 @@
-import 'dart:math';
-
 import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+
+import '../provider/data.dart';
+
+class Home extends StatelessWidget {
+  static const String id = 'home';
 
-class HomePage extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
+    Data _myProvider = Provider.of<Data>(context);
+
     return Scaffold(
       backgroundColor: Colors.blue,
       body: Center(
diff --git a/pubspec.lock b/pubspec.lock
index 9e492de..48d7003 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -74,6 +74,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.3.0"
+  nested:
+    dependency: transitive
+    description:
+      name: nested
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
   path:
     dependency: transitive
     description:
@@ -81,6 +88,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
+  provider:
+    dependency: "direct main"
+    description:
+      name: provider
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "5.0.0"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -144,3 +158,4 @@ packages:
     version: "2.1.0"
 sdks:
   dart: ">=2.12.0-0.0 <3.0.0"
+  flutter: ">=1.16.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 885e948..d839050 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -9,6 +9,7 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
+  provider: ^5.0.0
 
 dev_dependencies:
   flutter_test:
-- 
GitLab