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

Merge branch '41-improve-categories-list' into 'master'

Resolve "Improve categories list"

Closes #41

See merge request !42
parents 6f25c843 e7eac87d
No related branches found
No related tags found
1 merge request!42Resolve "Improve categories list"
Pipeline #5664 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=1.2.32
app.versionCode=38
app.versionName=1.2.33
app.versionCode=39
Improve/enlarge categories list.
Améliorations/compléments sur liste de catégories.
......@@ -17,17 +17,22 @@ class FetchDataHelper {
void init() {
try {
final List<dynamic> rawCategories = GameData.data['categories'] as List<dynamic>;
for (var rawElement in rawCategories) {
final categoryCode = rawElement['code'].toString();
final categoryText = rawElement['text-fr'].toString();
final categoryEmoji = rawElement['emoji'].toString();
final Map<String, dynamic> rawCategories =
GameData.data['categories'] as Map<String, dynamic>;
rawCategories.forEach((categoryCode, categoryRawData) {
final categoryText = categoryRawData['text'].toString();
final rawEmojis = categoryRawData['emojis'] as List<dynamic>;
final categoryEmojis = [];
for (var emoji in rawEmojis) {
categoryEmojis.add(emoji);
}
_categories.add(Category(
key: categoryCode,
text: categoryText,
emoji: categoryEmoji,
emoji: categoryEmojis.first,
));
}
});
} catch (e) {
printlog("$e");
}
......
This diff is collapsed.
......@@ -31,38 +31,41 @@ class WidgetCategory extends StatelessWidget {
width: borderWidth,
),
),
child: Column(
children: [
SizedBox(
height: 100,
child: SizedBox(
height: 180,
child: TextButton(
onPressed: () {
final GameCubit gameCubit = BlocProvider.of<GameCubit>(context);
gameCubit.pickNewCategory();
},
child: Text(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
currentGame.category.text,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 30,
fontSize: 35,
fontWeight: FontWeight.w600,
color: Colors.black,
height: 1,
),
),
const SizedBox(
height: 12,
),
),
SizedBox.square(
dimension: 80,
child: Text(
Text(
currentGame.category.emoji,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 50,
),
),
),
],
),
),
),
);
},
);
......
......@@ -61,10 +61,10 @@ packages:
dependency: "direct main"
description:
name: easy_localization
sha256: "432698c31a488dd64c56d4759f20d04844baba5e9e4f2cb1abb9676257918b17"
sha256: fa59bcdbbb911a764aa6acf96bbb6fa7a5cf8234354fc45ec1a43a0349ef0201
url: "https://pub.dev"
source: hosted
version: "3.0.6"
version: "3.0.7"
easy_logger:
dependency: transitive
description:
......@@ -114,10 +114,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
version: "4.0.0"
flutter_localizations:
dependency: transitive
description: flutter
......@@ -172,10 +172,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "4.0.0"
material_color_utilities:
dependency: transitive
description:
......
......@@ -3,7 +3,7 @@ description: A PetitBac game application.
publish_to: "none"
version: 1.2.32+38
version: 1.2.33+39
environment:
sdk: "^3.0.0"
......@@ -22,7 +22,7 @@ dependencies:
unicons: ^2.1.1
dev_dependencies:
flutter_lints: ^3.0.1
flutter_lints: ^4.0.0
flutter:
uses-material-design: true
......
#!/usr/bin/env bash
command -v jq >/dev/null 2>&1 || { echo >&2 "I require jq (json parser) but it's not installed. Aborting."; exit 1; }
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
BASE_DIR="$(dirname "${CURRENT_DIR}")"
# CSV source file for categories
SOURCE_CATEGORIES_CSV_FILE="${CURRENT_DIR}/categories.csv"
# Temp json file
OUTPUT_CATEGORIES_JSON_FILE="${CURRENT_DIR}/categories.json"
touch "${OUTPUT_CATEGORIES_JSON_FILE}"
echo "Sorting source csv file..."
cat "${SOURCE_CATEGORIES_CSV_FILE}" | sort | uniq >"${SOURCE_CATEGORIES_CSV_FILE}.tmp"
mv "${SOURCE_CATEGORIES_CSV_FILE}.tmp" "${SOURCE_CATEGORIES_CSV_FILE}"
echo "Building categories json file..."
OUTPUT_CATEGORIES_JSON_FILE_TMP="${OUTPUT_CATEGORIES_JSON_FILE}.tmp"
echo "{" > "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " \"categories\": {" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
FIRST_WORD=1
while read -r LINE; do
if [[ -n "${LINE}" ]]; then
echo "- ${LINE}"
CATEGORY_THEME="$(echo "${LINE}" | cut -d';' -f1)"
CATEGORY_EMOJIS="$(echo "${LINE}" | cut -d';' -f2)"
CATEGORY_TEXT="$(echo "${LINE}" | cut -d';' -f3)"
CATEGORY_TAGS="$(echo "${LINE}" | cut -d';' -f4)"
CATEGORY_CODE="$(echo "${CATEGORY_TEXT}" | md5sum | awk '{print $1;}')"
if [[ ${FIRST_WORD} -eq 0 ]]; then
echo " ," >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
fi
echo " \"${CATEGORY_CODE}\": {" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " \"theme\": \"${CATEGORY_THEME}\"," >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " \"text\": \"${CATEGORY_TEXT}\"," >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " \"tags\": [" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
if [ ! -z "${CATEGORY_EMOJIS}" ]; then
echo " \"${CATEGORY_TAGS}\"" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
fi
echo " ]," >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " \"emojis\": [" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
if [ ! -z "${CATEGORY_EMOJIS}" ]; then
echo " \"${CATEGORY_EMOJIS}\"" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
fi
echo " ]" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo " }" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
FIRST_WORD=0
fi
done < <(cat "${SOURCE_CATEGORIES_CSV_FILE}")
echo " }" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo "}" >> "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo "Formatting JSON data file..."
cat "${OUTPUT_CATEGORIES_JSON_FILE_TMP}" | jq > "${OUTPUT_CATEGORIES_JSON_FILE}"
rm "${OUTPUT_CATEGORIES_JSON_FILE_TMP}"
echo "Injecting json file in game_data.dart..."
GAME_DATA_DART_FILE="${BASE_DIR}/lib/data/game_data.dart"
echo "class GameData {" >"${GAME_DATA_DART_FILE}"
echo " static const Map<String, dynamic> data = $(cat "${OUTPUT_CATEGORIES_JSON_FILE}");" >>"${GAME_DATA_DART_FILE}"
echo "}" >>"${GAME_DATA_DART_FILE}"
echo "Formatting dart source code file..."
dart format "${GAME_DATA_DART_FILE}"
# Delete json temp file
rm "${OUTPUT_CATEGORIES_JSON_FILE}"
echo "done."
BASE;📦;Chose ou objet;*
BASE;🎨;Couleur;*
BASE;🚗;Élément de véhicules;*
BASE;💐;Fleur;*
BASE;🚂;Moyen de transport;*
BASE;🥣;Objet du quotidien;*
BASE;🛠️;Outil (de bricolage);*
BASE;🙃;Qualité ou défaut;*
BASE;💻;Site internet;*
BASE;™️;Marque;*
BASE;👖;Vêtement;*
CARACTERISTIQUE;🤢;Mauvais pour la santé;*
CARACTERISTIQUE;🏭;Mauvais pour l'environement;*
CARACTERISTIQUE;📌;Quelque chose de pointu;*
CARACTERISTIQUE;⚽;Quelque chose de rond;*
CARACTERISTIQUE;🏚️;Quelque chose de vieux;*
CARACTERISTIQUE;🪨;Quelque chose qui coule;*
CARACTERISTIQUE;🪵;Quelque chose qui flotte;*
CARACTERISTIQUE;🪁;Quelque chose qui vole;*
CARACTERISTIQUE;🙀;Qui fait peur;*
CARACTERISTIQUE;🥰;Qui fait plaisir;*
CARACTERISTIQUE;🪥;Qui gratte;*
CARACTERISTIQUE;🤮;Qui n'est pas bon;*
CARACTERISTIQUE;💩;Qui sent mauvais;*
COULEUR;⬜;Quelque chose de blanc;*
COULEUR;🟦;Quelque chose de bleu;*
COULEUR;🟨;Quelque chose de jaune;*
COULEUR;🟥;Quelque chose de rouge;*
COULEUR;🟩;Quelque chose de vert;*
CULTURE;🎭;Acteur ou actrice;*
CULTURE;🧑‍🏫;Auteur de littérature;*
CULTURE;🎤;Chanteur ou chanteuse;*
CULTURE;🧪;Élément chimique;*
CULTURE;🧑‍💼;Femme ou homme politique;*
CULTURE;🎥;Film;*
CULTURE;🧞‍♂️;Héros de mythologie;*
CULTURE;🦸;Héros fictif;*
CULTURE;🎸;Instrument de musique;*
CULTURE;🎲;Jeu (de société);*
CULTURE;🖇️;Métal;*
CULTURE;🗯️;Personnage de bande dessinée;*
CULTURE;🧜‍♀️;Personnage de dessin animé;*
CULTURE;🏅;Sport;*
CULTURE;📘;Titre de livre;*
DICTIONNAIRE;8️⃣;Mot de plus de 8 lettres;*
DICTIONNAIRE;🩻;Mot de 4 lettres;*
GEOGRAPHIE;🗽;Capitale;*
GEOGRAPHIE;🇫🇷;Département français;*
GEOGRAPHIE;🗺️;Pays;*
GEOGRAPHIE;🏙️;Ville;*
GEOGRAPHIE;🇫🇷;Ville française;*
HUMAIN;👷;Métier;*
HUMAIN;🧑‍⚕️;Métier dont rêvent les enfants;*
HUMAIN;🖐️;Partie du corps humain;*
HUMAIN;🤴;Personnage historique;*
HUMAIN;👧🏼;Prénom fille;*
HUMAIN;👦🏼;Prénom garçon;*
INSOLITE;🔔;Bruit ou son;*
INSOLITE;🎁;Cadeau de Noël ou d'anniversaire;*
INSOLITE;🎁;Cadeau nul;*
INSOLITE;🖕;Injure originale;*
INSOLITE;📍;Lieu incontournable;*
INSOLITE;🗣️;Mot qui se termine en -ard;*
INSOLITE;🗣️;Mot qui se termine en -asse;*
INSOLITE;🗣️;Mots qui riment avec ouille;*
INSOLITE;🃏;Objet insolite;*
INSOLITE;🪦;On peut y planquer un corps;*
INSOLITE;🤬;Un gros mot;*
INSOLITE;🥴;Un truc moche;*
LIEU;🏖️;À la plage;*
LIEU;🌊;Dans la mer;*
LIEU;👝;Dans sa poche;*
LIEU;🏕️;Dans un camping;*
LIEU;🎒;Dans un cartable;*
LIEU;🌲;Dans une forêt;*
LIEU;🏠;Dans une maison;*
LIEU;🚙;Dans une voiture;*
LIEU;🧊;Dans un frigo;*
LIEU;👜;Dans un sac à main;*
MONDE;🇬🇧;Mot en anglais;*
MONDE;🇪🇸;Mot en espagnol;*
NATURE;🐒;Animal;*
NATURE;🌳;Arbre;*
NATURE;🪐;Dans l’univers (étoile, planète, constellation, ...);*
NATURE;🌊;Fleuve, rivière, lac, mer ou océan;*
NATURE;🍅;Fruit ou légume;*
NATURE;🐞;Insecte;*
NATURE;🐇;Mammifère;*
NATURE;💎;Minéral ou pierre précieuse;*
NATURE;🐦;Oiseau;*
NATURE;🐟;Poisson;*
NOURRITURE;🥤;Boisson;*
NOURRITURE;🍰;Dessert;*
NOURRITURE;🌶️;Épice / Herbe aromatique;*
NOURRITURE;🧀;Fromage;*
NOURRITURE;🍲;Plat;*
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment