only-bible-app v3.7.2+24
git clone https://git.pyrossh.dev/only-bible-app
The only bible app you will ever need. No ads. No in-app purchases. No distractions.
2641581
— Peter John
2026-07-28T21:03:26+05:30
fix: synchronize Bible audio playback teardown
- lib/store/actions_state.dart +5 -2
- lib/utils.dart +19 -5
lib/store/actions_state.dart
CHANGED
|
@@ -112,8 +112,11 @@ class TogglePlayAction extends ReduxAction<AppState> {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
} finally {
|
|
115
|
+
try {
|
|
116
|
+
await stopAudioPlayback();
|
|
117
|
+
} finally {
|
|
115
|
-
|
|
118
|
+
_isStarting = false;
|
|
116
|
-
|
|
119
|
+
}
|
|
117
120
|
}
|
|
118
121
|
return null;
|
|
119
122
|
}
|
lib/utils.dart
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "dart:typed_data";
|
|
2
|
-
|
|
3
1
|
import "package:archive/archive.dart";
|
|
4
2
|
import "package:flutter/services.dart";
|
|
5
3
|
import "package:flutter/foundation.dart"
|
|
@@ -134,13 +132,13 @@ Future<Uint8List> convertText(String langCode, String text) async {
|
|
|
134
132
|
shortName: langCode,
|
|
135
133
|
gender: "",
|
|
136
134
|
locale: langCode,
|
|
137
|
-
sampleRateHertz: AudioOutputFormat.
|
|
135
|
+
sampleRateHertz: AudioOutputFormat.raw24khz16BitMonoPcm,
|
|
138
136
|
voiceType: "",
|
|
139
137
|
status: "",
|
|
140
138
|
styles: [],
|
|
141
139
|
roles: [],
|
|
142
140
|
),
|
|
143
|
-
audioFormat: AudioOutputFormat.
|
|
141
|
+
audioFormat: AudioOutputFormat.raw24khz16BitMonoPcm,
|
|
144
142
|
rate: 0.90,
|
|
145
143
|
text: text,
|
|
146
144
|
),
|
|
@@ -159,7 +157,23 @@ Future<void> ensureAudioPlaybackInitialized() async {
|
|
|
159
157
|
}
|
|
160
158
|
}
|
|
161
159
|
|
|
160
|
+
Future<void>? _audioPlaybackStopFuture;
|
|
161
|
+
|
|
162
|
+
Future<void> stopAudioPlayback() {
|
|
163
|
+
final stopFuture = _audioPlaybackStopFuture;
|
|
164
|
+
if (stopFuture != null) return stopFuture;
|
|
165
|
+
|
|
166
|
+
late final Future<void> newStopFuture;
|
|
167
|
+
newStopFuture = _stopAudioPlayback().whenComplete(() {
|
|
168
|
+
if (identical(_audioPlaybackStopFuture, newStopFuture)) {
|
|
169
|
+
_audioPlaybackStopFuture = null;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
_audioPlaybackStopFuture = newStopFuture;
|
|
173
|
+
return newStopFuture;
|
|
174
|
+
}
|
|
175
|
+
|
|
162
|
-
Future<void>
|
|
176
|
+
Future<void> _stopAudioPlayback() async {
|
|
163
177
|
if (!SoLoud.instance.isInitialized) return;
|
|
164
178
|
try {
|
|
165
179
|
await SoLoud.instance.disposeAllSources();
|