From fda31778a2cea624412d0755d17472b60541e795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Thu, 17 Mar 2022 15:50:31 +0100 Subject: [PATCH] Improve layout --- android/gradle.properties | 4 +- assets/icons/key.png | Bin 0 -> 2662 bytes icons/build_game_icons.sh | 1 + icons/key.svg | 2 + lib/layout/board.dart | 8 ++-- lib/layout/game.dart | 4 +- lib/layout/keyboard.dart | 78 +++++++++++++++++++++++-------------- lib/layout/parameters.dart | 8 ++-- lib/screens/home.dart | 2 +- 9 files changed, 64 insertions(+), 43 deletions(-) create mode 100644 assets/icons/key.png create mode 100644 icons/key.svg diff --git a/android/gradle.properties b/android/gradle.properties index bc2d95e..818e87b 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.1 -app.versionCode=1 +app.versionName=0.0.2 +app.versionCode=2 diff --git a/assets/icons/key.png b/assets/icons/key.png new file mode 100644 index 0000000000000000000000000000000000000000..ff392f68a742723127b23e7a863f877f04da2fc5 GIT binary patch literal 2662 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	U1UhUM%Lw|76=bWFZeftP_H z!7;ui|LVn<**7we?_(2anCx)SimS)vRK!NsgA8lr8m<LiKlZF_@iIm(hV6`g42!2V zNgZIwk$$noa1|rtgEz0+jw^1IU2OM^;SGyW_XK4IBcYp81q?CL8^TTRd9-96V0sha z&MVC<^?~7!LAq}CnTZ^I^O+aia#-IxH%f|GBHDd-R;CDp#PU+cDY0(3I;N%^%oe!~ zYZkBVb>y{Tm}2%Iieb~nO-HUj=4aH%b+{Y(vDWAMB|iq^8YhOk$NJd*GI$71vYxra z_FzW9+KxpG5rRs&YxF*9^B!ZUxGmJga7|D7()pGjyBY4}cG^j=mg->+IF@<oSm%`l zjfTCt3;C8ra<E=p(7RvW;k0~>Oi=d9nC>>_f>IM^vuVe&bpI(b{4L$m8+SQDouS0_ zfvoO^Y151T9A=m!>gX1CF!s@VZh`fSJ#?==lILRRbB-+EXengN>M*@`^4f#Kj1^2N z=a0txsAlNdwo&%K9mC<=KVKLo8}qIFE&Ryiiw(mPhBl7#YzB>wCuBZOXM3^rV>iQ$ z356bK7EEVWaGkd`L-^|^e|CpkKU$ey$Y}luI?rtI;hWe4-2)sA<@YO#8UOuK-@Egm b{`Pvtx}KB+8Qe;ppa!I;tDnm{r-UW|E<<vP literal 0 HcmV?d00001 diff --git a/icons/build_game_icons.sh b/icons/build_game_icons.sh index 39fada6..2fddd00 100755 --- a/icons/build_game_icons.sh +++ b/icons/build_game_icons.sh @@ -58,6 +58,7 @@ build_icon ${CURRENT_DIR}/button_back.svg ${BASE_DIR}/assets/icons/button_back build_icon ${CURRENT_DIR}/button_help.svg ${BASE_DIR}/assets/icons/button_help.png build_icon ${CURRENT_DIR}/button_start.svg ${BASE_DIR}/assets/icons/button_start.png build_icon ${CURRENT_DIR}/game_win.svg ${BASE_DIR}/assets/icons/game_win.png +build_icon ${CURRENT_DIR}/key.svg ${BASE_DIR}/assets/icons/key.png build_icon ${CURRENT_DIR}/lang_fr.svg ${BASE_DIR}/assets/icons/lang_fr.png build_icon ${CURRENT_DIR}/length_5.svg ${BASE_DIR}/assets/icons/length_5.png diff --git a/icons/key.svg b/icons/key.svg new file mode 100644 index 0000000..4ce7f70 --- /dev/null +++ b/icons/key.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient id="radialGradient1525" cx="28.886" cy="23.061" r="50.92" gradientTransform="matrix(1.0318 1.378 -.79998 .59897 23.21 -30.64)" gradientUnits="userSpaceOnUse"><stop stop-color="#adadad" offset="0"/><stop stop-color="#e8e8e8" offset="1"/></radialGradient></defs><rect x=".17153" y=".2307" width="101.84" height="101.77" ry="0" fill="url(#radialGradient1525)" stroke="#000" stroke-width="2.0362"/></svg> diff --git a/lib/layout/board.dart b/lib/layout/board.dart index b700b62..bb72265 100644 --- a/lib/layout/board.dart +++ b/lib/layout/board.dart @@ -57,7 +57,7 @@ class Board { List<String> tips = GameUtils.getTips(myProvider, word); - List<Column> tableCells = []; + List<TableCell> tableCells = []; for (int colIndex = 0; colIndex < wordLength; colIndex++) { String cellValue = ' '; if (word.length > colIndex) { @@ -70,8 +70,8 @@ class Board { } tableCells.add( - Column( - children: [ buildCellWidget(cellValue, cellTip) ] + TableCell( + child: buildCellWidget(cellValue, cellTip) ) ); }; @@ -83,7 +83,7 @@ class Board { } return Container( - margin: EdgeInsets.symmetric(horizontal: 30), + margin: EdgeInsets.symmetric(horizontal: 40), padding: EdgeInsets.all(2), child: Table( diff --git a/lib/layout/game.dart b/lib/layout/game.dart index 99adcc3..d305e99 100644 --- a/lib/layout/game.dart +++ b/lib/layout/game.dart @@ -27,8 +27,8 @@ class Game { ); } - static FlatButton buildRestartGameButton(Data myProvider) { - return FlatButton( + static TextButton buildRestartGameButton(Data myProvider) { + return TextButton( child: Container( child: Image( image: AssetImage('assets/icons/button_back.png'), diff --git a/lib/layout/keyboard.dart b/lib/layout/keyboard.dart index 2aaa53a..16ce8dd 100644 --- a/lib/layout/keyboard.dart +++ b/lib/layout/keyboard.dart @@ -15,44 +15,62 @@ class Keyboard { ]; Widget buildKeyWidget(String key) { - String displayedText = key; + String keyText = key; if (key == '<') { - displayedText = '⬅️'; + keyText = '⬅️'; } else if (key == '!') { - displayedText = '☑️'; + keyText = '☑️'; } Color keyColor = Colors.black; - return FlatButton( - child: Text( - displayedText, - style: TextStyle( - color: keyColor, - fontSize: 30.0, - fontWeight: FontWeight.w800, + if (key == ' ') { + return SizedBox(); + } + + return Stack( + alignment: Alignment.center, + children: <Widget>[ + Image( + image: AssetImage('assets/icons/key.png'), + fit: BoxFit.fill + ), + Center( + child: TextButton( + style: TextButton.styleFrom( + padding: const EdgeInsets.all(0), + ), + child: Text( + keyText, + style: TextStyle( + color: keyColor, + fontSize: 30.0, + fontWeight: FontWeight.w800, + ), + textAlign: TextAlign.center + ), + onPressed: () { + if (key == '<') { + GameUtils.removeLetter(myProvider); + } else if (key == '!') { + GameUtils.submitWord(myProvider); + } else if (key != ' ') { + GameUtils.addLetter(myProvider, key); + } + }, + ) ), - textAlign: TextAlign.center - ), - onPressed: () { - if (key == '<') { - GameUtils.removeLetter(myProvider); - } else if (key == '!') { - GameUtils.submitWord(myProvider); - } else if (key != ' ') { - GameUtils.addLetter(myProvider, key); - } - }, + ] ); } List<TableRow> tableRows = []; keys.forEach((row) { - List<Column> tableCells = []; + List<TableCell> tableCells = []; row.forEach((key) { tableCells.add( - Column( - children: [ buildKeyWidget(key) ] + TableCell( + child: buildKeyWidget(key), ) ); }); @@ -68,12 +86,12 @@ class Keyboard { padding: EdgeInsets.all(2), child: Table( - defaultVerticalAlignment: TableCellVerticalAlignment.bottom, - border: TableBorder.all( - width: 2.0, - color: Colors.blue, - style: BorderStyle.solid, - ), + defaultVerticalAlignment: TableCellVerticalAlignment.middle, + // border: TableBorder.all( + // width: 2.0, + // color: Colors.blue, + // style: BorderStyle.solid, + // ), children: tableRows, ) ); diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart index 9a6f7d4..3a2ae03 100644 --- a/lib/layout/parameters.dart +++ b/lib/layout/parameters.dart @@ -48,7 +48,7 @@ class Parameters { decorationImage, Column( children: [ - FlatButton( + TextButton( child: Container( child: Image( image: AssetImage('assets/icons/button_start.png'), @@ -91,15 +91,15 @@ class Parameters { ); } - static FlatButton _buildParameterButton(Data myProvider, String parameterCode, String parameterValue) { + static TextButton _buildParameterButton(Data myProvider, String parameterCode, String parameterValue) { String currentValue = myProvider.getParameterValue(parameterCode).toString(); bool isActive = (parameterValue == currentValue); String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue + '.png'; - return FlatButton( - padding: EdgeInsets.all(2), + return TextButton( child: Container( + padding: EdgeInsets.all(2), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10), diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 1381d16..03c6cd9 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -31,7 +31,7 @@ class _HomeState extends State<Home> { if (myProvider.gameIsRunning) { menuActions = [ - FlatButton( + TextButton( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), -- GitLab