Доступ к данным из класса Flutter - PullRequest
0 голосов
/ 06 мая 2020
class Player{
final String playerName;
final int playerValue;

Player({this.playerName,this.playerValue});

final List <Player> playersList = [
 Player(playerName: 'player1', playerValue: 20),
 Player(playerName: 'player2', playerValue: 20),
 Player(playerName: 'player1', playerValue: 30),
 Player(playerName: 'player3', playerValue: 50),
 Player(playerName: 'player5', playerValue: 60),
];
player1 = (playersList..shuffle()).first;
player2 = (playersList..shuffle()).last;

while (player1.playerName == player2.playerName || player1.playerValue == player2.playerVaue) {

 player2 = (playersList..shuffle()).last;

   }

Итак, вот что я пытаюсь сделать: я хочу вручную создать список игроков, как показано выше, и хочу случайным образом назначить одного из этих игроков для player1 и player2 на случай, если оба они окажутся имея такое же значение или имя, я хочу случайным образом выбрать игрока, чтобы мы могли сравнить их значения. Я действительно не могу понять, как сформулировать это в коде. Кроме того, я хочу отправить playerName и playerValue в другой класс, где они будут отображаться в виджете с отслеживанием состояния. Как видите, я только начинаю работать с Flutter, поэтому я буду очень благодарен за любую помощь!

1 Ответ

0 голосов
/ 06 мая 2020

Это работает ...

   final List<Player> playersList = [
    Player(playerName: 'player1', playerValue: 20),
    Player(playerName: 'player2', playerValue: 20),
    Player(playerName: 'player1', playerValue: 30),
    Player(playerName: 'player3', playerValue: 50),
    Player(playerName: 'player5', playerValue: 60),
  ];

  playersList.shuffle();
  var player1 = playersList.first;
  var player2 = player1;
  while (player1.playerName == player2.playerName) {
    playersList.shuffle();
    player2 = playersList.first;
  }

  print(player1);
  print(player2);

ОБНОВЛЕНИЕ: Оберните его в метод класса Player


class Player {
  final String playerName;
  final int playerValue;

  Player({this.playerName, this.playerValue});

  static List<Player> pairPlayers() {
    final List<Player> playersList = [
      Player(playerName: 'player1', playerValue: 20),
      Player(playerName: 'player2', playerValue: 20),
      Player(playerName: 'player1', playerValue: 30),
      Player(playerName: 'player3', playerValue: 50),
      Player(playerName: 'player5', playerValue: 60),
    ];

    playersList.shuffle();
    var player1 = playersList.first;
    var player2 = player1;
    while (player1.playerName == player2.playerName) {
      playersList.shuffle();
      player2 = playersList.first;
    }

    return [player1, player2];
  }

  @override
  String toString() {
    return playerName;
  }
}

Затем в любое время, когда вы хотите объединить игроков, используйте

Players.pairPlayers();
...