Initial Release: SAVEXSTATE Vault V1 - Cyber Orange Edition

This commit is contained in:
Zach Groth
2026-03-28 22:53:48 -05:00
commit d2863d2ce8
203 changed files with 8249 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
import 'package:just_audio/just_audio.dart';
import 'package:flutter/material.dart';
import 'dart:async';
class PlayerService {
static final PlayerService _instance = PlayerService._internal();
factory PlayerService() => _instance;
PlayerService._internal();
final AudioPlayer player = AudioPlayer();
// Track state that other screens can listen to
ValueNotifier<Map<String, dynamic>?> currentTrack = ValueNotifier(null);
// Subscription to handle the 30-second snip-lock
StreamSubscription? _tierSubscription;
void play(Map<String, dynamic> track, int userTier) async {
try {
// 1. Clean up previous track and listeners
await player.stop();
await _tierSubscription?.cancel();
currentTrack.value = track;
// 2. Load and Play
await player.setUrl(track['audioUrl']);
player.play();
// 3. Set up the Snip-Lock for the NEW track
_tierSubscription = player.positionStream.listen((position) {
if (userTier < 2 && position.inSeconds >= 30 && player.playing) {
player.pause();
player.seek(Duration.zero);
}
});
} catch (e) {
print("PLAYER_SYSTEM_ERROR: $e");
}
}
void toggle() {
if (player.playing) {
player.pause();
} else {
player.play();
}
}
}