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

Clean some code, improve layout

parent b08d83f8
No related branches found
No related tags found
1 merge request!37Resolve "Clean some code"
Pipeline #1103 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.1.5
app.versionCode=29
app.versionName=0.1.6
app.versionCode=30
......@@ -3,7 +3,7 @@ import 'package:provider/provider.dart';
import '../provider/data.dart';
import '../utils/random_pick_word.dart';
import '../utils/get_image_from_word.dart';
import '../utils/random_pick_image.dart';
class GamePickWordPage extends StatelessWidget {
int _count = 4;
......@@ -73,56 +73,93 @@ class GamePickWordPage extends StatelessWidget {
}
}
Container _buildScoreContainer(Data myProvider) {
TextStyle style = TextStyle(
fontSize: 30,
Container _buildScoreItemContainer(String text, Color blockColor) {
Color backgroundColor = blockColor;
// Darken block color to get border color
double amount = 0.2;
final hsl = HSLColor.fromColor(blockColor);
final hslDark = hsl.withLightness((hsl.lightness - amount).clamp(0.0, 1.0));
Color borderColor = hslDark.toColor();
return Container(
margin: EdgeInsets.symmetric(horizontal: 15),
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: backgroundColor,
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: borderColor,
width: 4,
),
),
child: Text(
text,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
);
}
Container _buildScoreContainer(Data myProvider) {
return Container(
padding: EdgeInsets.all(5),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_buildScoreItemContainer(
'❓ ' + myProvider.questionsCount.toString(),
style: style,
Colors.white,
),
SizedBox(width: 30),
Text(
SizedBox(width: 20),
_buildScoreItemContainer(
'☺️ ' + myProvider.goodAnswers.toString(),
style: style,
Colors.green,
),
SizedBox(width: 30),
Text(
SizedBox(width: 20),
_buildScoreItemContainer(
'😟 ' + myProvider.wrongAnswers.toString(),
style: style,
Colors.orange,
),
],
),
);
}
Container _buildImageContainer(String image, Color color) {
Container _buildImageContainer(String image) {
String imageAsset = 'assets/placeholder.png';
if (image != null) {
imageAsset = 'assets/images/'+image;
}
return Container(
padding: EdgeInsets.all(5),
child: FlatButton(
color: Colors.teal,
child: Image(image: AssetImage(imageAsset)),
child: Container(
margin: EdgeInsets.all(2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: Border.all(
color: Colors.teal,
width: 8,
),
),
child: Image(
image: AssetImage(imageAsset),
width: 150,
height: 150,
fit: BoxFit.fill
),
),
),
);
}
Column _buildImageItemsBlock(List images) {
Color color = Colors.black;
if ((images == null) || (images.length != _count)) {
return Column();
}
......@@ -135,23 +172,23 @@ class GamePickWordPage extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildImageContainer(images[0], color),
_buildImageContainer(images[1], color),
_buildImageContainer(images[0]),
_buildImageContainer(images[1]),
],
),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildImageContainer(images[2], color),
_buildImageContainer(images[3], color),
_buildImageContainer(images[2]),
_buildImageContainer(images[3]),
],
)
],
);
}
Container _buildTextContainer(Data myProvider, Map word, Color color) {
Container _buildTextContainer(Data myProvider, Map word) {
return Container(
child: RaisedButton(
color: Colors.green,
......@@ -161,7 +198,7 @@ class GamePickWordPage extends StatelessWidget {
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w400,
color: color,
color: Colors.white,
),
),
onPressed: () { checkWord(myProvider, word); },
......@@ -173,8 +210,6 @@ class GamePickWordPage extends StatelessWidget {
Map word = myProvider.word;
List otherWords = myProvider.otherWords;
Color color = Colors.white;
if ((word == null) || (otherWords.length != (_count - 1))) {
return Column();
}
......@@ -196,56 +231,53 @@ class GamePickWordPage extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildTextContainer(myProvider, words[0], color),
_buildTextContainer(myProvider, words[0]),
SizedBox(width: 10),
_buildTextContainer(myProvider, words[1], color),
_buildTextContainer(myProvider, words[1]),
],
),
SizedBox(height: 10),
SizedBox(height: 5),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildTextContainer(myProvider, words[2], color),
_buildTextContainer(myProvider, words[2]),
SizedBox(width: 10),
_buildTextContainer(myProvider, words[3], color),
_buildTextContainer(myProvider, words[3]),
],
)
],
);
}
Column _buildStartGameButton(Data myProvider) {
Column _buildStartGameBlock(Data myProvider) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
child: RaisedButton(
color: Colors.green,
color: Colors.teal,
padding: EdgeInsets.all(35),
child: Text(
"🇫🇷",
style: TextStyle(
fontSize: 60,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
onPressed: () => startGame(myProvider, 'fr'),
),
),
SizedBox(height: 20),
SizedBox(height: 15),
Container(
child: RaisedButton(
color: Colors.green,
color: Colors.teal,
padding: EdgeInsets.all(35),
child: Text(
"🇬🇧",
style: TextStyle(
fontSize: 60,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
......@@ -280,7 +312,7 @@ class GamePickWordPage extends StatelessWidget {
_buildImageItemsBlock(_myProvider.images),
SizedBox(height: 2),
((_myProvider.word == null) || (_myProvider.word['key'] == '')) ?
_buildStartGameButton(_myProvider) :
_buildStartGameBlock(_myProvider) :
_buildScoreContainer(_myProvider),
SizedBox(height: 2),
_buildTextItemsBlock(_myProvider),
......
......@@ -8,6 +8,7 @@ class RandomPickImage {
List _images;
init(String word, int count) async {
_images = new List(count);
await imageFromLocalFile(word, count);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment