36 lines
785 B
Dart
36 lines
785 B
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_tts/flutter_tts.dart';
|
|
|
|
class AudioAlertService {
|
|
final FlutterTts _flutterTts = FlutterTts();
|
|
bool _isMuted = false;
|
|
|
|
AudioAlertService() {
|
|
_initTts();
|
|
}
|
|
|
|
Future<void> _initTts() async {
|
|
await _flutterTts.setLanguage("en-US");
|
|
await _flutterTts.setSpeechRate(0.5);
|
|
await _flutterTts.setVolume(1.0);
|
|
await _flutterTts.setPitch(1.0);
|
|
}
|
|
|
|
void setMuted(bool muted) {
|
|
_isMuted = muted;
|
|
}
|
|
|
|
Future<void> speak(String text) async {
|
|
if (_isMuted) return;
|
|
await _flutterTts.speak(text);
|
|
}
|
|
|
|
Future<void> stop() async {
|
|
await _flutterTts.stop();
|
|
}
|
|
}
|
|
|
|
final audioAlertServiceProvider = Provider<AudioAlertService>((ref) {
|
|
return AudioAlertService();
|
|
});
|