~repos /only-bible-app
git clone
https://pyrossh.dev/repos/only-bible-app.git
Discussions:
https://groups.google.com/g/rust-embed-devs
The only bible app you will ever need. No ads. No in-app purchases. No distractions.
c8560cb8
—
pyrossh 2 years ago
Improve menu icon
- ios/Podfile.lock +28 -0
- lib/state.dart +5 -3
- lib/widgets/header.dart +8 -8
- lib/widgets/menu.dart +8 -3
ios/Podfile.lock
CHANGED
|
@@ -9,6 +9,9 @@ PODS:
|
|
|
9
9
|
- Firebase/Performance (10.12.0):
|
|
10
10
|
- Firebase/CoreOnly
|
|
11
11
|
- FirebasePerformance (~> 10.12.0)
|
|
12
|
+
- Firebase/Storage (10.12.0):
|
|
13
|
+
- Firebase/CoreOnly
|
|
14
|
+
- FirebaseStorage (~> 10.12.0)
|
|
12
15
|
- firebase_core (2.15.0):
|
|
13
16
|
- Firebase/CoreOnly (= 10.12.0)
|
|
14
17
|
- Flutter
|
|
@@ -20,8 +23,14 @@ PODS:
|
|
|
20
23
|
- Firebase/Performance (= 10.12.0)
|
|
21
24
|
- firebase_core
|
|
22
25
|
- Flutter
|
|
26
|
+
- firebase_storage (11.2.5):
|
|
27
|
+
- Firebase/Storage (= 10.12.0)
|
|
28
|
+
- firebase_core
|
|
29
|
+
- Flutter
|
|
23
30
|
- FirebaseABTesting (10.13.0):
|
|
24
31
|
- FirebaseCore (~> 10.0)
|
|
32
|
+
- FirebaseAppCheckInterop (10.13.0)
|
|
33
|
+
- FirebaseAuthInterop (10.13.0)
|
|
25
34
|
- FirebaseCore (10.12.0):
|
|
26
35
|
- FirebaseCoreInternal (~> 10.0)
|
|
27
36
|
- GoogleUtilities/Environment (~> 7.8)
|
|
@@ -67,6 +76,12 @@ PODS:
|
|
|
67
76
|
- GoogleUtilities/Environment (~> 7.10)
|
|
68
77
|
- nanopb (< 2.30910.0, >= 2.30908.0)
|
|
69
78
|
- PromisesSwift (~> 2.1)
|
|
79
|
+
- FirebaseStorage (10.12.0):
|
|
80
|
+
- FirebaseAppCheckInterop (~> 10.0)
|
|
81
|
+
- FirebaseAuthInterop (~> 10.0)
|
|
82
|
+
- FirebaseCore (~> 10.0)
|
|
83
|
+
- FirebaseCoreExtension (~> 10.0)
|
|
84
|
+
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
|
|
70
85
|
- Flutter (1.0.0)
|
|
71
86
|
- flutter_native_splash (0.0.1):
|
|
72
87
|
- Flutter
|
|
@@ -84,6 +99,7 @@ PODS:
|
|
|
84
99
|
- "GoogleUtilities/NSData+zlib (7.11.5)"
|
|
85
100
|
- GoogleUtilities/UserDefaults (7.11.5):
|
|
86
101
|
- GoogleUtilities/Logger
|
|
102
|
+
- GTMSessionFetcher/Core (3.1.1)
|
|
87
103
|
- integration_test (0.0.1):
|
|
88
104
|
- Flutter
|
|
89
105
|
- just_audio (0.0.1):
|
|
@@ -108,6 +124,7 @@ DEPENDENCIES:
|
|
|
108
124
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
|
109
125
|
- firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`)
|
|
110
126
|
- firebase_performance (from `.symlinks/plugins/firebase_performance/ios`)
|
|
127
|
+
- firebase_storage (from `.symlinks/plugins/firebase_storage/ios`)
|
|
111
128
|
- Flutter (from `Flutter`)
|
|
112
129
|
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
|
113
130
|
- integration_test (from `.symlinks/plugins/integration_test/ios`)
|
|
@@ -119,6 +136,8 @@ SPEC REPOS:
|
|
|
119
136
|
trunk:
|
|
120
137
|
- Firebase
|
|
121
138
|
- FirebaseABTesting
|
|
139
|
+
- FirebaseAppCheckInterop
|
|
140
|
+
- FirebaseAuthInterop
|
|
122
141
|
- FirebaseCore
|
|
123
142
|
- FirebaseCoreExtension
|
|
124
143
|
- FirebaseCoreInternal
|
|
@@ -127,8 +146,10 @@ SPEC REPOS:
|
|
|
127
146
|
- FirebasePerformance
|
|
128
147
|
- FirebaseRemoteConfig
|
|
129
148
|
- FirebaseSessions
|
|
149
|
+
- FirebaseStorage
|
|
130
150
|
- GoogleDataTransport
|
|
131
151
|
- GoogleUtilities
|
|
152
|
+
- GTMSessionFetcher
|
|
132
153
|
- nanopb
|
|
133
154
|
- PromisesObjC
|
|
134
155
|
- PromisesSwift
|
|
@@ -142,6 +163,8 @@ EXTERNAL SOURCES:
|
|
|
142
163
|
:path: ".symlinks/plugins/firebase_crashlytics/ios"
|
|
143
164
|
firebase_performance:
|
|
144
165
|
:path: ".symlinks/plugins/firebase_performance/ios"
|
|
166
|
+
firebase_storage:
|
|
167
|
+
:path: ".symlinks/plugins/firebase_storage/ios"
|
|
145
168
|
Flutter:
|
|
146
169
|
:path: Flutter
|
|
147
170
|
flutter_native_splash:
|
|
@@ -161,7 +184,10 @@ SPEC CHECKSUMS:
|
|
|
161
184
|
firebase_core: e477125798fc37cd4ab43ca6a8536bf7e0929c00
|
|
162
185
|
firebase_crashlytics: 6043ce85800f96e53f15ee5051f9cfad10cce73d
|
|
163
186
|
firebase_performance: 32e9164da8ae1cc69ee3edff231e2f020be9b6c2
|
|
187
|
+
firebase_storage: d5c1b95383db1230d9fed88c76cb257d8d1ec1d6
|
|
164
188
|
FirebaseABTesting: 86ac5a4fc749088bb4d55a1cbfb2c4cb42c6d5de
|
|
189
|
+
FirebaseAppCheckInterop: 5e12dc623d443dedffcde9c6f3ed41510125d8ef
|
|
190
|
+
FirebaseAuthInterop: 74875bde5d15636522a8fe98beb561df7a54db58
|
|
165
191
|
FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed
|
|
166
192
|
FirebaseCoreExtension: ce60f9db46d83944cf444664d6d587474128eeca
|
|
167
193
|
FirebaseCoreInternal: b342e37cd4f5b4454ec34308f073420e7920858e
|
|
@@ -170,10 +196,12 @@ SPEC CHECKSUMS:
|
|
|
170
196
|
FirebasePerformance: 1a63c51c9d14fc1190b0970d5aab96672cb0bce6
|
|
171
197
|
FirebaseRemoteConfig: 33e0dcf43899fbb4f8ef2d84200bf5f5e32eaf05
|
|
172
198
|
FirebaseSessions: 991fb4c20b3505eef125f7cbfa20a5b5b189c2a4
|
|
199
|
+
FirebaseStorage: 1d7ca8c8953fc61ccacaa7c612696b5402968a0d
|
|
173
200
|
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
|
174
201
|
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
|
|
175
202
|
GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
|
|
176
203
|
GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
|
|
204
|
+
GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
|
|
177
205
|
integration_test: 13825b8a9334a850581300559b8839134b124670
|
|
178
206
|
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
|
179
207
|
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
lib/state.dart
CHANGED
|
@@ -2,6 +2,7 @@ import "dart:convert";
|
|
|
2
2
|
import "dart:developer";
|
|
3
3
|
import "package:firebase_crashlytics/firebase_crashlytics.dart";
|
|
4
4
|
import "package:firebase_storage/firebase_storage.dart";
|
|
5
|
+
|
|
5
6
|
// import "package:firebase_performance/firebase_performance.dart";
|
|
6
7
|
import "package:flutter/foundation.dart" show defaultTargetPlatform, TargetPlatform;
|
|
7
8
|
import "package:flutter/services.dart";
|
|
@@ -265,9 +266,10 @@ bool isWide(BuildContext context) {
|
|
|
265
266
|
|
|
266
267
|
createNoTransitionPageRoute(Widget page) {
|
|
267
268
|
return PageRouteBuilder(
|
|
269
|
+
opaque: false,
|
|
270
|
+
transitionDuration: Duration.zero,
|
|
271
|
+
reverseTransitionDuration: Duration.zero,
|
|
268
|
-
pageBuilder: (context, _, __)
|
|
272
|
+
pageBuilder: (context, _, __) => page,
|
|
269
|
-
return page;
|
|
270
|
-
},
|
|
271
273
|
);
|
|
272
274
|
}
|
|
273
275
|
|
lib/widgets/header.dart
CHANGED
|
@@ -45,13 +45,9 @@ class Header extends StatelessWidget {
|
|
|
45
45
|
style: Theme.of(context).textTheme.headlineMedium,
|
|
46
46
|
),
|
|
47
47
|
onPressed: () {
|
|
48
|
-
// TODO: move this to state
|
|
49
48
|
Navigator.of(context).push(
|
|
50
|
-
PageRouteBuilder(
|
|
51
|
-
opaque: false,
|
|
52
|
-
transitionDuration: Duration.zero,
|
|
53
|
-
|
|
49
|
+
createNoTransitionPageRoute(
|
|
54
|
-
|
|
50
|
+
BookSelectScreen(bible: selectedBible),
|
|
55
51
|
),
|
|
56
52
|
);
|
|
57
53
|
},
|
|
@@ -69,7 +65,11 @@ class Header extends StatelessWidget {
|
|
|
69
65
|
),
|
|
70
66
|
child: Text(selectedBible.name),
|
|
71
67
|
onPressed: () {
|
|
68
|
+
Navigator.of(context).push(
|
|
72
|
-
|
|
69
|
+
createNoTransitionPageRoute(
|
|
70
|
+
const BibleSelectScreen(),
|
|
71
|
+
),
|
|
72
|
+
);
|
|
73
73
|
},
|
|
74
74
|
),
|
|
75
75
|
),
|
|
@@ -83,7 +83,7 @@ class Header extends StatelessWidget {
|
|
|
83
83
|
),
|
|
84
84
|
],
|
|
85
85
|
),
|
|
86
|
-
Divider(height: isDesktop ? 10 : 0, endIndent:
|
|
86
|
+
Divider(height: isDesktop ? 10 : 0, endIndent: 10, thickness: isDesktop ? 1.5 : 1),
|
|
87
87
|
],
|
|
88
88
|
),
|
|
89
89
|
);
|
lib/widgets/menu.dart
CHANGED
|
@@ -10,12 +10,17 @@ class Menu extends StatelessWidget {
|
|
|
10
10
|
final isDesktop = isWide(context);
|
|
11
11
|
final model = AppModel.of(context);
|
|
12
12
|
final modeIcon = model.darkMode ? Icons.dark_mode : Icons.light_mode;
|
|
13
|
+
final boldColor = model.fontBold ? Theme.of(context).shadowColor : Colors.grey;
|
|
13
14
|
return PopupMenuButton(
|
|
14
15
|
icon: const Icon(Icons.more_vert, size: 28),
|
|
15
16
|
offset: const Offset(0.0, 50),
|
|
16
17
|
onSelected: (int v) {
|
|
17
18
|
if (v == 1) {
|
|
19
|
+
Navigator.of(context).push(
|
|
18
|
-
|
|
20
|
+
createNoTransitionPageRoute(
|
|
21
|
+
const BibleSelectScreen(),
|
|
22
|
+
),
|
|
23
|
+
);
|
|
19
24
|
}
|
|
20
25
|
if (v == 2) {
|
|
21
26
|
model.toggleMode();
|
|
@@ -38,7 +43,7 @@ class Menu extends StatelessWidget {
|
|
|
38
43
|
child: Container(
|
|
39
44
|
alignment: Alignment.center,
|
|
40
45
|
margin: const EdgeInsets.symmetric(vertical: 15),
|
|
41
|
-
child: const Icon(Icons.abc, size:
|
|
46
|
+
child: const Icon(Icons.abc, size: 42),
|
|
42
47
|
),
|
|
43
48
|
),
|
|
44
49
|
PopupMenuItem(
|
|
@@ -54,7 +59,7 @@ class Menu extends StatelessWidget {
|
|
|
54
59
|
child: Container(
|
|
55
60
|
alignment: Alignment.center,
|
|
56
61
|
margin: const EdgeInsets.symmetric(vertical: 15),
|
|
57
|
-
child:
|
|
62
|
+
child: Icon(Icons.format_bold, size: 28, color: boldColor),
|
|
58
63
|
),
|
|
59
64
|
),
|
|
60
65
|
PopupMenuItem(
|