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