From fb0317e2695eade971f11035dcfd53b5895f2ca2 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Tue, 7 Feb 2023 14:11:13 +0100 Subject: [PATCH] spare button --- assets/images/Spare_background.png | Bin 0 -> 6560 bytes lib/views/ingame_screen.dart | 4 +- lib/widgets/ingame_widgets.dart | 66 +++++++++++++++++++++++++---- 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 assets/images/Spare_background.png diff --git a/assets/images/Spare_background.png b/assets/images/Spare_background.png new file mode 100644 index 0000000000000000000000000000000000000000..8519dce01cfe6206ca418a22341f996339d70366 GIT binary patch literal 6560 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 SNNs=s0000 { ElevatedButton( onPressed: () { setState(() { - widgetHolder = FinalScoreBoard(); + widgetHolder = InGameCardThrow( + numberThrow: 2, + ); }); }, child: Text( diff --git a/lib/widgets/ingame_widgets.dart b/lib/widgets/ingame_widgets.dart index ddfbc7d..fb1dd3e 100644 --- a/lib/widgets/ingame_widgets.dart +++ b/lib/widgets/ingame_widgets.dart @@ -345,7 +345,9 @@ class _UserInGameState extends State { } class InGameCardThrow extends StatefulWidget { - const InGameCardThrow({Key? key}) : super(key: key); + final int numberThrow; + const InGameCardThrow({Key? key, required this.numberThrow}) + : super(key: key); @override State createState() => _InGameCardThrowState(); @@ -412,7 +414,9 @@ class _InGameCardThrowState extends State { image: "assets/images/image_user_red.png"), ], )), - NumberPad(), + NumberPad( + numberThrow: widget.numberThrow, + ), ], ), ); @@ -486,8 +490,45 @@ class StrikeButton extends StatelessWidget { } } +class SpareButton extends StatelessWidget { + final int currentSelected; + final IntCallback onSonChanged; + const SpareButton( + {Key? key, required this.onSonChanged, required this.currentSelected}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + onSonChanged(10); + }, + child: Container( + width: double.infinity, + height: 100, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/images/Spare_background.png"), + )), + child: Center( + child: Text( + "SPARE !", + style: GoogleFonts.roboto( + color: + currentSelected == 10 ? Colors.pink : CupertinoColors.black, + decoration: TextDecoration.none, + fontWeight: FontWeight.w900, + fontStyle: FontStyle.italic, + fontSize: 40), + )), + ), + ); + } +} + class NumberPad extends StatefulWidget { - const NumberPad({Key? key}) : super(key: key); + final int numberThrow; + const NumberPad({Key? key, required this.numberThrow}) : super(key: key); @override State createState() => _NumberPadState(); @@ -608,12 +649,19 @@ class _NumberPadState extends State { ], ), ), - StrikeButton( - currentSelected: NumSelected, - onSonChanged: (int newId) { - updateId(newId); - }, - ), + widget.numberThrow == 1 + ? StrikeButton( + currentSelected: NumSelected, + onSonChanged: (int newId) { + updateId(newId); + }, + ) + : SpareButton( + currentSelected: NumSelected, + onSonChanged: (int newId) { + updateId(newId); + }, + ) ], ); }