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

Merge branch '70-use-flutter-linter-and-apply-lints' into 'master'

Resolve "Use flutter linter and apply lints"

Closes #70

See merge request !71
parents e73f570c 2df22a50
Branches
Tags Release_0.1.35_59
1 merge request!71Resolve "Use flutter linter and apply lints"
Pipeline #5117 passed
include: package:flutter_lints/flutter.yaml
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.1.34 app.versionName=0.1.35
app.versionCode=58 app.versionCode=59
Add automatic flutter linter. Apply code lints. Update dependencies.
Ajout d'un correcteur automatique de code. Application des corrections. Mise à jour des dépendances.
...@@ -10,10 +10,12 @@ import 'package:wordguessing/screens/home.dart'; ...@@ -10,10 +10,12 @@ import 'package:wordguessing/screens/home.dart';
void main() { void main() {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((value) => runApp(MyApp())); .then((value) => runApp(const MyApp()));
} }
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
const MyApp({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ChangeNotifierProvider( return ChangeNotifierProvider(
...@@ -24,15 +26,15 @@ class MyApp extends StatelessWidget { ...@@ -24,15 +26,15 @@ class MyApp extends StatelessWidget {
theme: ThemeData( theme: ThemeData(
primarySwatch: Colors.blue, primarySwatch: Colors.blue,
), ),
home: Home(), home: const Home(),
onGenerateRoute: (settings) { onGenerateRoute: (settings) {
switch (settings.name) { switch (settings.name) {
case '/game-pick-word': case '/game-pick-word':
return MaterialPageRoute(builder: (context) => GamePickWordPage()); return MaterialPageRoute(builder: (context) => const GamePickWordPage());
case '/game-pick-image': case '/game-pick-image':
return MaterialPageRoute( return MaterialPageRoute(
builder: (context) => GamePickImagePage(), builder: (context) => const GamePickImagePage(),
); );
default: default:
......
...@@ -11,13 +11,14 @@ class Word { ...@@ -11,13 +11,14 @@ class Word {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
return { return {
'key': this.key, 'key': key,
'text': this.text, 'text': text,
'images': this.images.toString(), 'images': images.toString(),
}; };
} }
@override
String toString() { String toString() {
return this.toJson().toString(); return toJson().toString();
} }
} }
...@@ -4,6 +4,8 @@ import 'package:provider/provider.dart'; ...@@ -4,6 +4,8 @@ import 'package:provider/provider.dart';
import 'package:wordguessing/provider/data.dart'; import 'package:wordguessing/provider/data.dart';
class Game extends StatelessWidget { class Game extends StatelessWidget {
const Game({super.key});
final int countWords = 4; final int countWords = 4;
Future<void> startGame(Data myProvider, String lang) async { Future<void> startGame(Data myProvider, String lang) async {
...@@ -48,7 +50,7 @@ class Game extends StatelessWidget { ...@@ -48,7 +50,7 @@ class Game extends StatelessWidget {
), ),
child: Text( child: Text(
text, text,
style: TextStyle( style: const TextStyle(
fontSize: 25, fontSize: 25,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Colors.black, color: Colors.black,
...@@ -59,12 +61,12 @@ class Game extends StatelessWidget { ...@@ -59,12 +61,12 @@ class Game extends StatelessWidget {
String getGoodAnswersString(Data myProvider) { String getGoodAnswersString(Data myProvider) {
final int count = myProvider.questionsCount - 1; final int count = myProvider.questionsCount - 1;
return '👍 ' + myProvider.goodAnswers.toString() + '/' + count.toString(); return '👍 ${myProvider.goodAnswers}/$count';
} }
String getWrongAnswersString(Data myProvider) { String getWrongAnswersString(Data myProvider) {
final int count = myProvider.questionsCount - 1; final int count = myProvider.questionsCount - 1;
return '🚩 ' + myProvider.wrongAnswers.toString() + '/' + count.toString(); return '🚩 ${myProvider.wrongAnswers}/$count';
} }
Widget buildScoreContainer(Data myProvider) { Widget buildScoreContainer(Data myProvider) {
...@@ -93,8 +95,7 @@ class Game extends StatelessWidget { ...@@ -93,8 +95,7 @@ class Game extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( ElevatedButton(
child: ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
foregroundColor: Colors.teal, foregroundColor: Colors.teal,
backgroundColor: Colors.teal, backgroundColor: Colors.teal,
...@@ -109,10 +110,8 @@ class Game extends StatelessWidget { ...@@ -109,10 +110,8 @@ class Game extends StatelessWidget {
), ),
onPressed: () => startGame(myProvider, 'fr'), onPressed: () => startGame(myProvider, 'fr'),
), ),
),
const SizedBox(height: 15), const SizedBox(height: 15),
Container( ElevatedButton(
child: ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
foregroundColor: Colors.teal, foregroundColor: Colors.teal,
backgroundColor: Colors.teal, backgroundColor: Colors.teal,
...@@ -127,7 +126,6 @@ class Game extends StatelessWidget { ...@@ -127,7 +126,6 @@ class Game extends StatelessWidget {
), ),
onPressed: () => startGame(myProvider, 'en'), onPressed: () => startGame(myProvider, 'en'),
), ),
)
], ],
); );
} }
...@@ -161,7 +159,6 @@ class Game extends StatelessWidget { ...@@ -161,7 +159,6 @@ class Game extends StatelessWidget {
); );
return SizedBox.expand( return SizedBox.expand(
child: Container(
child: FittedBox( child: FittedBox(
fit: BoxFit.contain, fit: BoxFit.contain,
alignment: Alignment.center, alignment: Alignment.center,
...@@ -171,7 +168,6 @@ class Game extends StatelessWidget { ...@@ -171,7 +168,6 @@ class Game extends StatelessWidget {
child: pageContent, child: pageContent,
), ),
), ),
),
); );
} }
......
...@@ -6,6 +6,9 @@ import 'package:wordguessing/screens/game.dart'; ...@@ -6,6 +6,9 @@ import 'package:wordguessing/screens/game.dart';
import 'package:wordguessing/utils/random_pick_words.dart'; import 'package:wordguessing/utils/random_pick_words.dart';
class GamePickImagePage extends Game { class GamePickImagePage extends Game {
const GamePickImagePage({super.key});
@override
Future<void> pickData(Data myProvider) async { Future<void> pickData(Data myProvider) async {
final RandomPickWords randomPickWords = RandomPickWords(); final RandomPickWords randomPickWords = RandomPickWords();
Word word; Word word;
...@@ -22,9 +25,9 @@ class GamePickImagePage extends Game { ...@@ -22,9 +25,9 @@ class GamePickImagePage extends Game {
myProvider.updateWord(word); myProvider.updateWord(word);
final List<Word> images = []; final List<Word> images = [];
words.forEach((element) { for (var element in words) {
images.add(element); images.add(element);
}); }
myProvider.updateImages(images); myProvider.updateImages(images);
} }
...@@ -37,12 +40,11 @@ class GamePickImagePage extends Game { ...@@ -37,12 +40,11 @@ class GamePickImagePage extends Game {
const double imageSize = 130; const double imageSize = 130;
String imageAsset = 'assets/placeholder.png'; String imageAsset = 'assets/placeholder.png';
if ((word.images.length != 0)) { if ((word.images.isNotEmpty)) {
imageAsset = 'assets/images/' + word.images[0]; imageAsset = 'assets/images/${word.images[0]}';
} }
return Container( return TextButton(
child: TextButton(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
...@@ -62,7 +64,6 @@ class GamePickImagePage extends Game { ...@@ -62,7 +64,6 @@ class GamePickImagePage extends Game {
onPressed: () { onPressed: () {
checkWord(myProvider, word); checkWord(myProvider, word);
}, },
),
); );
} }
...@@ -119,7 +120,7 @@ class GamePickImagePage extends Game { ...@@ -119,7 +120,7 @@ class GamePickImagePage extends Game {
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: Text( child: Text(
word.text, word.text,
style: TextStyle( style: const TextStyle(
fontSize: 30, fontSize: 30,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Colors.white, color: Colors.white,
...@@ -129,6 +130,7 @@ class GamePickImagePage extends Game { ...@@ -129,6 +130,7 @@ class GamePickImagePage extends Game {
); );
} }
@override
List<Widget> buildPageContent(Data myProvider) { List<Widget> buildPageContent(Data myProvider) {
return <Widget>[ return <Widget>[
buildTextItemBlock(myProvider), buildTextItemBlock(myProvider),
......
...@@ -6,6 +6,9 @@ import 'package:wordguessing/screens/game.dart'; ...@@ -6,6 +6,9 @@ import 'package:wordguessing/screens/game.dart';
import 'package:wordguessing/utils/random_pick_words.dart'; import 'package:wordguessing/utils/random_pick_words.dart';
class GamePickWordPage extends Game { class GamePickWordPage extends Game {
const GamePickWordPage({super.key});
@override
Future<void> pickData(Data myProvider) async { Future<void> pickData(Data myProvider) async {
final RandomPickWords randomPickWords = RandomPickWords(); final RandomPickWords randomPickWords = RandomPickWords();
Word word; Word word;
...@@ -33,7 +36,7 @@ class GamePickWordPage extends Game { ...@@ -33,7 +36,7 @@ class GamePickWordPage extends Game {
String imageAsset = 'assets/placeholder.png'; String imageAsset = 'assets/placeholder.png';
if (image != '') { if (image != '') {
imageAsset = 'assets/images/' + image; imageAsset = 'assets/images/$image';
} }
return Container( return Container(
...@@ -96,7 +99,7 @@ class GamePickWordPage extends Game { ...@@ -96,7 +99,7 @@ class GamePickWordPage extends Game {
), ),
child: Text( child: Text(
word.text, word.text,
style: TextStyle( style: const TextStyle(
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Colors.white, color: Colors.white,
...@@ -114,7 +117,7 @@ class GamePickWordPage extends Game { ...@@ -114,7 +117,7 @@ class GamePickWordPage extends Game {
List<Word> otherWords = myProvider.otherWords; List<Word> otherWords = myProvider.otherWords;
if ((word == null) || (otherWords.length != (countWords - 1))) { if ((word == null) || (otherWords.length != (countWords - 1))) {
return Column(); return const Column();
} }
List<Word> words = [ List<Word> words = [
...@@ -153,9 +156,10 @@ class GamePickWordPage extends Game { ...@@ -153,9 +156,10 @@ class GamePickWordPage extends Game {
); );
} }
@override
List<Widget> buildPageContent(Data myProvider) { List<Widget> buildPageContent(Data myProvider) {
return <Widget>[ return <Widget>[
(myProvider.images.length != 0) (myProvider.images.isNotEmpty)
? buildImageItemsBlock(myProvider.images[0]) ? buildImageItemsBlock(myProvider.images[0])
: const SizedBox.shrink(), : const SizedBox.shrink(),
const SizedBox(height: 2), const SizedBox(height: 2),
......
...@@ -4,6 +4,8 @@ import 'package:provider/provider.dart'; ...@@ -4,6 +4,8 @@ import 'package:provider/provider.dart';
import 'package:wordguessing/provider/data.dart'; import 'package:wordguessing/provider/data.dart';
class Home extends StatelessWidget { class Home extends StatelessWidget {
const Home({super.key});
static const String id = 'home'; static const String id = 'home';
@override @override
...@@ -13,7 +15,7 @@ class Home extends StatelessWidget { ...@@ -13,7 +15,7 @@ class Home extends StatelessWidget {
Container buildMenuItemContainer(String code, Color color) { Container buildMenuItemContainer(String code, Color color) {
const double imageSize = 150; const double imageSize = 150;
final String imageAsset = 'assets/menu/' + code + '.png'; final String imageAsset = 'assets/menu/$code.png';
return Container( return Container(
margin: const EdgeInsets.all(2), margin: const EdgeInsets.all(2),
...@@ -35,7 +37,7 @@ class Home extends StatelessWidget { ...@@ -35,7 +37,7 @@ class Home extends StatelessWidget {
myProvider.resetGame(); myProvider.resetGame();
Navigator.pushNamed( Navigator.pushNamed(
context, context,
'/' + code, '/$code',
); );
}, },
), ),
......
...@@ -24,13 +24,13 @@ class RandomPickWords { ...@@ -24,13 +24,13 @@ class RandomPickWords {
wordsMap.forEach((key, data) { wordsMap.forEach((key, data) {
final List<String> images = []; final List<String> images = [];
(data['images'] as List<dynamic>).forEach((image) { for (var image in (data['images'] as List<dynamic>)) {
images.add(image as String); images.add(image as String);
}); }
images.shuffle(); images.shuffle();
if (images.length != 0) { if (images.isNotEmpty) {
wordList.add(Word( wordList.add(Word(
key: key, key: key,
text: data[lang] ?? '', text: data[lang] ?? '',
......
...@@ -22,22 +22,38 @@ packages: ...@@ -22,22 +22,38 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
url: "https://pub.dev"
source: hosted
version: "3.0.1"
lints:
dependency: transitive
description:
name: lints
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "3.0.0"
material_color_utilities: material_color_utilities:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.0" version: "0.8.0"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.10.0" version: "1.11.0"
nested: nested:
dependency: transitive dependency: transitive
description: description:
...@@ -67,14 +83,6 @@ packages: ...@@ -67,14 +83,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
version: "0.3.0"
sdks: sdks:
dart: ">=3.2.0-194.0.dev <4.0.0" dart: ">=3.2.0-0 <4.0.0"
flutter: ">=1.16.0" flutter: ">=1.16.0"
name: wordguessing name: wordguessing
description: A wordguessing game application. description: A wordguessing game application.
publish_to: 'none' publish_to: 'none'
version: 0.1.34+58 version: 0.1.35+59
environment: environment:
sdk: '^3.0.0' sdk: '^3.0.0'
...@@ -11,6 +11,9 @@ dependencies: ...@@ -11,6 +11,9 @@ dependencies:
sdk: flutter sdk: flutter
provider: ^6.0.5 provider: ^6.0.5
dev_dependencies:
flutter_lints: ^3.0.1
flutter: flutter:
uses-material-design: true uses-material-design: true
assets: assets:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment