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

Upgrade flutter framework and dependencies, update code

parent 3729b010
No related branches found
No related tags found
1 merge request!26Resolve "Upgrade flutter framework"
Pipeline #2962 passed
This commit is part of merge request !26. Comments created here will be created in the context of that merge request.
......@@ -16,7 +16,7 @@ if (gradlePropertiesFile.exists()) {
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def appVersionCode = gradleProperties.getProperty('app.versionCode')
......@@ -41,14 +41,10 @@ if (keystorePropertiesFile.exists()) {
android {
compileSdkVersion 31
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
applicationId "org.benoitharrault.hangman"
minSdkVersion 21
targetSdkVersion 29
minSdkVersion 16
targetSdkVersion 30
versionCode appVersionCode.toInteger()
versionName appVersionName
archivesBaseName = "$applicationId" + "_" + "$versionCode"
......
......@@ -2,5 +2,5 @@ org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
android.enableR8=true
app.versionName=1.2.4
app.versionCode=15
app.versionName=1.2.5
app.versionCode=16
......@@ -11,7 +11,7 @@ class Data extends ChangeNotifier {
String _levelValue = defaultLevel;
// randomization
String _secretWord;
String _secretWord = '';
bool _searching = false;
String _clue = '';
List<String> _hiddenWord = [];
......@@ -35,19 +35,24 @@ class Data extends ChangeNotifier {
void _getPrefs() async {
await _sharedPrefs.init();
_gameModeValue = _sharedPrefs.gameMode ??
onlineGameMode.keys.firstWhere((k) => onlineGameMode[k].contains(_sharedPrefs.level),
_gameModeValue = onlineGameMode.keys.firstWhere(
(k) => onlineGameMode[k]?.contains(_sharedPrefs.level) ?? false,
orElse: () => false);
_levelValue = onlineGameMode[_gameModeValue].contains(_sharedPrefs.level)
_levelValue = onlineGameMode[_gameModeValue]?.contains(_sharedPrefs.level) ?? false
? _sharedPrefs.level
: onlineGameMode[_gameModeValue].first;
_victoryCount = _sharedPrefs.victoryCount ?? 0;
_defeatCount = _sharedPrefs.defeatCount ?? 0;
: onlineGameMode[_gameModeValue]?.first ?? '';
_victoryCount = _sharedPrefs.victoryCount;
_defeatCount = _sharedPrefs.defeatCount;
notifyListeners();
}
bool get gameModePref => _sharedPrefs.gameMode ?? false;
String get levelPref => _sharedPrefs.level ?? onlineGameMode[gameModePref].first;
bool get gameModePref => _sharedPrefs.gameMode;
String get levelPref => (_sharedPrefs.level != '')
? _sharedPrefs.level
: onlineGameMode[gameModePref]?.first ?? '';
void resetValues() => _getPrefs();
......@@ -66,7 +71,7 @@ class Data extends ChangeNotifier {
set updateGameMode(bool value) {
_gameModeValue = value;
setPrefGameMode = gameModeValue;
updateLevel = onlineGameMode[value].first;
updateLevel = onlineGameMode[value]?.first ?? '';
notifyListeners();
}
......@@ -95,8 +100,8 @@ class Data extends ChangeNotifier {
String get hiddenWord => _hiddenWord.join();
void updateHiddenWord(int index, String letra) {
_hiddenWord[index] = letra;
void updateHiddenWord(int index, String letter) {
_hiddenWord[index] = letter;
notifyListeners();
}
......@@ -147,7 +152,7 @@ class Data extends ChangeNotifier {
void resetGame() {
_errors = 0;
_secretWord = null;
_secretWord = '';
_clue = '';
_hiddenWord = [];
_usedLetters = [];
......
......@@ -15,7 +15,7 @@ class Game extends StatelessWidget {
do {
randompick = RandomPick(myProvider.levelPref);
await randompick.init();
if (randompick.word != null) {
if (randompick.word != '') {
myProvider.updateSecretWord = randompick.word;
myProvider.resetSuccessAndErrors();
myProvider.resetUsedLetters();
......@@ -108,7 +108,7 @@ class Game extends StatelessWidget {
}
class ImgGallow extends StatelessWidget {
const ImgGallow({Key key}) : super(key: key);
const ImgGallow({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
Data _myProvider = Provider.of<Data>(context);
......@@ -126,13 +126,13 @@ class ImgGallow extends StatelessWidget {
}
class HiddenWord extends StatelessWidget {
const HiddenWord({Key key}) : super(key: key);
const HiddenWord({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
Data _myProvider = Provider.of<Data>(context);
return FittedBox(
child: Text(
(_myProvider.hiddenWord.isEmpty || _myProvider.hiddenWord == null)
(_myProvider.hiddenWord.isEmpty || _myProvider.hiddenWord == '')
? 'UNEXPECTED ERROR'
: _myProvider.hiddenWord,
style: TextStyle(
......
......@@ -83,17 +83,18 @@ class Home extends StatelessWidget {
children: [
Text('Niveau'),
DropdownButton<String>(
value: _myProvider.levelValue ??
onlineGameMode[_myProvider.gameModeValue].first,
value: _myProvider.levelValue != ''
? _myProvider.levelValue
: onlineGameMode[_myProvider.gameModeValue]?.first,
items: onlineGameMode[_myProvider.gameModeValue]
.map<DropdownMenuItem<String>>((String value) {
?.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String value) =>
_myProvider.updateLevel = value,
onChanged: (String? value) =>
_myProvider.updateLevel = value ?? '',
),
],
),
......@@ -110,10 +111,8 @@ class Home extends StatelessWidget {
_myProvider.searching = true;
bool control = true;
await Game().pickWord(context, _myProvider);
if (_myProvider.secretWord == null ||
_myProvider.secretWord == '' ||
_myProvider.hiddenWord == null ||
(_myProvider.hiddenWord?.isEmpty ?? true)) {
if (_myProvider.secretWord == '' ||
_myProvider.hiddenWord == '') {
control = false;
var response = await Navigator.push(
context,
......
......@@ -9,16 +9,10 @@ const Map<bool, List<String>> onlineGameMode = {
const String defaultLevel = 'Thèmes';
//colores
// Colors
const int darkGreen = 0xff013220;
const int board = 0xff004D00;
const int accent = 0xffD81B60;
/*
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="pizarra">#004D00</color>
*/
// GameOver
enum GameOver { VICTORY, DEFEAT }
......@@ -29,14 +23,14 @@ extension GameOverExtension on GameOver {
GameOver.DEFEAT: 'Pendu !',
};
String get title => titles[this];
String get title => titles[this] ?? '?';
static const icons = {
GameOver.VICTORY: Icons.military_tech,
GameOver.DEFEAT: Icons.gavel,
};
IconData get icon => icons[this];
IconData get icon => icons[this] ?? Icons.error;
}
const victory = GameOver.VICTORY;
......
......@@ -13,9 +13,9 @@ class RandomPick {
final String level;
RandomPick(this.level);
String _url;
String _word;
String _clue;
String _url = '';
String _word = '';
String _clue = '';
final random = Random();
init() async {
......@@ -48,7 +48,7 @@ class RandomPick {
var html = parse(utf8.decode(response.bodyBytes));
Element element = html.getElementsByTagName('div').last;
String word = _validate(element.text);
if (word == null) {
if (word == '') {
throw Exception();
}
_word = word;
......@@ -56,21 +56,21 @@ class RandomPick {
throw Exception();
}
} catch (e) {
_word = null;
_word = '';
}
}
String _validate(String word) {
String wordToValidate = word.trim();
if (wordToValidate.contains(' ')) {
return null;
return '';
}
wordToValidate = removeDiacritics(wordToValidate);
wordToValidate = wordToValidate.toUpperCase();
wordToValidate = wordToValidate.replaceAll(RegExp('[0-9]'), '');
wordToValidate = wordToValidate.replaceAll(RegExp('[^A-Z]'), '');
if (wordToValidate.length < 3 || wordToValidate.length > 12) {
return null;
return '';
}
return wordToValidate;
}
......@@ -101,7 +101,11 @@ class RandomPick {
words.add(word);
}
String word = words[random.nextInt(words.length)];
_word = word ?? 'UNEXPECTED ERROR';
if (word != '') {
_word = word;
} else {
_word = 'UNEXPECTED ERROR';
}
} catch (e) {
_word = 'UNEXPECTED ERROR';
}
......
import 'package:shared_preferences/shared_preferences.dart';
class SharedPrefs {
static SharedPreferences _sharedPrefs;
static SharedPreferences? _sharedPrefs;
static const String _prefsGameMode = 'gameMode';
static const String _prefsLevel = 'level';
static const String _prefsVictoryCount = 'victoryCount';
......@@ -13,19 +13,19 @@ class SharedPrefs {
}
}
bool get gameMode => _sharedPrefs?.getBool(_prefsGameMode);
bool get gameMode => _sharedPrefs?.getBool(_prefsGameMode) ?? false;
set gameMode(bool value) => _sharedPrefs.setBool(_prefsGameMode, value);
set gameMode(bool value) => _sharedPrefs?.setBool(_prefsGameMode, value);
String get level => _sharedPrefs?.getString(_prefsLevel);
String get level => _sharedPrefs?.getString(_prefsLevel) ?? '';
set level(String value) => _sharedPrefs.setString(_prefsLevel, value);
set level(String value) => _sharedPrefs?.setString(_prefsLevel, value);
int get victoryCount => _sharedPrefs?.getInt(_prefsVictoryCount);
int get victoryCount => _sharedPrefs?.getInt(_prefsVictoryCount) ?? 0;
set victoryCount(int value) => _sharedPrefs?.setInt(_prefsVictoryCount, value);
int get defeatCount => _sharedPrefs?.getInt(_prefsDefeatCount);
int get defeatCount => _sharedPrefs?.getInt(_prefsDefeatCount) ?? 0;
set defeatCount(int value) => _sharedPrefs?.setInt(_prefsDefeatCount, value);
}
......@@ -2,7 +2,7 @@ import 'package:hangman/utils/constants.dart';
import 'package:flutter/material.dart';
class DialogFetchError extends StatelessWidget {
const DialogFetchError({Key key}) : super(key: key);
const DialogFetchError({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
......
......@@ -5,7 +5,7 @@ import '../utils/constants.dart';
import '../widgets/dialog_gameover.dart';
class LetterButtons extends StatelessWidget {
const LetterButtons({Key key}) : super(key: key);
const LetterButtons({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
......
......@@ -4,11 +4,11 @@ import 'package:flutter/services.dart' show SystemNavigator;
import '../screens/scores.dart';
class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
final AppBar appBar;
const MyAppBar({Key key, this.appBar}) : super(key: key);
final AppBar? appBar;
const MyAppBar({Key? key, this.appBar}) : super(key: key);
@override
Size get preferredSize => Size.fromHeight(appBar.preferredSize.height);
Size get preferredSize => Size.fromHeight(appBar?.preferredSize.height ?? 0.0);
@override
Widget build(BuildContext context) {
......
......@@ -49,7 +49,7 @@ packages:
name: csslib
url: "https://pub.dartlang.org"
source: hosted
version: "0.16.2"
version: "0.17.2"
diacritic:
dependency: "direct main"
description:
......@@ -99,21 +99,21 @@ packages:
name: html
url: "https://pub.dartlang.org"
source: hosted
version: "0.14.0+4"
version: "0.15.0"
http:
dependency: "direct main"
description:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.2"
version: "0.13.4"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.4"
version: "4.0.1"
js:
dependency: transitive
description:
......@@ -177,13 +177,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.11.1"
platform:
dependency: transitive
description:
......@@ -211,7 +204,7 @@ packages:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "4.3.3"
version: "6.0.3"
shared_preferences:
dependency: "direct main"
description:
......
......@@ -4,15 +4,15 @@ publish_to: 'none'
version: 1.1.3+1
environment:
sdk: ">=2.7.0 <3.0.0"
sdk: ">=2.16.1 <3.0.0"
dependencies:
flutter:
sdk: flutter
provider: ^4.3.2+3
provider: ^6.0.2
shared_preferences: ^2.0.6
html: ^0.14.0+4
http: ^0.12.2
html: ^0.15.0
http: ^0.13.4
diacritic: ^0.1.1
dev_dependencies:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment