only-bible-app v3.7.2+24

#kotlin#android#ios

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.


c2e460aPeter John 2026-08-08T13:34:21+05:30
fix navigatino
.gitignore CHANGED
@@ -17,6 +17,7 @@ node_modules
17
17
  *.aab
18
18
  *.apk
19
19
  *.ipa
20
+ *.dSYM.zip
20
21
 
21
22
  # Python
22
23
  .venv
ios/Runner.xcodeproj/project.pbxproj CHANGED
@@ -485,7 +485,7 @@
485
485
  CLANG_ENABLE_MODULES = YES;
486
486
  CODE_SIGN_IDENTITY = "Apple Development";
487
487
  CODE_SIGN_STYLE = Automatic;
488
- CURRENT_PROJECT_VERSION = 4;
488
+ CURRENT_PROJECT_VERSION = 5;
489
489
  DEVELOPMENT_TEAM = FXH8NUGFYY;
490
490
  ENABLE_BITCODE = NO;
491
491
  INFOPLIST_FILE = Runner/Info.plist;
@@ -508,7 +508,7 @@
508
508
  buildSettings = {
509
509
  BUNDLE_LOADER = "$(TEST_HOST)";
510
510
  CODE_SIGN_STYLE = Automatic;
511
- CURRENT_PROJECT_VERSION = 4;
511
+ CURRENT_PROJECT_VERSION = 5;
512
512
  GENERATE_INFOPLIST_FILE = YES;
513
513
  MARKETING_VERSION = 1.0;
514
514
  PRODUCT_BUNDLE_IDENTIFIER = "sh.pyros.only-bible-app.RunnerTests";
@@ -526,7 +526,7 @@
526
526
  buildSettings = {
527
527
  BUNDLE_LOADER = "$(TEST_HOST)";
528
528
  CODE_SIGN_STYLE = Automatic;
529
- CURRENT_PROJECT_VERSION = 4;
529
+ CURRENT_PROJECT_VERSION = 5;
530
530
  GENERATE_INFOPLIST_FILE = YES;
531
531
  MARKETING_VERSION = 1.0;
532
532
  PRODUCT_BUNDLE_IDENTIFIER = "sh.pyros.only-bible-app.RunnerTests";
@@ -542,7 +542,7 @@
542
542
  buildSettings = {
543
543
  BUNDLE_LOADER = "$(TEST_HOST)";
544
544
  CODE_SIGN_STYLE = Automatic;
545
- CURRENT_PROJECT_VERSION = 4;
545
+ CURRENT_PROJECT_VERSION = 5;
546
546
  GENERATE_INFOPLIST_FILE = YES;
547
547
  MARKETING_VERSION = 1.0;
548
548
  PRODUCT_BUNDLE_IDENTIFIER = "sh.pyros.only-bible-app.RunnerTests";
@@ -671,7 +671,7 @@
671
671
  CLANG_ENABLE_MODULES = YES;
672
672
  CODE_SIGN_IDENTITY = "Apple Development";
673
673
  CODE_SIGN_STYLE = Automatic;
674
- CURRENT_PROJECT_VERSION = 4;
674
+ CURRENT_PROJECT_VERSION = 5;
675
675
  DEVELOPMENT_TEAM = FXH8NUGFYY;
676
676
  ENABLE_BITCODE = NO;
677
677
  INFOPLIST_FILE = Runner/Info.plist;
@@ -698,7 +698,7 @@
698
698
  CODE_SIGN_IDENTITY = "Apple Development";
699
699
  "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
700
700
  CODE_SIGN_STYLE = Manual;
701
- CURRENT_PROJECT_VERSION = 4;
701
+ CURRENT_PROJECT_VERSION = 5;
702
702
  DEVELOPMENT_TEAM = "";
703
703
  "DEVELOPMENT_TEAM[sdk=iphoneos*]" = FXH8NUGFYY;
704
704
  ENABLE_BITCODE = NO;
ios/Runner/Info.plist CHANGED
@@ -23,7 +23,7 @@
23
23
  <key>CFBundleSignature</key>
24
24
  <string>????</string>
25
25
  <key>CFBundleVersion</key>
26
- <string>4</string>
26
+ <string>5</string>
27
27
  <key>LSRequiresIPhoneOS</key>
28
28
  <true/>
29
29
  <key>UIApplicationSceneManifest</key>
@@ -72,10 +72,6 @@
72
72
  <false/>
73
73
  <key>NSPhotoLibraryUsageDescription</key>
74
74
  <string>Only Bible App uses the system file picker to let you choose a backup file to restore your highlights and settings. Depending on your device, this picker may show your photo library, though Only Bible App does not access your photos directly.</string>
75
- <key>NSCameraUsageDescription</key>
76
- <string>Only Bible App does not use the camera. This description is required because a bundled library references camera APIs, even though this app does not use them.</string>
77
- <key>NSLocationWhenInUseUsageDescription</key>
78
- <string>Only Bible App does not use your location. This description is required because a bundled library references location APIs, even though this app does not use them.</string>
79
75
  <key>NSAppleMusicUsageDescription</key>
80
76
  <string>Only Bible App does not access your music library. This description is required because a bundled library references media library APIs, even though this app does not use them.</string>
81
77
  </dict>
lib/app.dart CHANGED
@@ -22,31 +22,53 @@ class App extends StatelessWidget {
22
22
  path: "/chapter/:bookIndex/:chapterIndex",
23
23
  pageBuilder: (context, state) {
24
24
  final bookIndex = int.parse(state.pathParameters["bookIndex"]!);
25
+ final chapterIndex = int.parse(
25
- final chapterIndex = int.parse(state.pathParameters["chapterIndex"]!);
26
+ state.pathParameters["chapterIndex"]!,
27
+ );
28
+ final extra =
29
+ state.extra
30
+ as ({
26
- final extra = state.extra as ({TextDirection? slideDir, int? scrollToVerse, int navId})?;
31
+ TextDirection? slideDir,
32
+ int? scrollToVerse,
33
+ int navId,
34
+ })?;
27
35
  final slideDir = extra?.slideDir;
28
36
  final scrollToVerse = extra?.scrollToVerse;
37
+ final pageKey = ValueKey(
29
- final pageKey = ValueKey("$bookIndex-$chapterIndex-${extra?.navId ?? 0}");
38
+ "$bookIndex-$chapterIndex-${extra?.navId ?? 0}",
39
+ );
30
40
  if (slideDir != null) {
31
41
  return CustomTransitionPage(
32
42
  key: pageKey,
43
+ child: Home(
44
+ bookIndex: bookIndex,
45
+ chapterIndex: chapterIndex,
33
- child: Home(bookIndex: bookIndex, chapterIndex: chapterIndex, scrollToVerse: scrollToVerse),
46
+ scrollToVerse: scrollToVerse,
47
+ ),
48
+ transitionsBuilder:
34
- transitionsBuilder: (context, animation, secondaryAnimation, child) {
49
+ (context, animation, secondaryAnimation, child) {
35
- const begin = Offset(1.0, 0.0);
50
+ const begin = Offset(1.0, 0.0);
36
- const end = Offset.zero;
51
+ const end = Offset.zero;
37
- const curve = Curves.ease;
52
+ const curve = Curves.ease;
53
+ final tween = Tween(
54
+ begin: begin,
55
+ end: end,
38
- final tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
56
+ ).chain(CurveTween(curve: curve));
39
- return SlideTransition(
57
+ return SlideTransition(
40
- textDirection: slideDir,
58
+ textDirection: slideDir,
41
- position: animation.drive(tween),
59
+ position: animation.drive(tween),
42
- child: child,
60
+ child: child,
43
- );
61
+ );
44
- },
62
+ },
45
63
  );
46
64
  }
47
65
  return NoTransitionPage(
48
66
  key: pageKey,
67
+ child: Home(
68
+ bookIndex: bookIndex,
69
+ chapterIndex: chapterIndex,
49
- child: Home(bookIndex: bookIndex, chapterIndex: chapterIndex, scrollToVerse: scrollToVerse),
70
+ scrollToVerse: scrollToVerse,
71
+ ),
50
72
  );
51
73
  },
52
74
  ),
@@ -57,7 +79,8 @@ class App extends StatelessWidget {
57
79
  }
58
80
 
59
81
  void _syncCurrentChapter() {
82
+ final segments =
60
- final segments = _router.routerDelegate.currentConfiguration.uri.pathSegments;
83
+ _router.routerDelegate.currentConfiguration.uri.pathSegments;
61
84
  if (segments.length != 3 || segments.first != "chapter") return;
62
85
 
63
86
  final book = int.tryParse(segments[1]);
lib/dialog.dart CHANGED
@@ -4,6 +4,7 @@ import "package:flutter/material.dart";
4
4
  import "package:only_bible_app/bible_data.dart";
5
5
  import "package:only_bible_app/gen/bible.gen.dart";
6
6
  import "package:only_bible_app/store/actions_navigation.dart";
7
+ import "package:only_bible_app/store/app_navigator.dart";
7
8
  import "package:only_bible_app/store/app_state.dart";
8
9
  export "package:shared/shared.dart" show showAlert, showError, showConfirm;
9
10
 
@@ -14,7 +15,10 @@ void showBibleSelectDialog(BuildContext context, Bible bible) {
14
15
  builder: (dialogContext) {
15
16
  return AlertDialog(
16
17
  title: Text(bible.bibleSelectTitle!),
17
- contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
18
+ contentPadding: const EdgeInsets.symmetric(
19
+ horizontal: 16,
20
+ vertical: 12,
21
+ ),
18
22
  content: SizedBox(
19
23
  // Capped so the list doesn't stretch edge-to-edge on wide
20
24
  // desktop/tablet windows, where double.maxFinite would otherwise
@@ -23,7 +27,7 @@ void showBibleSelectDialog(BuildContext context, Bible bible) {
23
27
  height: 400,
24
28
  child: ListView.separated(
25
29
  itemCount: bibleItems.length,
26
- separatorBuilder: (_, __) => const Divider(height: 1),
30
+ separatorBuilder: (_, _) => const Divider(height: 1),
27
31
  itemBuilder: (itemContext, index) {
28
32
  final item = bibleItems.values.elementAt(index);
29
33
  final isSelected = context.read().bible.name == item.fileName;
@@ -31,16 +35,31 @@ void showBibleSelectDialog(BuildContext context, Bible bible) {
31
35
  selected: isSelected,
32
36
  tileColor: null,
33
37
  leading: const Icon(Icons.menu_book),
38
+ title: Text(
39
+ item.languageNative,
34
- title: Text(item.languageNative, style: const TextStyle(fontWeight: FontWeight.w600)),
40
+ style: const TextStyle(fontWeight: FontWeight.w600),
41
+ ),
35
42
  subtitle: (item.languageNative != item.languageEnglish)
43
+ ? Text(
44
+ item.languageEnglish,
45
+ style: const TextStyle(
46
+ fontSize: 15,
36
- ? Text(item.languageEnglish, style: const TextStyle(fontSize: 15, fontWeight: FontWeight.w400))
47
+ fontWeight: FontWeight.w400,
48
+ ),
49
+ )
37
50
  : null,
38
51
  trailing: isSelected ? const Icon(Icons.check) : null,
39
52
  onTap: () {
40
53
  final s = context.read();
54
+ final router = context.router;
41
55
  Navigator.of(itemContext).pop();
42
56
  context.dispatch(
43
- UpdateCurrentBibleAction(item.fileName, s.savedBook, s.savedChapter),
57
+ UpdateCurrentBibleAction(
58
+ router,
59
+ item.fileName,
60
+ s.savedBook,
61
+ s.savedChapter,
62
+ ),
44
63
  );
45
64
  },
46
65
  );
lib/home.dart CHANGED
@@ -132,7 +132,7 @@ class _HomeState extends State<Home> {
132
132
  onEdgeSwipeRight: () {
133
133
  final router = context.router;
134
134
  if (router.canPop()) {
135
- router.pop();
135
+ context.dispatch(PopChapterAction(router));
136
136
  } else {
137
137
  context.dispatch(PreviousChapterAction(router, bible, chapter.book, chapter.index));
138
138
  }
lib/store/actions_navigation.dart CHANGED
@@ -131,6 +131,12 @@ class ShowChapterSelectAction extends ReduxAction<AppState> {
131
131
  }
132
132
  }
133
133
 
134
+ // Tracks the (book, chapter) each GoToChapterAction push navigated away
135
+ // from, so PopChapterAction can restore savedBook/savedChapter synchronously
136
+ // instead of waiting on the routerDelegate listener, which does not fire
137
+ // until a pop's page transition animation completes (see PopChapterAction).
138
+ final List<(int, int)> _chapterHistory = [];
139
+
134
140
  class GoToChapterAction extends ReduxAction<AppState> {
135
141
  final GoRouter router;
136
142
  final int book;
@@ -153,6 +159,7 @@ class GoToChapterAction extends ReduxAction<AppState> {
153
159
  } else {
154
160
  slideDir = null;
155
161
  }
162
+ _chapterHistory.add((state.savedBook, state.savedChapter));
156
163
  // Update savedBook/savedChapter before pushing: GoRouter notifies the
157
164
  // routerDelegate listener (App._syncCurrentChapter) synchronously as
158
165
  // part of push(), which dispatches SyncCurrentChapterAction. Setting
@@ -167,6 +174,27 @@ class GoToChapterAction extends ReduxAction<AppState> {
167
174
  }
168
175
  }
169
176
 
177
+ class PopChapterAction extends ReduxAction<AppState> {
178
+ final GoRouter router;
179
+
180
+ PopChapterAction(this.router);
181
+
182
+ @override
183
+ AppState? reduce() {
184
+ // Unlike push(), GoRouterDelegate.pop() only notifies its listener once
185
+ // the page's exit transition finishes, so App._syncCurrentChapter can't
186
+ // be relied on to update savedBook/savedChapter promptly. Restore them
187
+ // from our own history here, before popping, the same way GoToChapterAction
188
+ // updates them before pushing.
189
+ if (_chapterHistory.isNotEmpty) {
190
+ final (book, chapter) = _chapterHistory.removeLast();
191
+ dispatch(UpdateChapterAction(book, chapter));
192
+ }
193
+ router.pop();
194
+ return null;
195
+ }
196
+ }
197
+
170
198
  class SyncCurrentChapterAction extends ReduxAction<AppState> {
171
199
  final int book;
172
200
  final int chapter;
@@ -245,16 +273,22 @@ class PreviousChapterAction extends ReduxAction<AppState> {
245
273
  }
246
274
 
247
275
  class UpdateCurrentBibleAction extends ReduxAction<AppState> {
276
+ final GoRouter router;
248
277
  final String name;
249
278
  final int book;
250
279
  final int chapter;
251
280
 
252
- UpdateCurrentBibleAction(this.name, this.book, this.chapter);
281
+ UpdateCurrentBibleAction(this.router, this.name, this.book, this.chapter);
253
282
 
254
283
  @override
255
284
  Future<AppState> reduce() async {
256
285
  final bible = await loadBible(name);
257
286
  final (newBook, newChapter) = clampBookChapter(bible, book, chapter);
287
+ // Keep the route in sync with the clamped book/chapter: otherwise the
288
+ // URL keeps pointing at the pre-switch (possibly now out-of-range)
289
+ // chapter, and a later App._syncCurrentChapter dispatch would clobber
290
+ // savedBook/savedChapter back to those stale path segments.
291
+ router.pushReplacement("/chapter/$newBook/$newChapter");
258
292
  return state.copy(
259
293
  bible: bible,
260
294
  savedBook: newBook,
macos/Runner/Info.plist CHANGED
@@ -34,10 +34,6 @@
34
34
  <string>NSApplication</string>
35
35
  <key>NSPhotoLibraryUsageDescription</key>
36
36
  <string>Only Bible App uses the system file picker to let you choose a backup file to restore your highlights and settings. Depending on your device, this picker may show your photo library, though Only Bible App does not access your photos directly.</string>
37
- <key>NSCameraUsageDescription</key>
38
- <string>Only Bible App does not use the camera. This description is required because a bundled library references camera APIs, even though this app does not use them.</string>
39
- <key>NSLocationWhenInUseUsageDescription</key>
40
- <string>Only Bible App does not use your location. This description is required because a bundled library references location APIs, even though this app does not use them.</string>
41
37
  <key>NSAppleMusicUsageDescription</key>
42
38
  <string>Only Bible App does not access your music library. This description is required because a bundled library references media library APIs, even though this app does not use them.</string>
43
39
  </dict>
pubspec.lock ADDED
@@ -0,0 +1,1384 @@
1
+ # Generated by pub
2
+ # See https://dart.dev/tools/pub/glossary#lockfile
3
+ packages:
4
+ _fe_analyzer_shared:
5
+ dependency: transitive
6
+ description:
7
+ name: _fe_analyzer_shared
8
+ sha256: a49d6cf99e8d8e7a8e93668d09ced0bbdb954d0b4fccc2f5f9241c6b87fad95c
9
+ url: "https://pub.dev"
10
+ source: hosted
11
+ version: "99.0.0"
12
+ analyzer:
13
+ dependency: transitive
14
+ description:
15
+ name: analyzer
16
+ sha256: "663efa951fb8a45e06f491223a604c93820598f20e6a99c25617a1576065e8b7"
17
+ url: "https://pub.dev"
18
+ source: hosted
19
+ version: "12.1.0"
20
+ ansicolor:
21
+ dependency: transitive
22
+ description:
23
+ name: ansicolor
24
+ sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f"
25
+ url: "https://pub.dev"
26
+ source: hosted
27
+ version: "2.0.3"
28
+ archive:
29
+ dependency: "direct main"
30
+ description:
31
+ name: archive
32
+ sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
33
+ url: "https://pub.dev"
34
+ source: hosted
35
+ version: "4.0.9"
36
+ args:
37
+ dependency: transitive
38
+ description:
39
+ name: args
40
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
41
+ url: "https://pub.dev"
42
+ source: hosted
43
+ version: "2.7.0"
44
+ async:
45
+ dependency: transitive
46
+ description:
47
+ name: async
48
+ sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
49
+ url: "https://pub.dev"
50
+ source: hosted
51
+ version: "2.13.1"
52
+ async_redux:
53
+ dependency: "direct main"
54
+ description:
55
+ name: async_redux
56
+ sha256: e941b740c05f931bdd0a0b965fa1c77a52102f6da3ea9e876fb87153f8cb03c1
57
+ url: "https://pub.dev"
58
+ source: hosted
59
+ version: "28.1.0"
60
+ async_redux_core:
61
+ dependency: transitive
62
+ description:
63
+ name: async_redux_core
64
+ sha256: "7c1075bc14304ae23352ccea5fe16515720a6d4d5a8f6d0e65ae63dc4b243c27"
65
+ url: "https://pub.dev"
66
+ source: hosted
67
+ version: "1.5.0"
68
+ aws_common:
69
+ dependency: transitive
70
+ description:
71
+ name: aws_common
72
+ sha256: "939b46121d41c6d6d1419a6f242baefa2403b67ab04919465022cff297b86763"
73
+ url: "https://pub.dev"
74
+ source: hosted
75
+ version: "0.7.15"
76
+ aws_signature_v4:
77
+ dependency: transitive
78
+ description:
79
+ name: aws_signature_v4
80
+ sha256: "83d3fd9402f2a4145ec96b972da779d8658f9505cdd52888d6cbcc2551f5ad88"
81
+ url: "https://pub.dev"
82
+ source: hosted
83
+ version: "0.6.13"
84
+ boolean_selector:
85
+ dependency: transitive
86
+ description:
87
+ name: boolean_selector
88
+ sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
89
+ url: "https://pub.dev"
90
+ source: hosted
91
+ version: "2.1.2"
92
+ build:
93
+ dependency: transitive
94
+ description:
95
+ name: build
96
+ sha256: "45d14a0fb23e018d8287c32fc98d726ce466b231928ed9b9200f29bd3ccd39ae"
97
+ url: "https://pub.dev"
98
+ source: hosted
99
+ version: "4.0.7"
100
+ build_config:
101
+ dependency: transitive
102
+ description:
103
+ name: build_config
104
+ sha256: "94eaf6708fe64408c632ef2689ca3777b112f9421306ccf4f8c84d7c5c9f83f8"
105
+ url: "https://pub.dev"
106
+ source: hosted
107
+ version: "1.3.2"
108
+ build_daemon:
109
+ dependency: transitive
110
+ description:
111
+ name: build_daemon
112
+ sha256: "57c62a6d85c39d2a8c984e3b73b29bf2775a865e690309405aeade647fb2184c"
113
+ url: "https://pub.dev"
114
+ source: hosted
115
+ version: "4.1.4"
116
+ build_runner:
117
+ dependency: "direct dev"
118
+ description:
119
+ name: build_runner
120
+ sha256: "5367e521935b102bdf1e735d2aab461e36b2edca6517662d088dd04cc39f8d16"
121
+ url: "https://pub.dev"
122
+ source: hosted
123
+ version: "2.15.1"
124
+ built_collection:
125
+ dependency: transitive
126
+ description:
127
+ name: built_collection
128
+ sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
129
+ url: "https://pub.dev"
130
+ source: hosted
131
+ version: "5.1.1"
132
+ built_value:
133
+ dependency: transitive
134
+ description:
135
+ name: built_value
136
+ sha256: "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56"
137
+ url: "https://pub.dev"
138
+ source: hosted
139
+ version: "8.12.6"
140
+ characters:
141
+ dependency: transitive
142
+ description:
143
+ name: characters
144
+ sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
145
+ url: "https://pub.dev"
146
+ source: hosted
147
+ version: "1.4.1"
148
+ checked_yaml:
149
+ dependency: transitive
150
+ description:
151
+ name: checked_yaml
152
+ sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
153
+ url: "https://pub.dev"
154
+ source: hosted
155
+ version: "2.0.4"
156
+ cli_config:
157
+ dependency: transitive
158
+ description:
159
+ name: cli_config
160
+ sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec
161
+ url: "https://pub.dev"
162
+ source: hosted
163
+ version: "0.2.0"
164
+ cli_util:
165
+ dependency: transitive
166
+ description:
167
+ name: cli_util
168
+ sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
169
+ url: "https://pub.dev"
170
+ source: hosted
171
+ version: "0.4.2"
172
+ clock:
173
+ dependency: transitive
174
+ description:
175
+ name: clock
176
+ sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
177
+ url: "https://pub.dev"
178
+ source: hosted
179
+ version: "1.1.2"
180
+ code_assets:
181
+ dependency: transitive
182
+ description:
183
+ name: code_assets
184
+ sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8
185
+ url: "https://pub.dev"
186
+ source: hosted
187
+ version: "1.2.1"
188
+ code_builder:
189
+ dependency: transitive
190
+ description:
191
+ name: code_builder
192
+ sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
193
+ url: "https://pub.dev"
194
+ source: hosted
195
+ version: "4.11.1"
196
+ collection:
197
+ dependency: transitive
198
+ description:
199
+ name: collection
200
+ sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
201
+ url: "https://pub.dev"
202
+ source: hosted
203
+ version: "1.19.1"
204
+ color:
205
+ dependency: transitive
206
+ description:
207
+ name: color
208
+ sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb
209
+ url: "https://pub.dev"
210
+ source: hosted
211
+ version: "3.0.0"
212
+ connectivity_plus:
213
+ dependency: transitive
214
+ description:
215
+ name: connectivity_plus
216
+ sha256: "762c99f890ca8bf87f7337236f99edd42793843bc6c3631da294a76653a54bd0"
217
+ url: "https://pub.dev"
218
+ source: hosted
219
+ version: "7.3.1"
220
+ connectivity_plus_platform_interface:
221
+ dependency: transitive
222
+ description:
223
+ name: connectivity_plus_platform_interface
224
+ sha256: "3c09627c536d22fd24691a905cdd8b14520de69da52c7a97499c8be5284a32ed"
225
+ url: "https://pub.dev"
226
+ source: hosted
227
+ version: "2.1.0"
228
+ convert:
229
+ dependency: transitive
230
+ description:
231
+ name: convert
232
+ sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
233
+ url: "https://pub.dev"
234
+ source: hosted
235
+ version: "3.1.2"
236
+ coverage:
237
+ dependency: transitive
238
+ description:
239
+ name: coverage
240
+ sha256: "956a3de0725ca232ad353565a8290d3357592bf4250f6f298a185e2d949c5d3d"
241
+ url: "https://pub.dev"
242
+ source: hosted
243
+ version: "1.15.1"
244
+ cross_file:
245
+ dependency: transitive
246
+ description:
247
+ name: cross_file
248
+ sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51"
249
+ url: "https://pub.dev"
250
+ source: hosted
251
+ version: "0.3.5+4"
252
+ crypto:
253
+ dependency: transitive
254
+ description:
255
+ name: crypto
256
+ sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
257
+ url: "https://pub.dev"
258
+ source: hosted
259
+ version: "3.0.7"
260
+ csslib:
261
+ dependency: transitive
262
+ description:
263
+ name: csslib
264
+ sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
265
+ url: "https://pub.dev"
266
+ source: hosted
267
+ version: "1.0.2"
268
+ cupertino_icons:
269
+ dependency: "direct main"
270
+ description:
271
+ name: cupertino_icons
272
+ sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
273
+ url: "https://pub.dev"
274
+ source: hosted
275
+ version: "1.0.9"
276
+ dart_style:
277
+ dependency: transitive
278
+ description:
279
+ name: dart_style
280
+ sha256: a4c1ccfee44c7e75ed80484071a5c142a385345e658fd8bd7c4b5c97e7198f98
281
+ url: "https://pub.dev"
282
+ source: hosted
283
+ version: "3.1.8"
284
+ dartx:
285
+ dependency: transitive
286
+ description:
287
+ name: dartx
288
+ sha256: "8b25435617027257d43e6508b5fe061012880ddfdaa75a71d607c3de2a13d244"
289
+ url: "https://pub.dev"
290
+ source: hosted
291
+ version: "1.2.0"
292
+ dbus:
293
+ dependency: transitive
294
+ description:
295
+ name: dbus
296
+ sha256: "792974a4007974fbc5c1b5433eb2330a9db3e368c3f906253af4c007d0f49a91"
297
+ url: "https://pub.dev"
298
+ source: hosted
299
+ version: "0.7.13"
300
+ envied:
301
+ dependency: "direct main"
302
+ description:
303
+ name: envied
304
+ sha256: "58e4c620ae2efd25d0a822cf364858e56bdd2767ecafde272cd8b5e7343dcd50"
305
+ url: "https://pub.dev"
306
+ source: hosted
307
+ version: "1.3.8"
308
+ envied_generator:
309
+ dependency: "direct dev"
310
+ description:
311
+ name: envied_generator
312
+ sha256: b8d7552641f81b511b9b69492135801a3c3a945e2af609ad817ff1fc9bd997e2
313
+ url: "https://pub.dev"
314
+ source: hosted
315
+ version: "1.3.8"
316
+ equatable:
317
+ dependency: transitive
318
+ description:
319
+ name: equatable
320
+ sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2"
321
+ url: "https://pub.dev"
322
+ source: hosted
323
+ version: "2.1.0"
324
+ fake_async:
325
+ dependency: transitive
326
+ description:
327
+ name: fake_async
328
+ sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
329
+ url: "https://pub.dev"
330
+ source: hosted
331
+ version: "1.3.3"
332
+ fast_immutable_collections:
333
+ dependency: transitive
334
+ description:
335
+ name: fast_immutable_collections
336
+ sha256: "58cec99fc068427c71901e82d4b31b232240ebe6e61200993c2cb91bcada0ff6"
337
+ url: "https://pub.dev"
338
+ source: hosted
339
+ version: "11.2.0"
340
+ ffi:
341
+ dependency: transitive
342
+ description:
343
+ name: ffi
344
+ sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
345
+ url: "https://pub.dev"
346
+ source: hosted
347
+ version: "2.2.0"
348
+ file:
349
+ dependency: transitive
350
+ description:
351
+ name: file
352
+ sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
353
+ url: "https://pub.dev"
354
+ source: hosted
355
+ version: "7.0.1"
356
+ file_picker:
357
+ dependency: "direct main"
358
+ description:
359
+ name: file_picker
360
+ sha256: "29cc1fdb20613876cc7afc529738c1c0f11a9ca159b010edad0c566ac330847e"
361
+ url: "https://pub.dev"
362
+ source: hosted
363
+ version: "11.0.3"
364
+ fixnum:
365
+ dependency: transitive
366
+ description:
367
+ name: fixnum
368
+ sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
369
+ url: "https://pub.dev"
370
+ source: hosted
371
+ version: "1.1.1"
372
+ flat_buffers:
373
+ dependency: "direct main"
374
+ description:
375
+ name: flat_buffers
376
+ sha256: "7c1de2d6eb5f3e61e5c50040841109f509deaaf2b12ec0d57b92456d9ea50345"
377
+ url: "https://pub.dev"
378
+ source: hosted
379
+ version: "25.9.23"
380
+ flutter:
381
+ dependency: "direct main"
382
+ description: flutter
383
+ source: sdk
384
+ version: "0.0.0"
385
+ flutter_azure_tts:
386
+ dependency: "direct main"
387
+ description:
388
+ name: flutter_azure_tts
389
+ sha256: "130b1bb36de0ef5e090d76d172920b63e7381fd85eb6acf76a2cbbc6de2859ea"
390
+ url: "https://pub.dev"
391
+ source: hosted
392
+ version: "1.0.0"
393
+ flutter_cache_manager:
394
+ dependency: transitive
395
+ description:
396
+ name: flutter_cache_manager
397
+ sha256: "1de7849213b4c73c85aca7e0ac687a9a5d82ccdb594366b9dcc26cb6a2189cd2"
398
+ url: "https://pub.dev"
399
+ source: hosted
400
+ version: "3.4.2"
401
+ flutter_driver:
402
+ dependency: transitive
403
+ description: flutter
404
+ source: sdk
405
+ version: "0.0.0"
406
+ flutter_gen_core:
407
+ dependency: transitive
408
+ description:
409
+ name: flutter_gen_core
410
+ sha256: "8ccb1f809642b34eb4857d8d7c4e5b41430a8cba8206177aae2ffe9d72b5eef3"
411
+ url: "https://pub.dev"
412
+ source: hosted
413
+ version: "5.15.0"
414
+ flutter_gen_runner:
415
+ dependency: "direct dev"
416
+ description:
417
+ name: flutter_gen_runner
418
+ sha256: "2b0fff517a75a14ed2eff749c1da2d6b8b568e542ad2b1c967356669a4c29bb2"
419
+ url: "https://pub.dev"
420
+ source: hosted
421
+ version: "5.15.0"
422
+ flutter_launcher_icons:
423
+ dependency: "direct dev"
424
+ description:
425
+ name: flutter_launcher_icons
426
+ sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7"
427
+ url: "https://pub.dev"
428
+ source: hosted
429
+ version: "0.14.4"
430
+ flutter_lints:
431
+ dependency: "direct dev"
432
+ description:
433
+ name: flutter_lints
434
+ sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
435
+ url: "https://pub.dev"
436
+ source: hosted
437
+ version: "6.0.0"
438
+ flutter_native_splash:
439
+ dependency: "direct main"
440
+ description:
441
+ name: flutter_native_splash
442
+ sha256: "9db4b80b044e9af17cc4b1272137fc7ace0054d879ef8210a76adc34aaf4cdff"
443
+ url: "https://pub.dev"
444
+ source: hosted
445
+ version: "2.4.8"
446
+ flutter_plugin_android_lifecycle:
447
+ dependency: transitive
448
+ description:
449
+ name: flutter_plugin_android_lifecycle
450
+ sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785"
451
+ url: "https://pub.dev"
452
+ source: hosted
453
+ version: "2.0.35"
454
+ flutter_secure_storage:
455
+ dependency: transitive
456
+ description:
457
+ name: flutter_secure_storage
458
+ sha256: "7686b1d6a29985dcbb808c59518226e603e3bfa7c0ddfd1a0d00e4cda77c868e"
459
+ url: "https://pub.dev"
460
+ source: hosted
461
+ version: "10.3.1"
462
+ flutter_secure_storage_darwin:
463
+ dependency: transitive
464
+ description:
465
+ name: flutter_secure_storage_darwin
466
+ sha256: "82329fa5cdf343773b1b6897dea959105a29f092454259edff92f9f6637e8149"
467
+ url: "https://pub.dev"
468
+ source: hosted
469
+ version: "0.3.2"
470
+ flutter_secure_storage_linux:
471
+ dependency: transitive
472
+ description:
473
+ name: flutter_secure_storage_linux
474
+ sha256: a5f35ddab43cf5c8215d2feb4ce1957851f28c5c37e6f04335066a0602087bf5
475
+ url: "https://pub.dev"
476
+ source: hosted
477
+ version: "3.0.1"
478
+ flutter_secure_storage_platform_interface:
479
+ dependency: transitive
480
+ description:
481
+ name: flutter_secure_storage_platform_interface
482
+ sha256: "06686df417f34fe9f963ed217b7fdce250e2f637ddd6c374d7eb054549770633"
483
+ url: "https://pub.dev"
484
+ source: hosted
485
+ version: "2.0.2"
486
+ flutter_secure_storage_web:
487
+ dependency: transitive
488
+ description:
489
+ name: flutter_secure_storage_web
490
+ sha256: "073a62b3aeb866ab4ce795f960413948e51e5a42a9b0c8333b6daf5bb3208a1c"
491
+ url: "https://pub.dev"
492
+ source: hosted
493
+ version: "2.1.1"
494
+ flutter_secure_storage_windows:
495
+ dependency: transitive
496
+ description:
497
+ name: flutter_secure_storage_windows
498
+ sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613"
499
+ url: "https://pub.dev"
500
+ source: hosted
501
+ version: "4.1.0"
502
+ flutter_soloud:
503
+ dependency: "direct main"
504
+ description:
505
+ name: flutter_soloud
506
+ sha256: d275ff1fcaca64eab81189f260613b42787655d213013ab316ecd31bb52a5913
507
+ url: "https://pub.dev"
508
+ source: hosted
509
+ version: "3.5.4"
510
+ flutter_test:
511
+ dependency: "direct dev"
512
+ description: flutter
513
+ source: sdk
514
+ version: "0.0.0"
515
+ flutter_web_plugins:
516
+ dependency: transitive
517
+ description: flutter
518
+ source: sdk
519
+ version: "0.0.0"
520
+ frontend_server_client:
521
+ dependency: transitive
522
+ description:
523
+ name: frontend_server_client
524
+ sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
525
+ url: "https://pub.dev"
526
+ source: hosted
527
+ version: "4.0.0"
528
+ fuchsia_remote_debug_protocol:
529
+ dependency: transitive
530
+ description: flutter
531
+ source: sdk
532
+ version: "0.0.0"
533
+ glob:
534
+ dependency: transitive
535
+ description:
536
+ name: glob
537
+ sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
538
+ url: "https://pub.dev"
539
+ source: hosted
540
+ version: "2.1.3"
541
+ go_router:
542
+ dependency: "direct main"
543
+ description:
544
+ name: go_router
545
+ sha256: "55973bf1b27790489f8710ea615fe939f911ddcc5986fe97305e4fc19fa29ee9"
546
+ url: "https://pub.dev"
547
+ source: hosted
548
+ version: "17.4.0"
549
+ golden_screenshot:
550
+ dependency: "direct dev"
551
+ description:
552
+ name: golden_screenshot
553
+ sha256: c3ebae338a174bc4e6c20c19201002b839da38948e853ae3965bacb694e3b2d5
554
+ url: "https://pub.dev"
555
+ source: hosted
556
+ version: "11.0.1"
557
+ graphs:
558
+ dependency: transitive
559
+ description:
560
+ name: graphs
561
+ sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
562
+ url: "https://pub.dev"
563
+ source: hosted
564
+ version: "2.3.2"
565
+ hashcodes:
566
+ dependency: transitive
567
+ description:
568
+ name: hashcodes
569
+ sha256: "80f9410a5b3c8e110c4b7604546034749259f5d6dcca63e0d3c17c9258f1a651"
570
+ url: "https://pub.dev"
571
+ source: hosted
572
+ version: "2.0.0"
573
+ hooks:
574
+ dependency: transitive
575
+ description:
576
+ name: hooks
577
+ sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba"
578
+ url: "https://pub.dev"
579
+ source: hosted
580
+ version: "2.0.2"
581
+ html:
582
+ dependency: "direct dev"
583
+ description:
584
+ name: html
585
+ sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
586
+ url: "https://pub.dev"
587
+ source: hosted
588
+ version: "0.15.6"
589
+ http:
590
+ dependency: "direct main"
591
+ description:
592
+ name: http
593
+ sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
594
+ url: "https://pub.dev"
595
+ source: hosted
596
+ version: "1.6.0"
597
+ http2:
598
+ dependency: transitive
599
+ description:
600
+ name: http2
601
+ sha256: "382d3aefc5bd6dc68c6b892d7664f29b5beb3251611ae946a98d35158a82bbfa"
602
+ url: "https://pub.dev"
603
+ source: hosted
604
+ version: "2.3.1"
605
+ http_multi_server:
606
+ dependency: transitive
607
+ description:
608
+ name: http_multi_server
609
+ sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
610
+ url: "https://pub.dev"
611
+ source: hosted
612
+ version: "3.2.2"
613
+ http_parser:
614
+ dependency: transitive
615
+ description:
616
+ name: http_parser
617
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
618
+ url: "https://pub.dev"
619
+ source: hosted
620
+ version: "4.1.2"
621
+ i18n_extension_core:
622
+ dependency: transitive
623
+ description:
624
+ name: i18n_extension_core
625
+ sha256: "5d17d355b95882e803f89c97cad610ab7967a798f8e519563d274f7888bc968e"
626
+ url: "https://pub.dev"
627
+ source: hosted
628
+ version: "5.0.2"
629
+ image:
630
+ dependency: transitive
631
+ description:
632
+ name: image
633
+ sha256: "6300175e00616bbc832e2fc91bfa4d776af5402c81c7151bee6905bb08473c52"
634
+ url: "https://pub.dev"
635
+ source: hosted
636
+ version: "4.9.1"
637
+ image_size_getter:
638
+ dependency: transitive
639
+ description:
640
+ name: image_size_getter
641
+ sha256: "7c26937e0ae341ca558b7556591fd0cc456fcc454583b7cb665d2f03e93e590f"
642
+ url: "https://pub.dev"
643
+ source: hosted
644
+ version: "2.4.1"
645
+ integration_test:
646
+ dependency: "direct dev"
647
+ description: flutter
648
+ source: sdk
649
+ version: "0.0.0"
650
+ io:
651
+ dependency: transitive
652
+ description:
653
+ name: io
654
+ sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
655
+ url: "https://pub.dev"
656
+ source: hosted
657
+ version: "1.0.5"
658
+ jni:
659
+ dependency: transitive
660
+ description:
661
+ name: jni
662
+ sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3
663
+ url: "https://pub.dev"
664
+ source: hosted
665
+ version: "1.0.3"
666
+ jni_flutter:
667
+ dependency: transitive
668
+ description:
669
+ name: jni_flutter
670
+ sha256: "7b717011ea40d04fd47c2731d3d1d36eb99eba3435c2753d62489e8c3c9991d5"
671
+ url: "https://pub.dev"
672
+ source: hosted
673
+ version: "1.0.2"
674
+ jni_util:
675
+ dependency: transitive
676
+ description:
677
+ name: jni_util
678
+ sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f"
679
+ url: "https://pub.dev"
680
+ source: hosted
681
+ version: "1.0.0"
682
+ json_annotation:
683
+ dependency: transitive
684
+ description:
685
+ name: json_annotation
686
+ sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80"
687
+ url: "https://pub.dev"
688
+ source: hosted
689
+ version: "4.12.0"
690
+ leak_tracker:
691
+ dependency: transitive
692
+ description:
693
+ name: leak_tracker
694
+ sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
695
+ url: "https://pub.dev"
696
+ source: hosted
697
+ version: "11.0.2"
698
+ leak_tracker_flutter_testing:
699
+ dependency: transitive
700
+ description:
701
+ name: leak_tracker_flutter_testing
702
+ sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
703
+ url: "https://pub.dev"
704
+ source: hosted
705
+ version: "3.0.10"
706
+ leak_tracker_testing:
707
+ dependency: transitive
708
+ description:
709
+ name: leak_tracker_testing
710
+ sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
711
+ url: "https://pub.dev"
712
+ source: hosted
713
+ version: "3.0.2"
714
+ lints:
715
+ dependency: transitive
716
+ description:
717
+ name: lints
718
+ sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
719
+ url: "https://pub.dev"
720
+ source: hosted
721
+ version: "6.1.0"
722
+ logging:
723
+ dependency: transitive
724
+ description:
725
+ name: logging
726
+ sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
727
+ url: "https://pub.dev"
728
+ source: hosted
729
+ version: "1.3.0"
730
+ matcher:
731
+ dependency: transitive
732
+ description:
733
+ name: matcher
734
+ sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
735
+ url: "https://pub.dev"
736
+ source: hosted
737
+ version: "0.12.19"
738
+ material_color_utilities:
739
+ dependency: transitive
740
+ description:
741
+ name: material_color_utilities
742
+ sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
743
+ url: "https://pub.dev"
744
+ source: hosted
745
+ version: "0.13.0"
746
+ meta:
747
+ dependency: transitive
748
+ description:
749
+ name: meta
750
+ sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
751
+ url: "https://pub.dev"
752
+ source: hosted
753
+ version: "1.18.0"
754
+ mime:
755
+ dependency: transitive
756
+ description:
757
+ name: mime
758
+ sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
759
+ url: "https://pub.dev"
760
+ source: hosted
761
+ version: "2.0.0"
762
+ nm:
763
+ dependency: transitive
764
+ description:
765
+ name: nm
766
+ sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254"
767
+ url: "https://pub.dev"
768
+ source: hosted
769
+ version: "0.5.0"
770
+ node_preamble:
771
+ dependency: transitive
772
+ description:
773
+ name: node_preamble
774
+ sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
775
+ url: "https://pub.dev"
776
+ source: hosted
777
+ version: "2.0.2"
778
+ objective_c:
779
+ dependency: transitive
780
+ description:
781
+ name: objective_c
782
+ sha256: b7fb95a6d9a4f009edd63dc5ac69f07420b23a16161c6dd8660290b59c602e8e
783
+ url: "https://pub.dev"
784
+ source: hosted
785
+ version: "9.5.0"
786
+ os_detect:
787
+ dependency: transitive
788
+ description:
789
+ name: os_detect
790
+ sha256: "7d87c0dd98c6faf110d5aa498e9a6df02ffce4bb78cc9cfc8ad02929be9bb71f"
791
+ url: "https://pub.dev"
792
+ source: hosted
793
+ version: "2.0.3"
794
+ package_config:
795
+ dependency: transitive
796
+ description:
797
+ name: package_config
798
+ sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
799
+ url: "https://pub.dev"
800
+ source: hosted
801
+ version: "2.2.0"
802
+ package_info_plus:
803
+ dependency: "direct main"
804
+ description:
805
+ name: package_info_plus
806
+ sha256: "468c26b4254ab01979fa5e4a98cb343ea3631b9acee6f21028997419a80e1a20"
807
+ url: "https://pub.dev"
808
+ source: hosted
809
+ version: "9.0.1"
810
+ package_info_plus_platform_interface:
811
+ dependency: transitive
812
+ description:
813
+ name: package_info_plus_platform_interface
814
+ sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086"
815
+ url: "https://pub.dev"
816
+ source: hosted
817
+ version: "3.2.1"
818
+ path:
819
+ dependency: transitive
820
+ description:
821
+ name: path
822
+ sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
823
+ url: "https://pub.dev"
824
+ source: hosted
825
+ version: "1.9.1"
826
+ path_parsing:
827
+ dependency: transitive
828
+ description:
829
+ name: path_parsing
830
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
831
+ url: "https://pub.dev"
832
+ source: hosted
833
+ version: "1.1.0"
834
+ path_provider:
835
+ dependency: "direct main"
836
+ description:
837
+ name: path_provider
838
+ sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825
839
+ url: "https://pub.dev"
840
+ source: hosted
841
+ version: "2.1.6"
842
+ path_provider_android:
843
+ dependency: transitive
844
+ description:
845
+ name: path_provider_android
846
+ sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
847
+ url: "https://pub.dev"
848
+ source: hosted
849
+ version: "2.3.1"
850
+ path_provider_foundation:
851
+ dependency: transitive
852
+ description:
853
+ name: path_provider_foundation
854
+ sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
855
+ url: "https://pub.dev"
856
+ source: hosted
857
+ version: "2.6.0"
858
+ path_provider_linux:
859
+ dependency: transitive
860
+ description:
861
+ name: path_provider_linux
862
+ sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16"
863
+ url: "https://pub.dev"
864
+ source: hosted
865
+ version: "2.2.2"
866
+ path_provider_platform_interface:
867
+ dependency: "direct dev"
868
+ description:
869
+ name: path_provider_platform_interface
870
+ sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda"
871
+ url: "https://pub.dev"
872
+ source: hosted
873
+ version: "2.1.3"
874
+ path_provider_windows:
875
+ dependency: transitive
876
+ description:
877
+ name: path_provider_windows
878
+ sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
879
+ url: "https://pub.dev"
880
+ source: hosted
881
+ version: "2.3.0"
882
+ petitparser:
883
+ dependency: transitive
884
+ description:
885
+ name: petitparser
886
+ sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
887
+ url: "https://pub.dev"
888
+ source: hosted
889
+ version: "7.0.2"
890
+ platform:
891
+ dependency: transitive
892
+ description:
893
+ name: platform
894
+ sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
895
+ url: "https://pub.dev"
896
+ source: hosted
897
+ version: "3.1.6"
898
+ plugin_platform_interface:
899
+ dependency: transitive
900
+ description:
901
+ name: plugin_platform_interface
902
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
903
+ url: "https://pub.dev"
904
+ source: hosted
905
+ version: "2.1.8"
906
+ pool:
907
+ dependency: transitive
908
+ description:
909
+ name: pool
910
+ sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
911
+ url: "https://pub.dev"
912
+ source: hosted
913
+ version: "1.5.2"
914
+ posix:
915
+ dependency: transitive
916
+ description:
917
+ name: posix
918
+ sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e
919
+ url: "https://pub.dev"
920
+ source: hosted
921
+ version: "6.5.2"
922
+ process:
923
+ dependency: transitive
924
+ description:
925
+ name: process
926
+ sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744
927
+ url: "https://pub.dev"
928
+ source: hosted
929
+ version: "5.0.5"
930
+ pub_semver:
931
+ dependency: transitive
932
+ description:
933
+ name: pub_semver
934
+ sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
935
+ url: "https://pub.dev"
936
+ source: hosted
937
+ version: "2.2.0"
938
+ pubspec_parse:
939
+ dependency: transitive
940
+ description:
941
+ name: pubspec_parse
942
+ sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
943
+ url: "https://pub.dev"
944
+ source: hosted
945
+ version: "1.5.0"
946
+ recase:
947
+ dependency: transitive
948
+ description:
949
+ name: recase
950
+ sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
951
+ url: "https://pub.dev"
952
+ source: hosted
953
+ version: "4.1.0"
954
+ record_use:
955
+ dependency: transitive
956
+ description:
957
+ name: record_use
958
+ sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
959
+ url: "https://pub.dev"
960
+ source: hosted
961
+ version: "0.6.0"
962
+ rxdart:
963
+ dependency: transitive
964
+ description:
965
+ name: rxdart
966
+ sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
967
+ url: "https://pub.dev"
968
+ source: hosted
969
+ version: "0.28.0"
970
+ serverpod_serialization:
971
+ dependency: transitive
972
+ description:
973
+ name: serverpod_serialization
974
+ sha256: e159f298e9b980bfea720fbb91d66d5ad00ff6510f2fcd851932e9942ca0673d
975
+ url: "https://pub.dev"
976
+ source: hosted
977
+ version: "3.4.11"
978
+ share_plus:
979
+ dependency: "direct main"
980
+ description:
981
+ name: share_plus
982
+ sha256: "223873d106614442ea6f20db5a038685cc5b32a2fba81cdecaefbbae0523f7fa"
983
+ url: "https://pub.dev"
984
+ source: hosted
985
+ version: "12.0.2"
986
+ share_plus_platform_interface:
987
+ dependency: transitive
988
+ description:
989
+ name: share_plus_platform_interface
990
+ sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a"
991
+ url: "https://pub.dev"
992
+ source: hosted
993
+ version: "6.1.0"
994
+ shared:
995
+ dependency: "direct main"
996
+ description:
997
+ path: "../r2-backed-apps/packages/shared"
998
+ relative: true
999
+ source: path
1000
+ version: "0.0.1"
1001
+ shelf:
1002
+ dependency: transitive
1003
+ description:
1004
+ name: shelf
1005
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
1006
+ url: "https://pub.dev"
1007
+ source: hosted
1008
+ version: "1.4.2"
1009
+ shelf_packages_handler:
1010
+ dependency: transitive
1011
+ description:
1012
+ name: shelf_packages_handler
1013
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
1014
+ url: "https://pub.dev"
1015
+ source: hosted
1016
+ version: "3.0.2"
1017
+ shelf_static:
1018
+ dependency: transitive
1019
+ description:
1020
+ name: shelf_static
1021
+ sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
1022
+ url: "https://pub.dev"
1023
+ source: hosted
1024
+ version: "1.1.3"
1025
+ shelf_web_socket:
1026
+ dependency: transitive
1027
+ description:
1028
+ name: shelf_web_socket
1029
+ sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
1030
+ url: "https://pub.dev"
1031
+ source: hosted
1032
+ version: "3.0.0"
1033
+ sky_engine:
1034
+ dependency: transitive
1035
+ description: flutter
1036
+ source: sdk
1037
+ version: "0.0.0"
1038
+ source_gen:
1039
+ dependency: transitive
1040
+ description:
1041
+ name: source_gen
1042
+ sha256: a603f1fb984a7391ae5978d1b92bfaaa08b350dca5c825256f925818f7943bf5
1043
+ url: "https://pub.dev"
1044
+ source: hosted
1045
+ version: "4.2.4"
1046
+ source_map_stack_trace:
1047
+ dependency: transitive
1048
+ description:
1049
+ name: source_map_stack_trace
1050
+ sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
1051
+ url: "https://pub.dev"
1052
+ source: hosted
1053
+ version: "2.1.2"
1054
+ source_maps:
1055
+ dependency: transitive
1056
+ description:
1057
+ name: source_maps
1058
+ sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
1059
+ url: "https://pub.dev"
1060
+ source: hosted
1061
+ version: "0.10.13"
1062
+ source_span:
1063
+ dependency: transitive
1064
+ description:
1065
+ name: source_span
1066
+ sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
1067
+ url: "https://pub.dev"
1068
+ source: hosted
1069
+ version: "1.10.2"
1070
+ sprintf:
1071
+ dependency: transitive
1072
+ description:
1073
+ name: sprintf
1074
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
1075
+ url: "https://pub.dev"
1076
+ source: hosted
1077
+ version: "7.0.0"
1078
+ sqflite:
1079
+ dependency: transitive
1080
+ description:
1081
+ name: sqflite
1082
+ sha256: "58a799e6ac17dd32fbab93813d39ed835a75ccc0f8f85b8955fe318c6712b082"
1083
+ url: "https://pub.dev"
1084
+ source: hosted
1085
+ version: "2.4.3"
1086
+ sqflite_android:
1087
+ dependency: transitive
1088
+ description:
1089
+ name: sqflite_android
1090
+ sha256: d0548f9d7422a2dae99ec6f8b0a3074463b132d216fa5ba0d230eeefc901983b
1091
+ url: "https://pub.dev"
1092
+ source: hosted
1093
+ version: "2.4.3"
1094
+ sqflite_common:
1095
+ dependency: transitive
1096
+ description:
1097
+ name: sqflite_common
1098
+ sha256: "5bf6a55c166e73bf651ba7ec3ed486e577620e3dc8f3a9c6a258a8031b624590"
1099
+ url: "https://pub.dev"
1100
+ source: hosted
1101
+ version: "2.5.11"
1102
+ sqflite_darwin:
1103
+ dependency: transitive
1104
+ description:
1105
+ name: sqflite_darwin
1106
+ sha256: c86ca18b8f666bbf903924687fe21cc16fc385d086005067e26619ca530bef9f
1107
+ url: "https://pub.dev"
1108
+ source: hosted
1109
+ version: "2.4.3+1"
1110
+ sqflite_platform_interface:
1111
+ dependency: transitive
1112
+ description:
1113
+ name: sqflite_platform_interface
1114
+ sha256: f84939f84350d92d04416f8bc4dc52d3896aec7716cc9e80cf0146342139dc50
1115
+ url: "https://pub.dev"
1116
+ source: hosted
1117
+ version: "2.4.1"
1118
+ stack_trace:
1119
+ dependency: transitive
1120
+ description:
1121
+ name: stack_trace
1122
+ sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
1123
+ url: "https://pub.dev"
1124
+ source: hosted
1125
+ version: "1.12.1"
1126
+ stream_channel:
1127
+ dependency: transitive
1128
+ description:
1129
+ name: stream_channel
1130
+ sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
1131
+ url: "https://pub.dev"
1132
+ source: hosted
1133
+ version: "2.1.4"
1134
+ stream_transform:
1135
+ dependency: transitive
1136
+ description:
1137
+ name: stream_transform
1138
+ sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
1139
+ url: "https://pub.dev"
1140
+ source: hosted
1141
+ version: "2.1.1"
1142
+ string_scanner:
1143
+ dependency: transitive
1144
+ description:
1145
+ name: string_scanner
1146
+ sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
1147
+ url: "https://pub.dev"
1148
+ source: hosted
1149
+ version: "1.4.1"
1150
+ sync_http:
1151
+ dependency: transitive
1152
+ description:
1153
+ name: sync_http
1154
+ sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
1155
+ url: "https://pub.dev"
1156
+ source: hosted
1157
+ version: "0.3.1"
1158
+ synchronized:
1159
+ dependency: transitive
1160
+ description:
1161
+ name: synchronized
1162
+ sha256: "61894a1956de6b4fc1aefd0892e109514a1a706cbece3ac59decd90ff5a7a423"
1163
+ url: "https://pub.dev"
1164
+ source: hosted
1165
+ version: "3.4.1+1"
1166
+ term_glyph:
1167
+ dependency: transitive
1168
+ description:
1169
+ name: term_glyph
1170
+ sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
1171
+ url: "https://pub.dev"
1172
+ source: hosted
1173
+ version: "1.2.2"
1174
+ test:
1175
+ dependency: "direct dev"
1176
+ description:
1177
+ name: test
1178
+ sha256: "8d9ceddbab833f180fbefed08afa76d7c03513dfdba87ffcec2718b02bbcbf20"
1179
+ url: "https://pub.dev"
1180
+ source: hosted
1181
+ version: "1.31.0"
1182
+ test_api:
1183
+ dependency: transitive
1184
+ description:
1185
+ name: test_api
1186
+ sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
1187
+ url: "https://pub.dev"
1188
+ source: hosted
1189
+ version: "0.7.11"
1190
+ test_core:
1191
+ dependency: transitive
1192
+ description:
1193
+ name: test_core
1194
+ sha256: "1991d4cfe85d5043241acac92962c3977c8d2f2add1ee73130c7b286417d1d34"
1195
+ url: "https://pub.dev"
1196
+ source: hosted
1197
+ version: "0.6.17"
1198
+ time:
1199
+ dependency: transitive
1200
+ description:
1201
+ name: time
1202
+ sha256: "46187cf30bffdab28c56be9a63861b36e4ab7347bf403297595d6a97e10c789f"
1203
+ url: "https://pub.dev"
1204
+ source: hosted
1205
+ version: "2.1.6"
1206
+ typed_data:
1207
+ dependency: transitive
1208
+ description:
1209
+ name: typed_data
1210
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
1211
+ url: "https://pub.dev"
1212
+ source: hosted
1213
+ version: "1.4.0"
1214
+ universal_io:
1215
+ dependency: transitive
1216
+ description:
1217
+ name: universal_io
1218
+ sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2
1219
+ url: "https://pub.dev"
1220
+ source: hosted
1221
+ version: "2.3.1"
1222
+ url_launcher_linux:
1223
+ dependency: transitive
1224
+ description:
1225
+ name: url_launcher_linux
1226
+ sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
1227
+ url: "https://pub.dev"
1228
+ source: hosted
1229
+ version: "3.2.2"
1230
+ url_launcher_platform_interface:
1231
+ dependency: transitive
1232
+ description:
1233
+ name: url_launcher_platform_interface
1234
+ sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
1235
+ url: "https://pub.dev"
1236
+ source: hosted
1237
+ version: "2.3.2"
1238
+ url_launcher_web:
1239
+ dependency: transitive
1240
+ description:
1241
+ name: url_launcher_web
1242
+ sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
1243
+ url: "https://pub.dev"
1244
+ source: hosted
1245
+ version: "2.4.3"
1246
+ url_launcher_windows:
1247
+ dependency: transitive
1248
+ description:
1249
+ name: url_launcher_windows
1250
+ sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
1251
+ url: "https://pub.dev"
1252
+ source: hosted
1253
+ version: "3.1.5"
1254
+ uuid:
1255
+ dependency: transitive
1256
+ description:
1257
+ name: uuid
1258
+ sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd"
1259
+ url: "https://pub.dev"
1260
+ source: hosted
1261
+ version: "4.6.0"
1262
+ vector_graphics_codec:
1263
+ dependency: transitive
1264
+ description:
1265
+ name: vector_graphics_codec
1266
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
1267
+ url: "https://pub.dev"
1268
+ source: hosted
1269
+ version: "1.1.13"
1270
+ vector_graphics_compiler:
1271
+ dependency: transitive
1272
+ description:
1273
+ name: vector_graphics_compiler
1274
+ sha256: "4dca4feb77dc3ec7f6e27e49c53241eb8217f55e4f9b12599a27f8903bca5682"
1275
+ url: "https://pub.dev"
1276
+ source: hosted
1277
+ version: "1.3.0"
1278
+ vector_math:
1279
+ dependency: transitive
1280
+ description:
1281
+ name: vector_math
1282
+ sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
1283
+ url: "https://pub.dev"
1284
+ source: hosted
1285
+ version: "2.2.0"
1286
+ vm_service:
1287
+ dependency: transitive
1288
+ description:
1289
+ name: vm_service
1290
+ sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
1291
+ url: "https://pub.dev"
1292
+ source: hosted
1293
+ version: "15.2.0"
1294
+ watcher:
1295
+ dependency: transitive
1296
+ description:
1297
+ name: watcher
1298
+ sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
1299
+ url: "https://pub.dev"
1300
+ source: hosted
1301
+ version: "1.2.1"
1302
+ weak_map:
1303
+ dependency: transitive
1304
+ description:
1305
+ name: weak_map
1306
+ sha256: "5f8e5d5ce57dc624db5fae814dd689ccae1f17f92b426e52f0a7cbe7f6f4ab97"
1307
+ url: "https://pub.dev"
1308
+ source: hosted
1309
+ version: "4.0.1"
1310
+ web:
1311
+ dependency: transitive
1312
+ description:
1313
+ name: web
1314
+ sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
1315
+ url: "https://pub.dev"
1316
+ source: hosted
1317
+ version: "1.1.1"
1318
+ web_socket:
1319
+ dependency: transitive
1320
+ description:
1321
+ name: web_socket
1322
+ sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
1323
+ url: "https://pub.dev"
1324
+ source: hosted
1325
+ version: "1.0.1"
1326
+ web_socket_channel:
1327
+ dependency: transitive
1328
+ description:
1329
+ name: web_socket_channel
1330
+ sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
1331
+ url: "https://pub.dev"
1332
+ source: hosted
1333
+ version: "3.0.3"
1334
+ webdriver:
1335
+ dependency: transitive
1336
+ description:
1337
+ name: webdriver
1338
+ sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade"
1339
+ url: "https://pub.dev"
1340
+ source: hosted
1341
+ version: "3.1.0"
1342
+ webkit_inspection_protocol:
1343
+ dependency: transitive
1344
+ description:
1345
+ name: webkit_inspection_protocol
1346
+ sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
1347
+ url: "https://pub.dev"
1348
+ source: hosted
1349
+ version: "1.2.1"
1350
+ win32:
1351
+ dependency: transitive
1352
+ description:
1353
+ name: win32
1354
+ sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e
1355
+ url: "https://pub.dev"
1356
+ source: hosted
1357
+ version: "5.15.0"
1358
+ xdg_directories:
1359
+ dependency: transitive
1360
+ description:
1361
+ name: xdg_directories
1362
+ sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
1363
+ url: "https://pub.dev"
1364
+ source: hosted
1365
+ version: "1.1.0"
1366
+ xml:
1367
+ dependency: transitive
1368
+ description:
1369
+ name: xml
1370
+ sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
1371
+ url: "https://pub.dev"
1372
+ source: hosted
1373
+ version: "7.0.1"
1374
+ yaml:
1375
+ dependency: transitive
1376
+ description:
1377
+ name: yaml
1378
+ sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
1379
+ url: "https://pub.dev"
1380
+ source: hosted
1381
+ version: "3.1.3"
1382
+ sdks:
1383
+ dart: ">=3.12.2 <4.0.0"
1384
+ flutter: ">=3.44.0"
pubspec.yaml CHANGED
@@ -1,8 +1,7 @@
1
1
  name: only_bible_app
2
2
  description: The only bible app you will ever need
3
3
  publish_to: 'none'
4
- version: 3.6.0+19
4
+ version: 3.6.1+20
5
- resolution: workspace
6
5
 
7
6
  environment:
8
7
  sdk: '^3.12.2'
@@ -25,7 +24,7 @@ dependencies:
25
24
  file_picker: ^11.0.2
26
25
  flutter_azure_tts: ^1.0.0
27
26
  shared:
28
- path: ../../packages/shared
27
+ path: ../r2-backed-apps/packages/shared
29
28
 
30
29
  dev_dependencies:
31
30
  flutter_test:
test/actions_backup_test.dart CHANGED
@@ -1,5 +1,6 @@
1
1
  import "dart:convert";
2
2
 
3
+ import "package:flutter/material.dart";
3
4
  import "package:flutter_test/flutter_test.dart";
4
5
  import "package:only_bible_app/store/actions_backup.dart";
5
6
  import "package:only_bible_app/store/app_state.dart";
@@ -21,7 +22,7 @@ void main() {
21
22
  final bible = buildTestBible();
22
23
  final state = AppState(
23
24
  bible: bible,
24
- darkMode: true,
25
+ themeMode: ThemeMode.dark,
25
26
  fontSize: 22,
26
27
  highlights: {"0:0:0": 2},
27
28
  highlightHistory: [
@@ -32,7 +33,7 @@ void main() {
32
33
  final jsonString = buildBackupJson(state);
33
34
  final restored = await parseBackupState(jsonString, loadBibleFn: (_) async => bible);
34
35
 
35
- expect(restored.darkMode, true);
36
+ expect(restored.themeMode, ThemeMode.dark);
36
37
  expect(restored.fontSize, 22);
37
38
  expect(restored.highlights["0:0:0"], 2);
38
39
  expect(restored.highlightHistory.single.colorIndex, 2);
test/app_logic_test.dart CHANGED
@@ -1,6 +1,7 @@
1
1
  import "dart:io";
2
2
 
3
3
  import "package:async_redux/async_redux.dart";
4
+ import "package:flutter/material.dart";
4
5
  import "package:flutter_test/flutter_test.dart";
5
6
  import "package:path_provider_platform_interface/path_provider_platform_interface.dart";
6
7
  import "package:only_bible_app/env.dart";
@@ -183,7 +184,7 @@ void main() {
183
184
  savedBook: 1,
184
185
  savedChapter: 0,
185
186
  fontSize: 20,
186
- darkMode: true,
187
+ themeMode: ThemeMode.dark,
187
188
  highlightHistory: [
188
189
  HighlightHistoryEntry(book: 0, chapter: 0, verseIndex: 0, colorIndex: 1, timestamp: DateTime.utc(2026, 1, 1)),
189
190
  ],
@@ -192,7 +193,7 @@ void main() {
192
193
  expect(restored.savedBook, 1);
193
194
  expect(restored.savedChapter, 0);
194
195
  expect(restored.fontSize, 20);
195
- expect(restored.darkMode, true);
196
+ expect(restored.themeMode, ThemeMode.dark);
196
197
  expect(restored.highlightHistory.single.book, 0);
197
198
  });
198
199
 
@@ -208,7 +209,7 @@ void main() {
208
209
  final state = AppState.fromJson({}, bible);
209
210
  expect(state.savedBook, 0);
210
211
  expect(state.savedChapter, 0);
211
- expect(state.darkMode, false);
212
+ expect(state.themeMode, ThemeMode.system);
212
213
  expect(state.engTitles, false);
213
214
  });
214
215
  });
@@ -329,8 +330,8 @@ void main() {
329
330
  });
330
331
 
331
332
  group("theme", () {
332
- test("dark theme labelMedium uses the dark color scheme (not the light one)", () {
333
+ test("dark theme labelMedium (verse numbers) uses the dark error accent, matching the light theme's dedicated red", () {
333
- expect(AppTheme.dark.textTheme.labelMedium!.color, darkColorScheme.primary);
334
+ expect(AppTheme.dark.textTheme.labelMedium!.color, darkColorScheme.error);
334
335
  });
335
336
  });
336
337
 
@@ -356,14 +357,14 @@ void main() {
356
357
  test("persistDifference writes atomically, leaving no leftover temp file", () async {
357
358
  final bible = buildTestBible();
358
359
  final persistor = AppPersistor();
359
- final state = AppState(bible: bible, savedBook: 1, savedChapter: 0, darkMode: true);
360
+ final state = AppState(bible: bible, savedBook: 1, savedChapter: 0, themeMode: ThemeMode.dark);
360
361
 
361
362
  await persistor.persistDifference(lastPersistedState: null, newState: state);
362
363
 
363
364
  final json = await persistor.readJson();
364
365
  expect(json, isNotNull);
365
366
  expect(json!["savedBook"], 1);
366
- expect(json["darkMode"], true);
367
+ expect(json["themeMode"], "dark");
367
368
  expect(await File("${tempDir.path}/app_state.json.tmp").exists(), isFalse);
368
369
  });
369
370