File size: 1,150 Bytes
5acd9c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import 'dart:async';

import 'package:shared_preferences/shared_preferences.dart';

class SettingsService {
  static const String _promptPrefixKey = 'video_prompt_prefix';
  static const String _hfApiKeyKey = 'huggingface_api_key';
  static final SettingsService _instance = SettingsService._internal();
  
  factory SettingsService() => _instance;
  SettingsService._internal();

  late SharedPreferences _prefs;
  final _settingsController = StreamController<void>.broadcast();

  Stream<void> get settingsStream => _settingsController.stream;

  Future<void> initialize() async {
    _prefs = await SharedPreferences.getInstance();
  }

  String get videoPromptPrefix => _prefs.getString(_promptPrefixKey) ?? '';

  Future<void> setVideoPromptPrefix(String prefix) async {
    await _prefs.setString(_promptPrefixKey, prefix);
    _settingsController.add(null);
  }

  String get huggingfaceApiKey => _prefs.getString(_hfApiKeyKey) ?? '';

  Future<void> setHuggingfaceApiKey(String apiKey) async {
    await _prefs.setString(_hfApiKeyKey, apiKey);
    _settingsController.add(null);
  }

  void dispose() {
    _settingsController.close();
  }
}