import 'dart:async'; import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'farb_theme.dart'; /// Login-Effekte: Pro Person eigener Akzent, Willkommens-Sound und Begrüßung. /// Wird nach erfolgreichem Login und beim App-Start (wenn Token vorhanden) ausgelöst. class UserEffekt { final Color akzent; final String begruessung; final String soundAsset; const UserEffekt(this.akzent, this.begruessung, this.soundAsset); /// Baka = königlich-rot + Fanfare 👑 static const baka = UserEffekt( Color(0xFFCC0000), 'Willkommen zurück, Baka! 👑', 'assets/sounds/baka_fanfare.wav', ); /// Tinker = türkis + heller Chime 🐱 static const tinker = UserEffekt( Color(0xFF00B8A9), 'Tinker ist da! 🐱✨', 'assets/sounds/tinker_chime.wav', ); static const standard = UserEffekt( Color(0xFFCC0000), 'Willkommen! 🎵', 'assets/sounds/willkommen_ping.wav', ); static UserEffekt fuer(String? user) { final u = (user ?? '').toLowerCase().trim(); if (u == 'baka' || u == 'dustin') return baka; if (u == 'tinker') return tinker; return standard; } /// Setzt die Akzentfarbe (Thema wechselt live) und spielt den Sound ab. static Future anwenden(String? user) async { final e = fuer(user); MeloTheme.akzent = e.akzent; try { final p = AudioPlayer(); await p.setAsset(e.soundAsset); unawaited(p.play()); // Player nach dem Abspielen sauber freigeben (kein Memory-Leak) Future.delayed(const Duration(seconds: 4), () { if (p.playing) p.stop(); p.dispose(); }); } catch (_) { // Sound-Fehler ignorieren – Akzent bleibt trotzdem aktiv } } }