~repos /only-bible-app

#kotlin#android#ios

git clone https://pyrossh.dev/repos/only-bible-app.git

The only bible app you will ever need. No ads. No in-app purchases. No distractions.


36d4743f pyrossh

2 years ago
add play button
bible_app/lib/components/play_button.dart ADDED
@@ -0,0 +1,51 @@
1
+ import "package:flutter/material.dart";
2
+ import "package:flutter_reactive_value/flutter_reactive_value.dart";
3
+ import "package:just_audio/just_audio.dart";
4
+ import "../domain/kannada_gen.dart";
5
+ import "../state.dart";
6
+ import "../utils/dialog.dart";
7
+
8
+ class PlayButton extends StatelessWidget {
9
+ final int book;
10
+ final int chapter;
11
+ final player = AudioPlayer();
12
+
13
+ PlayButton({super.key, required this.book, required this.chapter}) {
14
+ player.setUrl("https://github.com/pyrossh/bible-app/raw/master/public/audio/output.mp3");
15
+ // player.setUrl("asset:output.mp3");
16
+ }
17
+
18
+ @override
19
+ Widget build(BuildContext context) {
20
+ final icon = isPlaying.reactiveValue(context) ? Icons.pause_circle_filled : Icons.play_circle_fill;
21
+ return IconButton(
22
+ icon: Icon(icon, size: 36),
23
+ onPressed: () async {
24
+ if (isPlaying.value) {
25
+ await player.pause();
26
+ onPause();
27
+ } else {
28
+ try {
29
+ onPlay();
30
+ final verses = kannadaBible[book].chapters[chapter].verses;
31
+ final filteredVerses =
32
+ verses.asMap().keys.where((it) => selectedVerses.value.contains(it)).map((it) => verses[it]);
33
+ for (final v in filteredVerses) {
34
+ await player.setClip(
35
+ start: Duration(milliseconds: (v.audioRange.start * 1000).toInt()),
36
+ end: Duration(milliseconds: (v.audioRange.end * 1000).toInt()),
37
+ );
38
+ await player.play();
39
+ await player.pause();
40
+ }
41
+ } catch (err) {
42
+ showError(context, "Could not play audio");
43
+ } finally {
44
+ await player.pause();
45
+ onPause();
46
+ }
47
+ }
48
+ },
49
+ );
50
+ }
51
+ }