Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 70-improve-app-metadata
  • master
  • Release_0.0.28_28
  • Release_0.0.29_29
  • Release_0.0.30_30
  • Release_0.0.31_31
  • Release_0.0.32_32
  • Release_0.0.33_33
  • Release_0.0.34_34
  • Release_0.0.35_35
  • Release_0.0.36_36
  • Release_0.0.37_37
  • Release_0.0.38_38
  • Release_0.0.39_39
  • Release_0.0.40_40
  • Release_0.0.41_41
  • Release_0.0.42_42
  • Release_0.0.43_43
  • Release_0.0.44_44
  • Release_0.0.45_45
  • Release_0.0.46_46
  • Release_0.0.47_47
  • Release_0.0.48_48
  • Release_0.0.49_49
  • Release_0.0.50_50
  • Release_0.0.51_51
  • Release_0.0.52_52
  • Release_0.0.53_53
  • Release_0.0.54_54
  • Release_0.0.55_55
  • Release_0.0.56_56
  • Release_0.0.57_57
  • Release_0.0.58_58
  • Release_0.0.59_59
  • Release_0.0.60_60
  • Release_0.0.61_61
  • Release_0.1.0_62
  • Release_0.1.1_63
  • Release_0.2.0_64
  • Release_0.2.1_65
  • Release_0.3.0_66
  • Release_0.3.1_67
  • Release_0.4.0_68
  • Release_0.4.1_69
  • Release_0.4.2_70
  • Release_0.5.0_71
  • Release_0.6.0_72
  • Release_0.7.0_73
  • Release_0.8.0_74
  • Release_0.8.1_75
  • Release_0.8.2_76
  • Release_0.9.0_77
52 results

Target

Select target project
  • android/org.benoitharrault.puzzlegame
1 result
Select Git revision
  • 70-improve-app-metadata
  • master
  • Release_0.0.28_28
  • Release_0.0.29_29
  • Release_0.0.30_30
  • Release_0.0.31_31
  • Release_0.0.32_32
  • Release_0.0.33_33
  • Release_0.0.34_34
  • Release_0.0.35_35
  • Release_0.0.36_36
  • Release_0.0.37_37
  • Release_0.0.38_38
  • Release_0.0.39_39
  • Release_0.0.40_40
  • Release_0.0.41_41
  • Release_0.0.42_42
  • Release_0.0.43_43
  • Release_0.0.44_44
  • Release_0.0.45_45
  • Release_0.0.46_46
  • Release_0.0.47_47
  • Release_0.0.48_48
  • Release_0.0.49_49
  • Release_0.0.50_50
  • Release_0.0.51_51
  • Release_0.0.52_52
  • Release_0.0.53_53
  • Release_0.0.54_54
  • Release_0.0.55_55
  • Release_0.0.56_56
  • Release_0.0.57_57
  • Release_0.0.58_58
  • Release_0.0.59_59
  • Release_0.0.60_60
  • Release_0.0.61_61
  • Release_0.1.0_62
  • Release_0.1.1_63
  • Release_0.2.0_64
  • Release_0.2.1_65
  • Release_0.3.0_66
  • Release_0.3.1_67
  • Release_0.4.0_68
  • Release_0.4.1_69
  • Release_0.4.2_70
  • Release_0.5.0_71
  • Release_0.6.0_72
  • Release_0.7.0_73
  • Release_0.8.0_74
  • Release_0.8.1_75
  • Release_0.8.2_76
  • Release_0.9.0_77
52 results
Show changes
Commits on Source (2)
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.2 app.versionName=0.0.3
app.versionCode=2 app.versionCode=3
...@@ -4,8 +4,9 @@ class Data extends ChangeNotifier { ...@@ -4,8 +4,9 @@ class Data extends ChangeNotifier {
// application data // application data
List _images = []; List _images = [];
String _image = ''; String _image = '';
List _tiles = [];
String get image => _image; String get image => _image;
...@@ -21,6 +22,13 @@ class Data extends ChangeNotifier { ...@@ -21,6 +22,13 @@ class Data extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
List get tiles => _tiles;
set updateTiles(List value) {
_tiles = value;
notifyListeners();
}
void resetGame() { void resetGame() {
_image = ''; _image = '';
notifyListeners(); notifyListeners();
......
import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:image/image.dart' as imglib;
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../provider/data.dart'; import '../provider/data.dart';
...@@ -7,10 +11,21 @@ import '../utils/get_images_list.dart'; ...@@ -7,10 +11,21 @@ import '../utils/get_images_list.dart';
class Home extends StatelessWidget { class Home extends StatelessWidget {
static const String id = 'home'; static const String id = 'home';
int _linesCount = 3;
int _columnsCount = 3;
double _selectorImageSize = 200;
double _tipImageSize = 100;
double _tileImageSize = 80;
Future<void> resetGame(Data myProvider) async { Future<void> resetGame(Data myProvider) async {
myProvider.updateImage = ''; myProvider.updateImage = '';
} }
String getImageAssetName(String imageCode) {
return 'assets/images/'+imageCode+'.png';
}
Future<void> getImagesList(Data myProvider) async { Future<void> getImagesList(Data myProvider) async {
GetImagesList getImagesList; GetImagesList getImagesList;
getImagesList = GetImagesList(); getImagesList = GetImagesList();
...@@ -20,10 +35,12 @@ class Home extends StatelessWidget { ...@@ -20,10 +35,12 @@ class Home extends StatelessWidget {
} }
} }
Container _buildImageSelectorItem(Data myProvider, String image) { Future<void> selectImage(Data myProvider, String imageCode) async {
double imageSize = 200; myProvider.updateImage = imageCode;
String imageAsset = 'assets/images/'+image+'.png'; myProvider.updateTiles = await splitImageInTiles(myProvider);
}
Container _buildImageSelectorItem(Data myProvider, String image) {
return Container( return Container(
child: FlatButton( child: FlatButton(
child: Container( child: Container(
...@@ -36,15 +53,13 @@ class Home extends StatelessWidget { ...@@ -36,15 +53,13 @@ class Home extends StatelessWidget {
), ),
margin: EdgeInsets.all(2), margin: EdgeInsets.all(2),
child: Image( child: Image(
image: AssetImage(imageAsset), image: AssetImage(getImageAssetName(image)),
width: imageSize, width: _selectorImageSize,
height: imageSize, height: _selectorImageSize,
fit: BoxFit.fill fit: BoxFit.fill
), ),
), ),
onPressed: () { onPressed: () { selectImage(myProvider, image); },
myProvider.updateImage = image;
},
), ),
); );
} }
...@@ -66,33 +81,125 @@ class Home extends StatelessWidget { ...@@ -66,33 +81,125 @@ class Home extends StatelessWidget {
); );
} }
Container _buildGameWidget(Data myProvider) { Future<List<Image>> splitImageInTiles(Data myProvider) async {
double imageSize = 250; String imageAsset = getImageAssetName(myProvider.image);
String imageAsset = 'assets/images/'+myProvider.image+'.png'; Uint8List imageData = (await rootBundle.load(imageAsset))
.buffer
.asUint8List();
imglib.Image image = imglib.decodeImage(imageData);
int x = 0, y = 0;
int width = (image.width / _linesCount).round();
int height = (image.height / _columnsCount).round();
List<imglib.Image> parts = List<imglib.Image>();
for (int i = 0; i < _linesCount; i++) {
for (int j = 0; j < _columnsCount; j++) {
parts.add(imglib.copyCrop(image, x, y, width, height));
x += width;
}
x = 0;
y += height;
}
List<Image> tiles = List<Image>();
for (var img in parts) {
tiles.add(Image.memory(imglib.encodeJpg(img)));
}
return tiles;
}
Container _buildImageTileItem(Image tile) {
return Container(
child: Image(
image: tile.image,
width: _tileImageSize,
height: _tileImageSize,
fit: BoxFit.fill
)
);
}
Container _buildTilesetWidget(Data myProvider) {
List tiles = myProvider.tiles;
tiles.shuffle();
int tileIndex = 0;
Table tileset = Table(
defaultColumnWidth: IntrinsicColumnWidth(),
border: TableBorder.all(
color: Colors.black,
style: BorderStyle.solid,
width: 2,
),
children: [
TableRow(children: [
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
]),
TableRow(children: [
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
]),
TableRow(children: [
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
]),
],
);
return Container(
margin: EdgeInsets.all(4),
padding: EdgeInsets.all(4),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.green,
width: 4,
),
),
child: tileset,
);
}
Container _buildTipWidget(Data myProvider) {
return Container(
margin: EdgeInsets.all(4),
padding: EdgeInsets.all(4),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.green,
width: 4,
),
),
child: Image(
image: AssetImage(getImageAssetName(myProvider.image)),
width: _tipImageSize,
height: _tipImageSize,
fit: BoxFit.fill
),
);
}
Container _buildGameWidget(Data myProvider) {
return Container( return Container(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( _buildTilesetWidget(myProvider),
margin: EdgeInsets.all(4), SizedBox(height: 20),
padding: EdgeInsets.all(4), _buildTipWidget(myProvider),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.green,
width: 4,
),
),
child: Image(
image: AssetImage(imageAsset),
width: imageSize,
height: imageSize,
fit: BoxFit.fill
),
),
], ],
), ),
); );
......
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
archive:
dependency: transitive
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.2"
async: async:
dependency: transitive dependency: transitive
description: description:
...@@ -43,6 +50,13 @@ packages: ...@@ -43,6 +50,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0" version: "1.15.0"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
...@@ -60,6 +74,13 @@ packages: ...@@ -60,6 +74,13 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
image:
dependency: "direct main"
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
...@@ -88,6 +109,13 @@ packages: ...@@ -88,6 +109,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.0"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
...@@ -156,6 +184,13 @@ packages: ...@@ -156,6 +184,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.1"
sdks: sdks:
dart: ">=2.12.0 <3.0.0" dart: ">=2.12.0 <3.0.0"
flutter: ">=1.16.0" flutter: ">=1.16.0"
...@@ -9,6 +9,7 @@ environment: ...@@ -9,6 +9,7 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
image: ^3.0.2
provider: ^5.0.0 provider: ^5.0.0
dev_dependencies: dev_dependencies:
......