~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.


36c7dd49 pyrossh

2 years ago
add font sizes
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.symmetric(
19
+ padding: EdgeInsets.only(
20
- // horizontal: isDesktop() ? 40 : 20,
20
+ // horizontal: isDesktop() ? 40 : 20,
21
+ top: isDesktop() ? 10 : 0,
21
- vertical: isDesktop() ? 15 : 0),
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
- child: const Icon(Icons.chevron_left, size: 28),
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
- const Spacer(flex: 1),
45
+ Container(
46
+ margin: EdgeInsets.only(right: isDesktop() ? 50 : 8),
47
- PlayButton(book: book, chapter: chapter, verses: verses),
47
+ child: PlayButton(book: book, chapter: chapter, verses: verses),
48
+ ),
48
- Menu(),
49
+ Menu(),
50
+ ],
49
- // const Spacer(flex: 1),
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: const Icon(Icons.more_horiz, size: 32),
12
+ icon: Icon(moreIcon, size: 36),
10
13
  offset: const Offset(0.0, 70),
11
- shape: const RoundedRectangleBorder(
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(" Font "),
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
- var selected = selectedVerses.reactiveValue(context).contains(index);
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: Transform.translate(
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: theme.value.bodyText),
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 "package:flutter/material.dart";
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|ಆ ದಿನಗಳಲ್ಲಿ ಮೋಶೆಯು ದೊಡ್ಡವನಾದ ಮೇಲೆ ತನ್ನ ಸಹೋದರರ ಬಳಿಗೆ ಹೋಗಿ ಅವರ ಬಿಟ್ಟೀ ಕೆಲಸಗಳನ್ನು ನೋಡುತ್ತಿದ್ದನು. ಆಗ ತನ್ನ ಸಹೋದರರಲ್ಲಿ ಒಬ್ಬನಾದ ಇಬ್ರಿಯನನ್ನು ಒಬ್ಬ ಐಗುಪ್ತ್ಯನು ಹೊಡೆಯುವದನ್ನು ಕಂಡನು.