Skip to content
Snippets Groups Projects
Commit dcc0d80c authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Fix/clean data provider code

parent c6ab1240
No related branches found
No related tags found
1 merge request!47Resolve "Clean data provider code"
Pipeline #3091 passed
This commit is part of merge request !47. Comments created here will be created in the context of that merge request.
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.45 app.versionName=0.0.46
app.versionCode=45 app.versionCode=46
Improve code in data provider
Améliorations du code du fournisseur de données
...@@ -6,53 +6,57 @@ class Data extends ChangeNotifier { ...@@ -6,53 +6,57 @@ class Data extends ChangeNotifier {
int _tilesCount = 4; int _tilesCount = 4;
// application data // application data
List _images = []; List _availableImages = [];
String _image = ''; String _selectedImage = '';
List<MovingTile> _tiles = []; List<MovingTile> _tiles = [];
// application state // application state
bool _isShufflingBoard = false; bool _isShufflingBoard = false;
bool _displayTipImage = false; bool _isTipImageDisplayed = false;
String get image => _image; String get selectedImage => _selectedImage;
set updateImage(String value) { void updateSelectedImage(String value) {
_image = value; _selectedImage = value;
notifyListeners(); notifyListeners();
} }
void resetSelectedImage() {
updateSelectedImage('');
}
int get tilesCount => _tilesCount; int get tilesCount => _tilesCount;
set updateTilesCount(int value) { void updateTilesCount(int tilesCountPerSide) {
_tilesCount = value; _tilesCount = tilesCountPerSide;
notifyListeners(); notifyListeners();
} }
List get images => _images; List get availableImages => _availableImages;
set updateImages(List value) { void updateAvailableImages(List availableImages) {
_images = value; _availableImages = availableImages;
notifyListeners(); notifyListeners();
} }
List<MovingTile> get tiles => _tiles; List<MovingTile> get tiles => _tiles;
set updateTiles(List<MovingTile> value) { void updateTiles(List<MovingTile> tiles) {
_tiles = value; _tiles = tiles;
notifyListeners(); notifyListeners();
} }
bool get isShufflingBoard => _isShufflingBoard; bool get isShufflingBoard => _isShufflingBoard;
set updateIsShufflingBoard(bool value) { void updateIsShufflingBoard(bool isShuffling) {
_isShufflingBoard = value; _isShufflingBoard = isShuffling;
notifyListeners(); notifyListeners();
} }
bool get displayTipImage => _displayTipImage; bool get displayTipImage => _isTipImageDisplayed;
set updateDisplayTipImage(bool value) { void updateIsTipImageDisplayed(bool isDisplayed) {
_displayTipImage = value; _isTipImageDisplayed = isDisplayed;
notifyListeners(); notifyListeners();
} }
...@@ -76,9 +80,4 @@ class Data extends ChangeNotifier { ...@@ -76,9 +80,4 @@ class Data extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void resetGame() {
_image = '';
notifyListeners();
}
} }
...@@ -5,7 +5,7 @@ import 'package:puzzlegame/utils/game_utils.dart'; ...@@ -5,7 +5,7 @@ import 'package:puzzlegame/utils/game_utils.dart';
class Game { class Game {
static void toggleDisplayTipImage(Data myProvider) { static void toggleDisplayTipImage(Data myProvider) {
myProvider.updateDisplayTipImage = !myProvider.displayTipImage; myProvider.updateIsTipImageDisplayed(!myProvider.displayTipImage);
} }
static Container buildTilesetWidget(Data myProvider) { static Container buildTilesetWidget(Data myProvider) {
...@@ -79,7 +79,7 @@ class Game { ...@@ -79,7 +79,7 @@ class Game {
child: Image( child: Image(
image: AssetImage( image: AssetImage(
myProvider.displayTipImage myProvider.displayTipImage
? GameUtils.getImageAssetName(myProvider.image) ? GameUtils.getImageAssetName(myProvider.selectedImage)
: 'assets/icons/tip_hidden.png', : 'assets/icons/tip_hidden.png',
), ),
fit: BoxFit.contain, fit: BoxFit.contain,
......
...@@ -18,22 +18,22 @@ class Home extends StatelessWidget { ...@@ -18,22 +18,22 @@ class Home extends StatelessWidget {
GetImagesList getImagesList; GetImagesList getImagesList;
getImagesList = GetImagesList(); getImagesList = GetImagesList();
await getImagesList.init(); await getImagesList.init();
if (getImagesList.images.isNotEmpty) { if (getImagesList.availableImages.isNotEmpty) {
myProvider.updateImages = getImagesList.images; myProvider.updateAvailableImages(getImagesList.availableImages);
shuffleAvailableImages(myProvider); shuffleAvailableImages(myProvider);
} }
} }
Future<void> selectImage(Data myProvider, String imageCode, double tileImageSize) async { Future<void> selectImage(Data myProvider, String imageCode, double tileImageSize) async {
myProvider.updateIsShufflingBoard = true; myProvider.updateIsShufflingBoard(true);
myProvider.updateImage = imageCode; myProvider.updateSelectedImage(imageCode);
GameUtils.startGame(myProvider, tileImageSize); GameUtils.startGame(myProvider, tileImageSize);
} }
void shuffleAvailableImages(Data myProvider) { void shuffleAvailableImages(Data myProvider) {
List images = myProvider.images; List images = myProvider.availableImages;
images.shuffle(); images.shuffle();
myProvider.updateImages = images; myProvider.updateAvailableImages(images);
} }
Container _buildImageSelectorItem(Data myProvider, String image, double tileImageSize) { Container _buildImageSelectorItem(Data myProvider, String image, double tileImageSize) {
...@@ -63,10 +63,10 @@ class Home extends StatelessWidget { ...@@ -63,10 +63,10 @@ class Home extends StatelessWidget {
} }
Container _buildImageSelector(Data myProvider, double tileImageSize) { Container _buildImageSelector(Data myProvider, double tileImageSize) {
if (myProvider.images.length == 0) { if (myProvider.availableImages.length == 0) {
getImagesList(myProvider); getImagesList(myProvider);
} }
List images = myProvider.images; List images = myProvider.availableImages;
return Container( return Container(
padding: EdgeInsets.all(2), padding: EdgeInsets.all(2),
...@@ -122,7 +122,7 @@ class Home extends StatelessWidget { ...@@ -122,7 +122,7 @@ class Home extends StatelessWidget {
), ),
), ),
onPressed: () { onPressed: () {
myProvider.updateTilesCount = value; myProvider.updateTilesCount(value);
}, },
); );
} }
...@@ -139,7 +139,7 @@ class Home extends StatelessWidget { ...@@ -139,7 +139,7 @@ class Home extends StatelessWidget {
content = Game.buildShufflingIndicatorWidget(); content = Game.buildShufflingIndicatorWidget();
precacheImage(new AssetImage('assets/icons/game_win.png'), context); precacheImage(new AssetImage('assets/icons/game_win.png'), context);
} else { } else {
if (_myProvider.image == '') { if (_myProvider.selectedImage == '') {
content = _buildImageSelector(_myProvider, _tileImageSize); content = _buildImageSelector(_myProvider, _tileImageSize);
} else { } else {
content = Game.buildGameWidget(_myProvider); content = Game.buildGameWidget(_myProvider);
...@@ -190,7 +190,7 @@ class Home extends StatelessWidget { ...@@ -190,7 +190,7 @@ class Home extends StatelessWidget {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
backgroundColor: themePrimaryColor, backgroundColor: themePrimaryColor,
actions: _myProvider.image == '' ? menuActions : gameActions, actions: _myProvider.selectedImage == '' ? menuActions : gameActions,
), ),
body: SafeArea( body: SafeArea(
child: Center(child: content), child: Center(child: content),
......
...@@ -21,8 +21,8 @@ class GameUtils { ...@@ -21,8 +21,8 @@ class GameUtils {
} }
static Future<void> resetGame(Data myProvider) async { static Future<void> resetGame(Data myProvider) async {
myProvider.updateImage = ''; myProvider.resetSelectedImage();
myProvider.updateDisplayTipImage = false; myProvider.updateIsTipImageDisplayed(false);
} }
static bool checkTilesetIsCleared(List<MovingTile> tiles) { static bool checkTilesetIsCleared(List<MovingTile> tiles) {
...@@ -59,7 +59,7 @@ class GameUtils { ...@@ -59,7 +59,7 @@ class GameUtils {
} }
static Future<void> splitImageInTiles(Data myProvider, double tileImageSize) async { static Future<void> splitImageInTiles(Data myProvider, double tileImageSize) async {
String imageAsset = getImageAssetName(myProvider.image); String imageAsset = getImageAssetName(myProvider.selectedImage);
Uint8List imageData = (await rootBundle.load(imageAsset)).buffer.asUint8List(); Uint8List imageData = (await rootBundle.load(imageAsset)).buffer.asUint8List();
imglib.Image image = imglib.decodeImage(imageData) ?? imglib.Image.fromBytes(1, 1, []); imglib.Image image = imglib.decodeImage(imageData) ?? imglib.Image.fromBytes(1, 1, []);
...@@ -94,7 +94,7 @@ class GameUtils { ...@@ -94,7 +94,7 @@ class GameUtils {
y += height; y += height;
} }
myProvider.updateTiles = shuffleMovingTiles(tiles); myProvider.updateTiles(shuffleMovingTiles(tiles));
myProvider.updateIsShufflingBoard = false; myProvider.updateIsShufflingBoard(false);
} }
} }
...@@ -5,7 +5,7 @@ import 'package:flutter/services.dart'; ...@@ -5,7 +5,7 @@ import 'package:flutter/services.dart';
class GetImagesList { class GetImagesList {
GetImagesList(); GetImagesList();
List _images = []; List _availableImages = [];
init() async { init() async {
await imagesFromLocalFile(); await imagesFromLocalFile();
...@@ -17,14 +17,14 @@ class GetImagesList { ...@@ -17,14 +17,14 @@ class GetImagesList {
jsonString = await rootBundle.loadString('assets/files/images.json'); jsonString = await rootBundle.loadString('assets/files/images.json');
final jsonResponse = await json.decode(jsonString); final jsonResponse = await json.decode(jsonString);
List imagesList = jsonResponse['images']; List imagesList = jsonResponse['images'];
_images = imagesList; _availableImages = imagesList;
} catch (e) { } catch (e) {
_images = []; _availableImages = [];
} }
// Remove empty images // Remove empty images
_images.removeWhere((value) => (value == '')); _availableImages.removeWhere((value) => (value == ''));
} }
List get images => _images; List get availableImages => _availableImages;
} }
...@@ -7,7 +7,7 @@ packages: ...@@ -7,7 +7,7 @@ packages:
name: archive name: archive
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.3.0" version: "3.3.1"
async: async:
dependency: transitive dependency: transitive
description: description:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment