void main() { var deck = new Deck(); deck.shuffle(); print(deck.deal(50)); print(deck); deck.removeCard('Ace', 'Spades'); print(deck); } class Deck { List cards = []; Deck() { List suits = ['Diamonds', 'Hearts', 'Clubs', 'Spades']; List ranks = ['Ace', 'Two', 'Three', 'Four', 'Five', 'Six']; for (var suit in suits) { for (var rank in ranks) { var card = new Card(suit, rank); cards.add(card); } } } shuffle() { cards.shuffle(); } cardsWithSuit(String suit) { return cards.where((card) => card.suit == suit); } deal(int handSize) { if(handSize<=cards.length) { List hand = cards.sublist(0, handSize); cards = cards.sublist(handSize); return hand; } else { return 'Invalid Hand Size'; } } removeCard(String rank, String suit) { cards.removeWhere((card) => card.suit==suit && card.rank == rank); return cards; } toString() { return cards.toString(); } } class Card { String suit, rank; Card(this.suit, this.rank); toString() { return '$rank of $suit'; } }