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

Target

Select target project
  • android/org.benoitharrault.puzzlegame
1 result
Show changes
Commits on Source (4)
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.39 app.versionName=0.0.41
app.versionCode=39 app.versionCode=41
Clean some code, remove deprecations
Upgrade flutter framework and dependencies, fix/clean code
Nettoyage de code, correction des deprectations
Mise à jour du framework Flutter, corrections/améliorations de code
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'tile.dart'; import 'tile.dart';
import '../provider/data.dart'; import '../provider/data.dart';
...@@ -8,19 +7,8 @@ class MovingTile extends Tile { ...@@ -8,19 +7,8 @@ class MovingTile extends Tile {
int currentCol; int currentCol;
int currentRow; int currentRow;
MovingTile( MovingTile(image, size, originalCol, originalRow, this.currentCol, this.currentRow)
image, : super(image, size, originalCol, originalRow);
size,
originalCol,
originalRow,
this.currentCol,
this.currentRow
): super(
image,
size,
originalCol,
originalRow
);
Container _tileWidget() { Container _tileWidget() {
return Container( return Container(
...@@ -35,7 +23,7 @@ class MovingTile extends Tile { ...@@ -35,7 +23,7 @@ class MovingTile extends Tile {
image: this.image.image, image: this.image.image,
width: this.size, width: this.size,
height: this.size, height: this.size,
fit: BoxFit.fill fit: BoxFit.fill,
), ),
); );
} }
...@@ -74,20 +62,13 @@ class MovingTile extends Tile { ...@@ -74,20 +62,13 @@ class MovingTile extends Tile {
); );
}, },
onAccept: (List<int> data) { onAccept: (List<int> data) {
myProvider.swapTiles( myProvider.swapTiles([this.currentCol, this.currentRow], data);
[this.currentCol, this.currentRow],
data
);
}, },
) ),
); );
} }
bool isCorrect() { bool isCorrect() {
return ( return ((this.currentRow == this.originalRow) && (this.currentCol == this.originalCol));
(this.currentRow == this.originalRow)
&&
(this.currentCol == this.originalCol)
);
} }
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/data.dart'; import '../provider/data.dart';
class Tile{ class Tile {
final Image image; final Image image;
final double size; final double size;
final int originalCol; final int originalCol;
final int originalRow; final int originalRow;
Tile( Tile(
@required this.image, this.image,
@required this.size, this.size,
@required this.originalCol, this.originalCol,
@required this.originalRow, this.originalRow,
); );
Container widget(Data myProvider) { Container widget(Data myProvider) {
return Container(); return Container();
} }
bool isCorrect() {} bool isCorrect() {
return false;
}
} }
...@@ -16,19 +16,21 @@ class MyApp extends StatelessWidget { ...@@ -16,19 +16,21 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ChangeNotifierProvider( return ChangeNotifierProvider(
create: (BuildContext context) => Data(), create: (BuildContext context) => Data(),
child: Consumer<Data>(builder: (context, data, child) { child: Consumer<Data>(
return MaterialApp( builder: (context, data, child) {
debugShowCheckedModeBanner: false, return MaterialApp(
theme: ThemeData( debugShowCheckedModeBanner: false,
primaryColor: Colors.blue, theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity, primaryColor: Colors.blue,
), visualDensity: VisualDensity.adaptivePlatformDensity,
home: Home(), ),
routes: { home: Home(),
Home.id: (context) => Home(), routes: {
}, Home.id: (context) => Home(),
); },
}), );
},
),
); );
} }
} }
...@@ -3,14 +3,13 @@ import 'package:flutter/foundation.dart'; ...@@ -3,14 +3,13 @@ import 'package:flutter/foundation.dart';
import '../entities/moving_tile.dart'; import '../entities/moving_tile.dart';
class Data extends ChangeNotifier { class Data extends ChangeNotifier {
// application configuration // application configuration
int _tilesCount = 4; int _tilesCount = 4;
// application data // application data
List _images = []; List _images = [];
String _image = ''; String _image = '';
List _tiles = []; List<MovingTile> _tiles = [];
// application state // application state
bool _isShufflingBoard = false; bool _isShufflingBoard = false;
...@@ -37,9 +36,9 @@ class Data extends ChangeNotifier { ...@@ -37,9 +36,9 @@ class Data extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
List get tiles => _tiles; List<MovingTile> get tiles => _tiles;
set updateTiles(List value) { set updateTiles(List<MovingTile> value) {
_tiles = value; _tiles = value;
notifyListeners(); notifyListeners();
} }
...@@ -59,8 +58,10 @@ class Data extends ChangeNotifier { ...@@ -59,8 +58,10 @@ class Data extends ChangeNotifier {
} }
void swapTiles(List<int> tile1, List<int> tile2) { void swapTiles(List<int> tile1, List<int> tile2) {
int indexTile1 = _tiles.indexWhere((tile) => ((tile.currentCol == tile1[0]) && (tile.currentRow == tile1[1]))); int indexTile1 = _tiles.indexWhere(
int indexTile2 = _tiles.indexWhere((tile) => ((tile.currentCol == tile2[0]) && (tile.currentRow == tile2[1]))); (tile) => ((tile.currentCol == tile1[0]) && (tile.currentRow == tile1[1])));
int indexTile2 = _tiles.indexWhere(
(tile) => ((tile.currentCol == tile2[0]) && (tile.currentRow == tile2[1])));
MovingTile swap = _tiles[indexTile1]; MovingTile swap = _tiles[indexTile1];
_tiles[indexTile1] = _tiles[indexTile2]; _tiles[indexTile1] = _tiles[indexTile2];
......
...@@ -15,9 +15,9 @@ import '../utils/get_images_list.dart'; ...@@ -15,9 +15,9 @@ import '../utils/get_images_list.dart';
class Home extends StatelessWidget { class Home extends StatelessWidget {
static const String id = 'home'; static const String id = 'home';
Color themePrimaryColor = Colors.blue; final Color themePrimaryColor = Colors.blue;
double _tipImageSize = 100; final double _tipImageSize = 100;
int _selectImageColumnsCount = 3; final int _selectImageColumnsCount = 3;
Future<void> resetGame(Data myProvider) async { Future<void> resetGame(Data myProvider) async {
myProvider.updateImage = ''; myProvider.updateImage = '';
...@@ -29,14 +29,14 @@ class Home extends StatelessWidget { ...@@ -29,14 +29,14 @@ class Home extends StatelessWidget {
} }
String getImageAssetName(String imageCode) { String getImageAssetName(String imageCode) {
return 'assets/images/'+imageCode+'.png'; 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();
await getImagesList.init(); await getImagesList.init();
if (getImagesList.images != null) { if (getImagesList.images.isNotEmpty) {
myProvider.updateImages = getImagesList.images; myProvider.updateImages = getImagesList.images;
shuffleImages(myProvider); shuffleImages(myProvider);
} }
...@@ -45,7 +45,7 @@ class Home extends StatelessWidget { ...@@ -45,7 +45,7 @@ class Home extends StatelessWidget {
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.updateImage = imageCode;
Timer timer = new Timer(new Duration(seconds: 1), () { new Timer(new Duration(seconds: 1), () {
splitImageInTiles(myProvider, tileImageSize); splitImageInTiles(myProvider, tileImageSize);
}); });
} }
...@@ -58,22 +58,26 @@ class Home extends StatelessWidget { ...@@ -58,22 +58,26 @@ class Home extends StatelessWidget {
Container _buildImageSelectorItem(Data myProvider, String image, double tileImageSize) { Container _buildImageSelectorItem(Data myProvider, String image, double tileImageSize) {
return Container( return Container(
child: FlatButton( child: TextButton(
padding: EdgeInsets.all(2), style: TextButton.styleFrom(
padding: EdgeInsets.all(2),
),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
border: Border.all( border: Border.all(
color: Colors.blue[200], color: Colors.blue.shade200,
width: 4, width: 4,
), ),
), ),
child: Image( child: Image(
image: AssetImage(getImageAssetName(image)), image: AssetImage(getImageAssetName(image)),
fit: BoxFit.fill fit: BoxFit.fill,
), ),
), ),
onPressed: () { selectImage(myProvider, image, tileImageSize); }, onPressed: () {
selectImage(myProvider, image, tileImageSize);
},
), ),
); );
} }
...@@ -91,21 +95,20 @@ class Home extends StatelessWidget { ...@@ -91,21 +95,20 @@ class Home extends StatelessWidget {
Table( Table(
defaultColumnWidth: IntrinsicColumnWidth(), defaultColumnWidth: IntrinsicColumnWidth(),
children: [ children: [
for (var imageIndex = 0; imageIndex < images.length; imageIndex += _selectImageColumnsCount) for (var imgIndex = 0;
imgIndex < images.length;
imgIndex += _selectImageColumnsCount)
TableRow( TableRow(
children: [ children: [
for (var columnIndex = 0; columnIndex < _selectImageColumnsCount; columnIndex++) for (var colIndex = 0; colIndex < _selectImageColumnsCount; colIndex++)
Column( Column(
children: [ children: [
if (imageIndex + columnIndex < images.length) if (imgIndex + colIndex < images.length)
_buildImageSelectorItem( _buildImageSelectorItem(
myProvider, myProvider, images[imgIndex + colIndex], tileImageSize)
images[imageIndex + columnIndex], ],
tileImageSize
)
]
), ),
] ],
), ),
], ],
), ),
...@@ -114,8 +117,9 @@ class Home extends StatelessWidget { ...@@ -114,8 +117,9 @@ class Home extends StatelessWidget {
); );
} }
FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) { TextButton _buildTilesetSizeSelectorItem(Data myProvider, int value) {
String assetName = 'assets/icons/difficulty_' + value.toString() + 'x' + value.toString() + '.png'; String assetName =
'assets/icons/difficulty_' + value.toString() + 'x' + value.toString() + '.png';
Color borderColor = themePrimaryColor; Color borderColor = themePrimaryColor;
...@@ -123,7 +127,7 @@ class Home extends StatelessWidget { ...@@ -123,7 +127,7 @@ class Home extends StatelessWidget {
borderColor = Colors.white; borderColor = Colors.white;
} }
return FlatButton( return TextButton(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
...@@ -135,10 +139,12 @@ class Home extends StatelessWidget { ...@@ -135,10 +139,12 @@ class Home extends StatelessWidget {
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
child: Image( child: Image(
image: AssetImage(assetName), image: AssetImage(assetName),
fit: BoxFit.fill fit: BoxFit.fill,
), ),
), ),
onPressed: () { myProvider.updateTilesCount = value; }, onPressed: () {
myProvider.updateTilesCount = value;
},
); );
} }
...@@ -168,30 +174,33 @@ class Home extends StatelessWidget { ...@@ -168,30 +174,33 @@ class Home extends StatelessWidget {
Future<void> splitImageInTiles(Data myProvider, double tileImageSize) async { Future<void> splitImageInTiles(Data myProvider, double tileImageSize) async {
String imageAsset = getImageAssetName(myProvider.image); String imageAsset = getImageAssetName(myProvider.image);
Uint8List imageData = (await rootBundle.load(imageAsset)) Uint8List imageData = (await rootBundle.load(imageAsset)).buffer.asUint8List();
.buffer
.asUint8List(); imglib.Image image = imglib.decodeImage(imageData) ?? imglib.Image.fromBytes(1, 1, []);
imglib.Image image = imglib.decodeImage(imageData);
int x = 0, y = 0; int x = 0, y = 0;
int width = (image.width / myProvider.tilesCount).round(); int width = (image.width / myProvider.tilesCount).round();
int height = (image.height / myProvider.tilesCount).round(); int height = (image.height / myProvider.tilesCount).round();
List<MovingTile> tiles = List<MovingTile>(); List<MovingTile> tiles = [];
for (int i = 0; i < myProvider.tilesCount; i++) { for (int i = 0; i < myProvider.tilesCount; i++) {
for (int j = 0; j < myProvider.tilesCount; j++) { for (int j = 0; j < myProvider.tilesCount; j++) {
tiles.add( Uint8List tileData = new Uint8List.fromList(imglib.encodeJpg(imglib.copyCrop(
MovingTile( image,
Image.memory( x,
imglib.encodeJpg( y,
imglib.copyCrop(image, x, y, width, height) width,
) height,
), )));
tileImageSize,
j, i, tiles.add(MovingTile(
j, i, Image.memory(tileData),
) tileImageSize,
); j,
i,
j,
i,
));
x += width; x += width;
} }
...@@ -203,7 +212,7 @@ class Home extends StatelessWidget { ...@@ -203,7 +212,7 @@ class Home extends StatelessWidget {
myProvider.updateIsShufflingBoard = false; myProvider.updateIsShufflingBoard = false;
} }
bool _checkTilesetIsCleared(List<Tile> tiles) { bool _checkTilesetIsCleared(List<MovingTile> tiles) {
for (Tile tile in tiles) { for (Tile tile in tiles) {
if (!tile.isCorrect()) { if (!tile.isCorrect()) {
return false; return false;
...@@ -213,14 +222,13 @@ class Home extends StatelessWidget { ...@@ -213,14 +222,13 @@ class Home extends StatelessWidget {
} }
Container _buildTilesetWidget(Data myProvider) { Container _buildTilesetWidget(Data myProvider) {
List tiles = myProvider.tiles; List<MovingTile> tiles = myProvider.tiles;
Color borderColor = _checkTilesetIsCleared(tiles) ? Colors.green : Colors.orange; Color borderColor = _checkTilesetIsCleared(tiles) ? Colors.green : Colors.orange;
int tileIndex = 0; int tileIndex = 0;
Table tileset = Table( Table tileset = Table(
defaultColumnWidth: IntrinsicColumnWidth(), defaultColumnWidth: IntrinsicColumnWidth(),
border: TableBorder.all( border: TableBorder.all(
color: Colors.black, color: Colors.black,
style: BorderStyle.solid, style: BorderStyle.solid,
...@@ -228,11 +236,13 @@ class Home extends StatelessWidget { ...@@ -228,11 +236,13 @@ class Home extends StatelessWidget {
), ),
children: [ children: [
for (var row = 0; row < myProvider.tilesCount; row++) for (var row = 0; row < myProvider.tilesCount; row++)
TableRow(children: [ TableRow(
for (var col = 0; col < myProvider.tilesCount; col++) children: [
Column(children: [tiles[tileIndex++].widget(myProvider)]), for (var col = 0; col < myProvider.tilesCount; col++)
]), Column(children: [tiles[tileIndex++].widget(myProvider)]),
] ],
),
],
); );
return Container( return Container(
...@@ -252,7 +262,7 @@ class Home extends StatelessWidget { ...@@ -252,7 +262,7 @@ class Home extends StatelessWidget {
Container _buildTipWidget(Data myProvider) { Container _buildTipWidget(Data myProvider) {
return Container( return Container(
child: FlatButton( child: TextButton(
child: Container( child: Container(
margin: EdgeInsets.all(4), margin: EdgeInsets.all(4),
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
...@@ -267,12 +277,12 @@ class Home extends StatelessWidget { ...@@ -267,12 +277,12 @@ class Home extends StatelessWidget {
child: Image( child: Image(
image: AssetImage( image: AssetImage(
myProvider.displayTipImage myProvider.displayTipImage
? getImageAssetName(myProvider.image) ? getImageAssetName(myProvider.image)
: 'assets/ui/tip-hidden.png' : 'assets/ui/tip-hidden.png',
), ),
width: _tipImageSize, width: _tipImageSize,
height: _tipImageSize, height: _tipImageSize,
fit: BoxFit.fill fit: BoxFit.fill,
), ),
), ),
onPressed: () => toggleDisplayTipImage(myProvider), onPressed: () => toggleDisplayTipImage(myProvider),
...@@ -288,7 +298,9 @@ class Home extends StatelessWidget { ...@@ -288,7 +298,9 @@ class Home extends StatelessWidget {
children: [ children: [
_buildTilesetWidget(myProvider), _buildTilesetWidget(myProvider),
SizedBox(height: 20), SizedBox(height: 20),
_checkTilesetIsCleared(myProvider.tiles) ? _buildWinMessage(myProvider) : _buildTipWidget(myProvider), _checkTilesetIsCleared(myProvider.tiles)
? _buildWinMessage(myProvider)
: _buildTipWidget(myProvider),
], ],
), ),
); );
...@@ -298,45 +310,44 @@ class Home extends StatelessWidget { ...@@ -298,45 +310,44 @@ class Home extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.all(2), margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2), padding: EdgeInsets.all(2),
child: Table( child: Table(
defaultColumnWidth: IntrinsicColumnWidth(), defaultColumnWidth: IntrinsicColumnWidth(),
children: [ children: [
TableRow( TableRow(
children: [ children: [
Column( Column(
children: [ children: [
Image( Image(
image: AssetImage('assets/icons/game_win.png'), image: AssetImage('assets/icons/game_win.png'),
fit: BoxFit.fill fit: BoxFit.fill,
), ),
] ],
), ),
Column( Column(
children: [ children: [
FlatButton( TextButton(
child: Container( child: Container(
child: Image( child: Image(
image: AssetImage('assets/icons/button_back.png'), image: AssetImage('assets/icons/button_back.png'),
fit: BoxFit.fill fit: BoxFit.fill,
),
), ),
onPressed: () => resetGame(myProvider),
),
]
),
Column(
children: [
Image(
image: AssetImage('assets/icons/game_win.png'),
fit: BoxFit.fill
), ),
] onPressed: () => resetGame(myProvider),
), ),
],
),
Column(
children: [
Image(
image: AssetImage('assets/icons/game_win.png'),
fit: BoxFit.fill,
),
],
),
], ],
), ),
] ],
) ),
); );
} }
...@@ -384,7 +395,7 @@ class Home extends StatelessWidget { ...@@ -384,7 +395,7 @@ class Home extends StatelessWidget {
_buildTilesetSizeSelectorItem(_myProvider, 3), _buildTilesetSizeSelectorItem(_myProvider, 3),
_buildTilesetSizeSelectorItem(_myProvider, 4), _buildTilesetSizeSelectorItem(_myProvider, 4),
_buildTilesetSizeSelectorItem(_myProvider, 5), _buildTilesetSizeSelectorItem(_myProvider, 5),
FlatButton( TextButton(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
...@@ -396,7 +407,7 @@ class Home extends StatelessWidget { ...@@ -396,7 +407,7 @@ class Home extends StatelessWidget {
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
child: Image( child: Image(
image: AssetImage('assets/icons/button_shuffle.png'), image: AssetImage('assets/icons/button_shuffle.png'),
fit: BoxFit.fill fit: BoxFit.fill,
), ),
), ),
onPressed: () => shuffleImages(_myProvider), onPressed: () => shuffleImages(_myProvider),
...@@ -404,7 +415,7 @@ class Home extends StatelessWidget { ...@@ -404,7 +415,7 @@ class Home extends StatelessWidget {
]; ];
List<Widget> gameActions = [ List<Widget> gameActions = [
FlatButton( TextButton(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
...@@ -416,7 +427,7 @@ class Home extends StatelessWidget { ...@@ -416,7 +427,7 @@ class Home extends StatelessWidget {
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
child: Image( child: Image(
image: AssetImage('assets/icons/button_back.png'), image: AssetImage('assets/icons/button_back.png'),
fit: BoxFit.fill fit: BoxFit.fill,
), ),
), ),
onPressed: () => resetGame(_myProvider), onPressed: () => resetGame(_myProvider),
...@@ -429,10 +440,8 @@ class Home extends StatelessWidget { ...@@ -429,10 +440,8 @@ class Home extends StatelessWidget {
actions: _myProvider.image == '' ? menuActions : gameActions, actions: _myProvider.image == '' ? menuActions : gameActions,
), ),
body: SafeArea( body: SafeArea(
child: Center( child: Center(child: content),
child: content ),
),
)
); );
} }
} }
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'dart:math' show Random;
class GetImagesList { class GetImagesList {
GetImagesList(); GetImagesList();
List _images; List _images = [];
init() async { init() async {
await imagesFromLocalFile(); await imagesFromLocalFile();
......
...@@ -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.2.0" version: "3.3.0"
async: async:
dependency: transitive dependency: transitive
description: description:
...@@ -49,21 +49,21 @@ packages: ...@@ -49,21 +49,21 @@ packages:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0" version: "1.16.0"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
name: crypto name: crypto
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0" version: "1.3.0"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
...@@ -80,7 +80,7 @@ packages: ...@@ -80,7 +80,7 @@ packages:
name: image name: image
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.1" version: "3.2.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
...@@ -94,7 +94,7 @@ packages: ...@@ -94,7 +94,7 @@ packages:
name: material_color_utilities name: material_color_utilities
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.3" version: "0.1.4"
meta: meta:
dependency: transitive dependency: transitive
description: description:
...@@ -115,21 +115,21 @@ packages: ...@@ -115,21 +115,21 @@ packages:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.1"
petitparser: petitparser:
dependency: transitive dependency: transitive
description: description:
name: petitparser name: petitparser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.4.0" version: "5.0.0"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.2" version: "6.0.3"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
...@@ -141,7 +141,7 @@ packages: ...@@ -141,7 +141,7 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.1" version: "1.8.2"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
...@@ -176,28 +176,28 @@ packages: ...@@ -176,28 +176,28 @@ packages:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.8" version: "0.4.9"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0" version: "1.3.1"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.1" version: "2.1.2"
xml: xml:
dependency: transitive dependency: transitive
description: description:
name: xml name: xml
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.3.1" version: "6.1.0"
sdks: sdks:
dart: ">=2.14.0 <3.0.0" dart: ">=2.17.0 <3.0.0"
flutter: ">=1.16.0" flutter: ">=1.16.0"
...@@ -4,7 +4,7 @@ publish_to: 'none' ...@@ -4,7 +4,7 @@ publish_to: 'none'
version: 1.0.0+1 version: 1.0.0+1
environment: environment:
sdk: ">=2.7.0 <3.0.0" sdk: ">=2.16.1 <3.0.0"
dependencies: dependencies:
flutter: flutter:
......
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:puzzlegame/main.dart';
void main() {
}