import 'dart:async'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:aitube2/config/config.dart'; class SettingsService { static const String _promptPrefixKey = 'video_prompt_prefix'; static const String _hfApiKeyKey = 'huggingface_api_key'; static const String _negativePromptKey = 'negative_video_prompt'; static final SettingsService _instance = SettingsService._internal(); factory SettingsService() => _instance; SettingsService._internal(); late SharedPreferences _prefs; final _settingsController = StreamController.broadcast(); Stream get settingsStream => _settingsController.stream; Future initialize() async { _prefs = await SharedPreferences.getInstance(); } String get videoPromptPrefix => _prefs.getString(_promptPrefixKey) ?? ''; Future setVideoPromptPrefix(String prefix) async { await _prefs.setString(_promptPrefixKey, prefix); _settingsController.add(null); } String get negativeVideoPrompt => _prefs.getString(_negativePromptKey) ?? Configuration.instance.defaultNegativePrompt; Future setNegativeVideoPrompt(String negativePrompt) async { await _prefs.setString(_negativePromptKey, negativePrompt); _settingsController.add(null); } String get huggingfaceApiKey => _prefs.getString(_hfApiKeyKey) ?? ''; Future setHuggingfaceApiKey(String apiKey) async { await _prefs.setString(_hfApiKeyKey, apiKey); _settingsController.add(null); } void dispose() { _settingsController.close(); } }