import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hive_flutter/hive_flutter.dart'; import '../../data/models/player_model.dart'; import 'package:uuid/uuid.dart'; // Provider für die Hive-Box final playerBoxProvider = Provider>((ref) { return Hive.box('players'); }); // Provider für die Liste aller Players (live aktualisiert) final playerListProvider = StateNotifierProvider>((ref) { final box = ref.watch(playerBoxProvider); return PlayerNotifier(box); }); class PlayerNotifier extends StateNotifier> { PlayerNotifier(this.box) : super(box.values.toList()) { // Listener für automatische Updates, falls von außen geändert box.watch().listen((_) { state = box.values.toList(); }); } final Box box; // Spieler hinzufügen Future addPlayer({ required String name, required Gender gender, required SkillLevel skillLevel, required List positions, }) async { final newPlayer = PlayerModel( id: const Uuid().v4(), name: name, gender: gender, skillLevel: skillLevel, positions: positions, ); await box.put(newPlayer.id, newPlayer); state = box.values.toList(); // Update state } // Spieler aktualisieren Future updatePlayer(PlayerModel updatedPlayer) async { await updatedPlayer.save(); state = box.values.toList(); } // Spieler löschen Future deletePlayer(PlayerModel player) async { await player.delete(); state = box.values.toList(); } // Alle löschen (z.B. für neues Turnier) Future clearAll() async { await box.clear(); state = []; } void awardWinToPlayers(List winners){ for(final player in winners){ player.wins += 1; player.save(); } state = box.values.toList(); } }