Skip to content

Instantly share code, notes, and snippets.

@deven98
Created January 19, 2019 10:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deven98/891cd0128616d75f74fa87e2bc792c39 to your computer and use it in GitHub Desktop.
Save deven98/891cd0128616d75f74fa87e2bc792c39 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:solitaire_flutter/card_column.dart';
import 'package:solitaire_flutter/playing_card.dart';
import 'package:solitaire_flutter/transformed_card.dart';
// The deck of cards which accept the final cards (Ace to King)
class EmptyCardDeck extends StatefulWidget {
final CardSuit cardSuit;
final List<PlayingCard> cardsAdded;
final CardAcceptCallback onCardAdded;
final int columnIndex;
EmptyCardDeck({
@required this.cardSuit,
@required this.cardsAdded,
@required this.onCardAdded,
this.columnIndex,
});
@override
_EmptyCardDeckState createState() => _EmptyCardDeckState();
}
class _EmptyCardDeckState extends State<EmptyCardDeck> {
@override
Widget build(BuildContext context) {
return DragTarget<Map>(
builder: (context, listOne, listTwo) {
return widget.cardsAdded.length == 0
? Opacity(
opacity: 0.7,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.0),
color: Colors.white,
),
height: 60.0,
width: 40,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Center(
child: Container(
height: 20.0,
child: _suitToImage(),
),
)
],
),
),
),
)
: TransformedCard(
playingCard: widget.cardsAdded.last,
columnIndex: widget.columnIndex,
attachedCards: [
widget.cardsAdded.last,
],
);
},
onWillAccept: (value) {
PlayingCard cardAdded = value["cards"].last;
if (cardAdded.cardSuit == widget.cardSuit) {
if (CardType.values.indexOf(cardAdded.cardType) ==
widget.cardsAdded.length) {
return true;
}
}
return false;
},
onAccept: (value) {
widget.onCardAdded(
value["cards"],
value["fromIndex"],
);
},
);
}
Image _suitToImage() {
switch (widget.cardSuit) {
case CardSuit.hearts:
return Image.asset('images/hearts.png');
case CardSuit.diamonds:
return Image.asset('images/diamonds.png');
case CardSuit.clubs:
return Image.asset('images/clubs.png');
case CardSuit.spades:
return Image.asset('images/spades.png');
default:
return null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment