~repos /only-bible-app
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.
36c7dd49
—
pyrossh 2 years ago
add font sizes
- bible_app/lib/components/header.dart +17 -15
- bible_app/lib/components/menu.dart +41 -12
- bible_app/lib/components/play_button.dart +0 -1
- bible_app/lib/components/verse_view.dart +6 -3
- bible_app/lib/main.dart +2 -1
- bible_app/lib/models/theme.dart +2 -2
- bible_app/lib/state.dart +14 -0
- bible_app/scripts/bibles/kannada.csv +1 -1
bible_app/lib/components/header.dart
CHANGED
|
@@ -16,13 +16,16 @@ class Header extends StatelessWidget {
|
|
|
16
16
|
@override
|
|
17
17
|
Widget build(BuildContext context) {
|
|
18
18
|
return Container(
|
|
19
|
-
padding: EdgeInsets.
|
|
19
|
+
padding: EdgeInsets.only(
|
|
20
|
-
|
|
20
|
+
// horizontal: isDesktop() ? 40 : 20,
|
|
21
|
+
top: isDesktop() ? 10 : 0,
|
|
21
|
-
|
|
22
|
+
bottom: isDesktop() ? 10 : 0,
|
|
23
|
+
),
|
|
22
24
|
decoration: const BoxDecoration(
|
|
23
25
|
border: Border(bottom: BorderSide(width: 1.5)),
|
|
24
26
|
),
|
|
25
27
|
child: Row(
|
|
28
|
+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
26
29
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
27
30
|
children: [
|
|
28
31
|
InkWell(
|
|
@@ -30,23 +33,22 @@ class Header extends StatelessWidget {
|
|
|
30
33
|
Navigator.of(context).push(SideMenuPage());
|
|
31
34
|
},
|
|
32
35
|
child: Row(
|
|
33
|
-
crossAxisAlignment: CrossAxisAlignment.center,
|
|
34
36
|
children: [
|
|
35
37
|
Text("${selectedBible.value[book].name} ${chapter + 1}", style: theme.value.headerText),
|
|
36
|
-
Container(
|
|
37
|
-
margin: const EdgeInsets.only(left: 3),
|
|
38
|
-
child: Transform.rotate(
|
|
39
|
-
angle: -pi / 2,
|
|
40
|
-
|
|
38
|
+
const Icon(Icons.expand_more, size: 30),
|
|
41
|
-
),
|
|
42
|
-
),
|
|
43
39
|
],
|
|
44
40
|
),
|
|
45
41
|
),
|
|
42
|
+
Row(
|
|
43
|
+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
44
|
+
children: [
|
|
46
|
-
|
|
45
|
+
Container(
|
|
46
|
+
margin: EdgeInsets.only(right: isDesktop() ? 50 : 8),
|
|
47
|
-
|
|
47
|
+
child: PlayButton(book: book, chapter: chapter, verses: verses),
|
|
48
|
+
),
|
|
48
|
-
|
|
49
|
+
Menu(),
|
|
50
|
+
],
|
|
49
|
-
|
|
51
|
+
),
|
|
50
52
|
],
|
|
51
53
|
),
|
|
52
54
|
);
|
bible_app/lib/components/menu.dart
CHANGED
|
@@ -1,29 +1,58 @@
|
|
|
1
1
|
import 'package:flutter/material.dart';
|
|
2
|
+
import 'package:flutter_reactive_value/flutter_reactive_value.dart';
|
|
3
|
+
import 'package:only_bible_app/state.dart';
|
|
2
4
|
|
|
3
5
|
class Menu extends StatelessWidget {
|
|
4
6
|
const Menu({super.key});
|
|
5
7
|
|
|
6
8
|
@override
|
|
7
9
|
Widget build(BuildContext context) {
|
|
10
|
+
final moreIcon = isDesktopMode(context) ? Icons.more_vert : Icons.more_vert;
|
|
8
11
|
return PopupMenuButton(
|
|
9
|
-
icon:
|
|
12
|
+
icon: Icon(moreIcon, size: 36),
|
|
10
13
|
offset: const Offset(0.0, 70),
|
|
11
|
-
|
|
14
|
+
|
|
12
|
-
borderRadius: BorderRadius.only(
|
|
13
|
-
bottomLeft: Radius.circular(8.0),
|
|
14
|
-
bottomRight: Radius.circular(8.0),
|
|
15
|
-
topLeft: Radius.circular(8.0),
|
|
16
|
-
topRight: Radius.circular(8.0),
|
|
17
|
-
),
|
|
18
|
-
),
|
|
19
15
|
itemBuilder: (BuildContext context) => [
|
|
16
|
+
PopupMenuItem(
|
|
17
|
+
value: 1,
|
|
18
|
+
padding: EdgeInsets.symmetric(vertical: 15, horizontal: isDesktop() ? 50 : 5),
|
|
19
|
+
onTap: toggleMode,
|
|
20
|
+
child: Row(
|
|
21
|
+
crossAxisAlignment: CrossAxisAlignment.center,
|
|
22
|
+
mainAxisAlignment: MainAxisAlignment.start,
|
|
23
|
+
children: [
|
|
24
|
+
Container(margin: EdgeInsets.only(left: isDesktop() ? 10 : 25)),
|
|
25
|
+
Icon(darkMode.reactiveValue(context) ? Icons.dark_mode : Icons.light_mode, color: Colors.black, size: 30),
|
|
26
|
+
Text(" ${darkMode.reactiveValue(context) ? "Dark" : "Light"} Mode"),
|
|
27
|
+
],
|
|
28
|
+
),
|
|
29
|
+
),
|
|
30
|
+
const PopupMenuItem(
|
|
31
|
+
value: 1,
|
|
32
|
+
padding: EdgeInsets.symmetric(vertical: 15),
|
|
33
|
+
child: Row(
|
|
34
|
+
crossAxisAlignment: CrossAxisAlignment.center,
|
|
35
|
+
mainAxisAlignment: MainAxisAlignment.center,
|
|
36
|
+
children: [
|
|
37
|
+
IconButton(
|
|
38
|
+
icon: Icon(Icons.add_circle, color: Colors.black, size: 30),
|
|
39
|
+
onPressed: increaseFont,
|
|
40
|
+
),
|
|
41
|
+
Text(" Font "),
|
|
42
|
+
IconButton(
|
|
43
|
+
icon: Icon(Icons.remove_circle, color: Colors.black, size: 30),
|
|
44
|
+
onPressed: decreaseFont,
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
),
|
|
48
|
+
),
|
|
20
49
|
const PopupMenuItem(
|
|
21
50
|
value: 1,
|
|
51
|
+
padding: EdgeInsets.symmetric(vertical: 10),
|
|
22
52
|
child: Row(
|
|
53
|
+
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
23
54
|
children: [
|
|
24
|
-
Icon(Icons.add_circle, color: Colors.black, size: 32),
|
|
25
|
-
Text("
|
|
55
|
+
Text("About"),
|
|
26
|
-
Icon(Icons.remove_circle, color: Colors.black, size: 32),
|
|
27
56
|
],
|
|
28
57
|
),
|
|
29
58
|
),
|
bible_app/lib/components/play_button.dart
CHANGED
|
@@ -16,7 +16,6 @@ class PlayButton extends StatelessWidget {
|
|
|
16
16
|
Widget build(BuildContext context) {
|
|
17
17
|
final icon = isPlaying.reactiveValue(context) ? Icons.pause_circle_filled : Icons.play_circle_fill;
|
|
18
18
|
return IconButton(
|
|
19
|
-
padding: const EdgeInsets.symmetric(horizontal: 50),
|
|
20
19
|
icon: Icon(icon, size: 36),
|
|
21
20
|
onPressed: () async {
|
|
22
21
|
final player = AudioPlayer();
|
bible_app/lib/components/verse_view.dart
CHANGED
|
@@ -10,10 +10,13 @@ class VerseText extends StatelessWidget {
|
|
|
10
10
|
|
|
11
11
|
@override
|
|
12
12
|
Widget build(BuildContext context) {
|
|
13
|
-
|
|
13
|
+
final selected = selectedVerses.reactiveValue(context).contains(index);
|
|
14
|
+
final delta = fontSizeDelta.reactiveValue(context);
|
|
15
|
+
final bodySize = theme.value.bodyText.fontSize! + delta;
|
|
14
16
|
onTap() {
|
|
15
17
|
onVerseSelected(index);
|
|
16
18
|
}
|
|
19
|
+
|
|
17
20
|
return MouseRegion(
|
|
18
21
|
cursor: SystemMouseCursors.click,
|
|
19
22
|
child: GestureDetector(
|
|
@@ -27,13 +30,13 @@ class VerseText extends StatelessWidget {
|
|
|
27
30
|
children: [
|
|
28
31
|
Container(
|
|
29
32
|
margin: const EdgeInsets.only(right: 4),
|
|
30
|
-
child:
|
|
33
|
+
child: Transform.translate(
|
|
31
34
|
offset: const Offset(0, 2),
|
|
32
35
|
child: Text("${index + 1}", style: theme.value.labelText),
|
|
33
36
|
),
|
|
34
37
|
),
|
|
35
38
|
Flexible(
|
|
36
|
-
child: Text(text, style:
|
|
39
|
+
child: Text(text, style: TextStyle(fontSize: bodySize)),
|
|
37
40
|
)
|
|
38
41
|
],
|
|
39
42
|
),
|
bible_app/lib/main.dart
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import 'package:flutter/material.dart';
|
|
2
2
|
import 'package:flutter_persistent_value_notifier/flutter_persistent_value_notifier.dart';
|
|
3
3
|
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
|
4
4
|
import 'package:go_router/go_router.dart';
|
|
@@ -12,6 +12,7 @@ void main() async {
|
|
|
12
12
|
await initPersistentValueNotifier();
|
|
13
13
|
await loadBible();
|
|
14
14
|
runApp(MaterialApp.router(
|
|
15
|
+
debugShowCheckedModeBanner: false,
|
|
15
16
|
routerConfig: GoRouter(
|
|
16
17
|
debugLogDiagnostics: true,
|
|
17
18
|
initialLocation: "/${selectedBible.value[bookIndex.value].name}/${chapterIndex.value}",
|
bible_app/lib/models/theme.dart
CHANGED
|
@@ -33,7 +33,7 @@ const lightTheme = AppTheme(
|
|
|
33
33
|
secondaryColor: lightSecondary,
|
|
34
34
|
highlightColor: lightHighlightColor,
|
|
35
35
|
labelText: TextStyle(
|
|
36
|
-
fontFamily: "SanFrancisco",
|
|
36
|
+
// fontFamily: "SanFrancisco",
|
|
37
37
|
fontSize: 12,
|
|
38
38
|
fontWeight: FontWeight.w800,
|
|
39
39
|
color: lightLabel,
|
|
@@ -47,7 +47,7 @@ const lightTheme = AppTheme(
|
|
|
47
47
|
bodyText: TextStyle(
|
|
48
48
|
color: lightBody,
|
|
49
49
|
fontSize: 16,
|
|
50
|
-
fontFamily: "SanFranciscoPro",
|
|
50
|
+
// fontFamily: "SanFranciscoPro",
|
|
51
51
|
fontWeight: FontWeight.w400,
|
|
52
52
|
// letterSpacing: 0.5,
|
|
53
53
|
),
|
bible_app/lib/state.dart
CHANGED
|
@@ -31,6 +31,20 @@ final selectedBible = ValueNotifier<List<Book>>([]);
|
|
|
31
31
|
final selectedVerses = ValueNotifier([]);
|
|
32
32
|
final isPlaying = ValueNotifier(false);
|
|
33
33
|
final theme = ValueNotifier<AppTheme>(lightTheme);
|
|
34
|
+
final fontSizeDelta = ValueNotifier(0);
|
|
35
|
+
|
|
36
|
+
increaseFont() {
|
|
37
|
+
fontSizeDelta.value += 1;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
decreaseFont() {
|
|
41
|
+
fontSizeDelta.value -= 1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
toggleMode() {
|
|
45
|
+
darkMode.value = !darkMode.value;
|
|
46
|
+
print(darkMode.value);
|
|
47
|
+
}
|
|
34
48
|
|
|
35
49
|
saveBookIndex(int book, int chapter) {
|
|
36
50
|
bookIndex.value = book;
|
bible_app/scripts/bibles/kannada.csv
CHANGED
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
1|2|5|ಆಗ ಫರೋಹನ ಮಗಳು ನದಿಯಲ್ಲಿ ಸ್ನಾನ ಮಾಡುವದಕ್ಕೆ ಇಳಿದು ಬಂದಳು; ಆಕೆಯ ದಾಸಿಯರು ನದಿಯ ಅಂಚಿನಲ್ಲಿ ತಿರುಗಾಡುತ್ತಿದ್ದರು. ಫರೋಹನ ಮಗಳು ಹುಲ್ಲಿನಲ್ಲಿದ್ದ ಪೆಟ್ಟಿಗೆಯನ್ನು ನೋಡಿ ತನ್ನ ದಾಸಿಯನ್ನು ಕಳುಹಿಸಿ ಅದನ್ನು ತರಿಸಿದಳು.
|
|
1561
1561
|
1|2|6|ಆ ಪೆಟ್ಟಿಗೆಯನ್ನು ತೆರೆದು ಕೂಸನ್ನು ನೋಡಿದಳು; ಇಗೋ, ಕೂಸು ಅಳುತ್ತಿತ್ತು. ಆಗ ಆಕೆಯು ಅದರ ಮೇಲೆ ಅಂತಃಕರುಣೆಪಟ್ಟು--ಇದು ಇಬ್ರಿಯರ ಮಕ್ಕಳಲ್ಲಿ ಒಂದಾಗಿದೆ ಅಂದಳು.
|
|
1562
1562
|
1|2|7|ಆಗ ಅದರ ಅಕ್ಕ ಫರೋಹನ ಮಗಳಿಗೆ--ನಾನು ಹೋಗಿ ಈ ಕೂಸಿಗೆ ಮೊಲೆ ಕೊಡುವ ಹಾಗೆ ಇಬ್ರಿಯ ಸ್ತ್ರೀಯರಿಂದ ಒಬ್ಬ ದಾದಿ ಯನ್ನು ನಿನಗೋಸ್ಕರ ಕರಕೊಂಡು ಬರಲೋ ಅಂದಳು.
|
|
1563
|
-
1|2|8|ಫರೋಹನ ಮಗಳು ಅವಳಿಗೆ-ಹೋಗು ಅಂದಳು. ಆಗ ಆ ಹುಡುಗಿಯು ಹೋಗಿ ಕೂಸಿನ ತಾಯಿಯನ್ನು ಕರೆದಳು.
|
|
1563
|
+
1|2|8|ಫರೋಹನ ಮಗಳು ಅವಳಿಗೆ-.ಹೋಗು ಅಂದಳು. ಆಗ ಆ ಹುಡುಗಿಯು ಹೋಗಿ ಕೂಸಿನ ತಾಯಿಯನ್ನು ಕರೆದಳು.
|
|
1564
1564
|
1|2|9|ಫರೋಹನ ಮಗಳು ಆಕೆಗೆ--ಈ ಮಗು ವನ್ನು ತೆಗೆದುಕೊಂಡುಹೋಗಿ ನನಗೋಸ್ಕರ ಸಾಕು. ನಾನು ನಿನಗೆ ಸಂಬಳವನ್ನು ಕೊಡುವೆನು ಅಂದಳು. ಆಗ ಆ ಸ್ತ್ರೀಯು ಕೂಸನ್ನು ತಕ್ಕೊಂಡು ಹೋಗಿ ಸಾಕಿದಳು.
|
|
1565
1565
|
1|2|10|ಈ ಮಗುವು ಬೆಳೆದಾಗ ಅವನನ್ನು ಫರೋಹನ ಮಗಳ ಬಳಿಗೆ ತಕ್ಕೊಂಡುಹೋದಳು. ಅವನು ಆಕೆಗೆ ಮಗನಾದನು. ಆಕೆಯು--ಇವನನ್ನು ನೀರಿನೊಳಗಿಂದ ಎಳೆದೆನೆಂದು ಹೇಳಿ ಅವನಿಗೆ ಮೋಶೆ ಎಂದು ಹೆಸರಿಟ್ಟಳು.
|
|
1566
1566
|
1|2|11|ಆ ದಿನಗಳಲ್ಲಿ ಮೋಶೆಯು ದೊಡ್ಡವನಾದ ಮೇಲೆ ತನ್ನ ಸಹೋದರರ ಬಳಿಗೆ ಹೋಗಿ ಅವರ ಬಿಟ್ಟೀ ಕೆಲಸಗಳನ್ನು ನೋಡುತ್ತಿದ್ದನು. ಆಗ ತನ್ನ ಸಹೋದರರಲ್ಲಿ ಒಬ್ಬನಾದ ಇಬ್ರಿಯನನ್ನು ಒಬ್ಬ ಐಗುಪ್ತ್ಯನು ಹೊಡೆಯುವದನ್ನು ಕಂಡನು.
|