import 'dart:convert'; import 'package:get/get.dart'; class Player { double currentTime = 0; double seekTime = -1; String master; int songId; bool playing = false; List queue = []; } class Client { String name; int lastPing; Client(String name, int lastPing) { this.name = name; this.lastPing = lastPing; } } class Controller extends GetxController { var name = ''.obs; var uniqueName = ''.obs; Rx player = new Player().obs; RxList clients = [].obs; setName(String newName) { name.value = newName; } setUniqueName(String newUniqueName) { uniqueName.value = newUniqueName; } onRemoteMessage(String message) { var action = jsonDecode(message); switch (action['type']) { case 'CLIENT_LIST_UPDATED': print("Client list updated: ${action['payload']}"); var payload = action['payload']; List clientList = []; for (var i = 0; i < payload.length; i++) { clientList.add(new Client( payload[i].name, payload[i].lastPing, )); } this.clients = clientList.obs; break; case 'STATE_SET': Player nextPlayer = new Player(); nextPlayer.currentTime = action['payload']['currentTime']; nextPlayer.seekTime = action['payload']['seekTime']; nextPlayer.master = action['payload']['queue']; nextPlayer.songId = action['payload']['songId']; nextPlayer.playing = action['payload']['playing']; nextPlayer.queue = []; for (var i = 0; i < action['payload']['queue'].length; i++) { nextPlayer.queue.add(action['payload']['queue'][i]); } this.player.value = nextPlayer; break; } } }