~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.
020791ed
—
pyrossh 2 years ago
improve stuff
- assets/{about-us.md → md/about-us.md} +2 -2
- assets/{privacy-policy.md → md/privacy-policy.md} +0 -0
- lib/providers/app_model.dart +4 -7
- lib/screens/privacy_policy_screen.dart +0 -34
- lib/theme.dart +9 -4
- lib/{screens/about_us_screen.dart → widgets/scaffold_markdown.dart} +14 -4
- lib/widgets/settings_sheet.dart +31 -54
- lib/widgets/sliver_tile_grid.dart +1 -1
- lib/widgets/verses_view.dart +62 -56
- macos/Podfile.lock +12 -0
- macos/Runner.xcodeproj/project.pbxproj +1 -1
- macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +1 -1
- pubspec.lock +0 -8
- pubspec.yaml +1 -3
assets/{about-us.md → md/about-us.md}
RENAMED
|
@@ -10,7 +10,7 @@ The word was given freely to all and is expected to be free even after processin
|
|
|
10
10
|
marketplace to take our God's word and make it den of thieves.
|
|
11
11
|
|
|
12
12
|
All the bibles used in this App are free and available in the public domain. Most of the text are sourced from
|
|
13
|
-
[The Word Project](https://www.wordproject.org/) and
|
|
13
|
+
[The Word Project](https://www.wordproject.org/) and compilation work done by the [Bible Database](https://github.com/godlytalias/Bible-Database) team.
|
|
14
14
|
|
|
15
|
-
I also agree and completely follow the [Copyrights
|
|
15
|
+
I also agree to and completely follow the [Copyrights Statement](https://www.wordproject.org/contact/new/copyrights.htm) of the Word project.
|
|
16
16
|
|
assets/{privacy-policy.md → md/privacy-policy.md}
RENAMED
|
File without changes
|
lib/providers/app_model.dart
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
// import "package:firebase_performance/firebase_performance.dart";
|
|
2
|
-
import "dart:ffi";
|
|
3
|
-
|
|
4
2
|
import "package:flutter/services.dart";
|
|
5
3
|
import "package:flutter/material.dart";
|
|
6
|
-
import "package:only_bible_app/screens/about_us_screen.dart";
|
|
7
4
|
import "package:only_bible_app/screens/bible_select_screen.dart";
|
|
8
5
|
import "package:only_bible_app/screens/book_select_screen.dart";
|
|
9
6
|
import "package:only_bible_app/models.dart";
|
|
10
|
-
import "package:only_bible_app/screens/privacy_policy_screen.dart";
|
|
11
7
|
import "package:only_bible_app/widgets/actions_sheet.dart";
|
|
12
8
|
import "package:only_bible_app/widgets/highlight_button.dart";
|
|
9
|
+
import "package:only_bible_app/widgets/scaffold_markdown.dart";
|
|
13
10
|
import "package:only_bible_app/widgets/note_sheet.dart";
|
|
14
11
|
import "package:only_bible_app/widgets/settings_sheet.dart";
|
|
15
12
|
import "package:package_info_plus/package_info_plus.dart";
|
|
@@ -348,7 +345,7 @@ class AppModel extends ChangeNotifier {
|
|
|
348
345
|
void rateApp(BuildContext context) {
|
|
349
346
|
if (isAndroid()) {
|
|
350
347
|
openUrl(context, "https://play.google.com/store/apps/details?id=${packageInfo.packageName}");
|
|
351
|
-
}
|
|
348
|
+
} else if (isIOS()) {
|
|
352
349
|
openUrl(context, "https://apps.apple.com/us/app/hare-pro/id123");
|
|
353
350
|
}
|
|
354
351
|
}
|
|
@@ -356,7 +353,7 @@ class AppModel extends ChangeNotifier {
|
|
|
356
353
|
showPrivacyPolicy(BuildContext context) {
|
|
357
354
|
Navigator.of(context).push(
|
|
358
355
|
createNoTransitionPageRoute(
|
|
359
|
-
const
|
|
356
|
+
const ScaffoldMarkdown(title: "Privacy Policy", file: "privacy-policy.md"),
|
|
360
357
|
),
|
|
361
358
|
);
|
|
362
359
|
}
|
|
@@ -364,7 +361,7 @@ class AppModel extends ChangeNotifier {
|
|
|
364
361
|
showAboutUs(BuildContext context) {
|
|
365
362
|
Navigator.of(context).push(
|
|
366
363
|
createNoTransitionPageRoute(
|
|
367
|
-
const
|
|
364
|
+
const ScaffoldMarkdown(title: "About Us", file: "about-us.md"),
|
|
368
365
|
),
|
|
369
366
|
);
|
|
370
367
|
}
|
lib/screens/privacy_policy_screen.dart
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import "package:flutter/material.dart";
|
|
2
|
-
import "package:flutter_markdown/flutter_markdown.dart";
|
|
3
|
-
import "package:only_bible_app/utils.dart";
|
|
4
|
-
|
|
5
|
-
class PrivacyPolicyScreen extends StatelessWidget {
|
|
6
|
-
const PrivacyPolicyScreen({super.key});
|
|
7
|
-
|
|
8
|
-
@override
|
|
9
|
-
Widget build(BuildContext context) {
|
|
10
|
-
return Scaffold(
|
|
11
|
-
appBar: AppBar(
|
|
12
|
-
title: const Text("Privacy Policy"),
|
|
13
|
-
),
|
|
14
|
-
body: SafeArea(
|
|
15
|
-
child: FutureBuilder(
|
|
16
|
-
future: DefaultAssetBundle.of(context).loadString("assets/privacy-policy.md"),
|
|
17
|
-
builder: (context, snapshot) {
|
|
18
|
-
if (snapshot.hasData) {
|
|
19
|
-
return Markdown(
|
|
20
|
-
data: snapshot.data!,
|
|
21
|
-
onTapLink: (text, href, title) {
|
|
22
|
-
openUrl(context, href!);
|
|
23
|
-
},
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
return const Center(
|
|
27
|
-
child: CircularProgressIndicator(),
|
|
28
|
-
);
|
|
29
|
-
},
|
|
30
|
-
),
|
|
31
|
-
),
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
}
|
lib/theme.dart
CHANGED
|
@@ -49,10 +49,10 @@ final lightTheme = ThemeData(
|
|
|
49
49
|
),
|
|
50
50
|
hintStyle: TextStyle(color: Colors.grey),
|
|
51
51
|
),
|
|
52
|
-
appBarTheme:
|
|
52
|
+
appBarTheme: AppBarTheme(
|
|
53
|
-
backgroundColor:
|
|
53
|
+
backgroundColor: lightColorScheme.background,
|
|
54
|
-
elevation:
|
|
54
|
+
elevation: 1,
|
|
55
|
-
|
|
55
|
+
foregroundColor: lightColorScheme.primary,
|
|
56
56
|
),
|
|
57
57
|
bottomSheetTheme: const BottomSheetThemeData(
|
|
58
58
|
elevation: 10,
|
|
@@ -172,6 +172,11 @@ final darkTheme = lightTheme.copyWith(
|
|
|
172
172
|
hoverColor: darkColorScheme.outline,
|
|
173
173
|
dividerColor: Colors.white,
|
|
174
174
|
shadowColor: Colors.white,
|
|
175
|
+
appBarTheme: AppBarTheme(
|
|
176
|
+
backgroundColor: darkColorScheme.background,
|
|
177
|
+
foregroundColor: darkColorScheme.primary,
|
|
178
|
+
elevation: 1,
|
|
179
|
+
),
|
|
175
180
|
bottomSheetTheme: lightTheme.bottomSheetTheme.copyWith(
|
|
176
181
|
backgroundColor: const Color(0xFF141415),
|
|
177
182
|
shadowColor: Colors.white,
|
lib/{screens/about_us_screen.dart → widgets/scaffold_markdown.dart}
RENAMED
|
@@ -2,21 +2,31 @@ import "package:flutter/material.dart";
|
|
|
2
2
|
import "package:flutter_markdown/flutter_markdown.dart";
|
|
3
3
|
import "package:only_bible_app/utils.dart";
|
|
4
4
|
|
|
5
|
-
class
|
|
5
|
+
class ScaffoldMarkdown extends StatelessWidget {
|
|
6
|
-
|
|
6
|
+
final String title;
|
|
7
|
+
final String file;
|
|
8
|
+
|
|
9
|
+
const ScaffoldMarkdown({super.key, required this.title, required this.file});
|
|
7
10
|
|
|
8
11
|
@override
|
|
9
12
|
Widget build(BuildContext context) {
|
|
10
13
|
return Scaffold(
|
|
14
|
+
backgroundColor: Theme.of(context).colorScheme.background,
|
|
11
15
|
appBar: AppBar(
|
|
12
|
-
title:
|
|
16
|
+
title: Text(title),
|
|
13
17
|
),
|
|
14
18
|
body: SafeArea(
|
|
15
19
|
child: FutureBuilder(
|
|
16
|
-
future: DefaultAssetBundle.of(context).loadString("assets/
|
|
20
|
+
future: DefaultAssetBundle.of(context).loadString("assets/md/$file"),
|
|
17
21
|
builder: (context, snapshot) {
|
|
18
22
|
if (snapshot.hasData) {
|
|
19
23
|
return Markdown(
|
|
24
|
+
styleSheetTheme: MarkdownStyleSheetBaseTheme.material,
|
|
25
|
+
styleSheet: MarkdownStyleSheet(
|
|
26
|
+
p: Theme.of(context).textTheme.bodyMedium,
|
|
27
|
+
h1: Theme.of(context).textTheme.headlineMedium,
|
|
28
|
+
h2: Theme.of(context).textTheme.headlineMedium,
|
|
29
|
+
),
|
|
20
30
|
data: snapshot.data!,
|
|
21
31
|
onTapLink: (text, href, title) {
|
|
22
32
|
openUrl(context, href!);
|
lib/widgets/settings_sheet.dart
CHANGED
|
@@ -2,7 +2,6 @@ import "package:flutter/material.dart";
|
|
|
2
2
|
import "package:only_bible_app/providers/app_model.dart";
|
|
3
3
|
import "package:only_bible_app/utils.dart";
|
|
4
4
|
import "package:settings_ui/settings_ui.dart";
|
|
5
|
-
// import "package:toggle_switch/toggle_switch.dart";
|
|
6
5
|
|
|
7
6
|
class SettingsSheet extends StatelessWidget {
|
|
8
7
|
const SettingsSheet({super.key});
|
|
@@ -11,8 +10,8 @@ class SettingsSheet extends StatelessWidget {
|
|
|
11
10
|
Widget build(BuildContext context) {
|
|
12
11
|
final app = AppModel.of(context);
|
|
13
12
|
final selectedBible = app.bible;
|
|
14
|
-
final modeIcon = app.darkMode ? Icons.dark_mode : Icons.light_mode;
|
|
13
|
+
// final modeIcon = app.darkMode ? Icons.dark_mode : Icons.light_mode;
|
|
15
|
-
final modeIconColor = app.darkMode ? const Color(0xFF59EEFF) :
|
|
14
|
+
// final modeIconColor = app.darkMode ? const Color(0xFF59EEFF) : Colors.yellowAccent.shade700;
|
|
16
15
|
final iconColor = Theme.of(context).textTheme.bodyMedium!.color;
|
|
17
16
|
return SettingsList(
|
|
18
17
|
contentPadding: EdgeInsets.zero,
|
|
@@ -39,60 +38,38 @@ class SettingsSheet extends StatelessWidget {
|
|
|
39
38
|
value: Text(selectedBible.name),
|
|
40
39
|
onPressed: app.changeBible,
|
|
41
40
|
),
|
|
42
|
-
SettingsTile.
|
|
41
|
+
SettingsTile.navigation(
|
|
42
|
+
leading: const Icon(Icons.color_lens_outlined, color: Colors.pink),
|
|
43
|
+
title: const Text("Theme"),
|
|
44
|
+
trailing: ToggleButtons(
|
|
43
|
-
|
|
45
|
+
onPressed: (int index) {
|
|
44
|
-
|
|
46
|
+
app.toggleMode();
|
|
45
|
-
|
|
47
|
+
},
|
|
48
|
+
highlightColor: Colors.transparent,
|
|
49
|
+
borderColor: Colors.grey,
|
|
50
|
+
borderRadius: const BorderRadius.all(Radius.circular(25)),
|
|
51
|
+
selectedColor: app.darkMode ? Colors.lightBlue.shade300 : Colors.yellowAccent.shade700,
|
|
52
|
+
selectedBorderColor: Colors.grey,
|
|
53
|
+
color: Colors.grey,
|
|
54
|
+
fillColor: Colors.transparent,
|
|
55
|
+
constraints: const BoxConstraints(
|
|
56
|
+
minHeight: 36.0,
|
|
57
|
+
minWidth: 50.0,
|
|
58
|
+
),
|
|
46
|
-
|
|
59
|
+
isSelected: [!app.darkMode, app.darkMode],
|
|
60
|
+
children: const [
|
|
61
|
+
Icon(Icons.light_mode),
|
|
47
|
-
|
|
62
|
+
Icon(Icons.dark_mode),
|
|
63
|
+
],
|
|
48
|
-
|
|
64
|
+
),
|
|
49
65
|
),
|
|
50
|
-
// SettingsTile.navigation(
|
|
51
|
-
// leading: Icon(Icons.color_lens_outlined, color: Colors.pink),
|
|
52
|
-
// title: const Text("Theme"),
|
|
53
|
-
// trailing: ToggleSwitch(
|
|
54
|
-
// // minWidth: 50.0,
|
|
55
|
-
// // minHeight: 50.0,
|
|
56
|
-
// initialLabelIndex: app.darkMode ? 1 : 0,
|
|
57
|
-
// cornerRadius: 20.0,
|
|
58
|
-
// borderWidth: 1,
|
|
59
|
-
// dividerColor: Colors.black,
|
|
60
|
-
// dividerMargin: 1,
|
|
61
|
-
// borderColor: [Color(0xFFE9E9EA), Color(0xFFE9E9EA)],
|
|
62
|
-
// activeFgColor: modeIconColor,
|
|
63
|
-
// inactiveBgColor: Color(0xFFEAEAEB),
|
|
64
|
-
// inactiveFgColor: Colors.grey,
|
|
65
|
-
// activeBgColors: [[Colors.white, Colors.white], [Color(0xFF39393D), Color(0xFF39393D)]],
|
|
66
|
-
// totalSwitches: 2,
|
|
67
|
-
// icons: const [
|
|
68
|
-
// Icons.light_mode,
|
|
69
|
-
// Icons.dark_mode,
|
|
70
|
-
// ],
|
|
71
|
-
// iconSize: 50.0,
|
|
72
|
-
// animate: true,
|
|
73
|
-
// onToggle: (index) {
|
|
74
|
-
// app.toggleMode();
|
|
75
|
-
// },
|
|
76
|
-
// ),
|
|
77
|
-
// ),
|
|
78
66
|
SettingsTile.switchTile(
|
|
79
67
|
onToggle: (value) {
|
|
80
68
|
app.toggleBold();
|
|
81
69
|
},
|
|
82
70
|
initialValue: app.fontBold,
|
|
83
71
|
leading: Icon(Icons.format_bold, color: iconColor),
|
|
84
|
-
title: const Text("Font
|
|
72
|
+
title: const Text("Font Bold"),
|
|
85
|
-
// trailing: ToggleSwitch(
|
|
86
|
-
// minHeight: 35,
|
|
87
|
-
// minWidth: 70,
|
|
88
|
-
// cornerRadius: 20.0,
|
|
89
|
-
// initialLabelIndex: 0,
|
|
90
|
-
// totalSwitches: 2,
|
|
91
|
-
// labels: const ["Normal", "Bold"],
|
|
92
|
-
// onToggle: (index) {
|
|
93
|
-
// print('switched to: $index');
|
|
94
|
-
// },
|
|
95
|
-
// ),
|
|
96
73
|
),
|
|
97
74
|
SettingsTile(
|
|
98
75
|
title: const Text("Increase font size"),
|
|
@@ -117,23 +94,23 @@ class SettingsSheet extends StatelessWidget {
|
|
|
117
94
|
margin: const EdgeInsetsDirectional.symmetric(horizontal: 20, vertical: 20),
|
|
118
95
|
tiles: [
|
|
119
96
|
SettingsTile.navigation(
|
|
120
|
-
leading: const Icon(Icons.policy_outlined, color: Colors.
|
|
97
|
+
leading: const Icon(Icons.policy_outlined, color: Colors.brown),
|
|
121
98
|
title: const Text("Privacy Policy"),
|
|
122
99
|
onPressed: app.showPrivacyPolicy,
|
|
123
100
|
),
|
|
124
101
|
SettingsTile.navigation(
|
|
125
|
-
leading: const Icon(Icons.share_outlined, color: Colors.
|
|
102
|
+
leading: const Icon(Icons.share_outlined, color: Colors.blueAccent),
|
|
126
103
|
title: const Text("Share the app"),
|
|
127
104
|
onPressed: app.shareAppLink,
|
|
128
105
|
),
|
|
129
106
|
if (!isDesktop()) // TODO: mabe support OSx if we release in that store
|
|
130
107
|
SettingsTile.navigation(
|
|
131
|
-
leading:
|
|
108
|
+
leading: Icon(Icons.star, color: Colors.yellowAccent.shade700),
|
|
132
109
|
title: const Text("Rate the app"),
|
|
133
110
|
onPressed: app.rateApp,
|
|
134
111
|
),
|
|
135
112
|
SettingsTile.navigation(
|
|
136
|
-
leading: const Icon(Icons.info_outline, color: Colors.
|
|
113
|
+
leading: const Icon(Icons.info_outline, color: Colors.black),
|
|
137
114
|
title: const Text("About us"),
|
|
138
115
|
onPressed: app.showAboutUs,
|
|
139
116
|
),
|
lib/widgets/sliver_tile_grid.dart
CHANGED
|
@@ -17,7 +17,7 @@ enum ListType {
|
|
|
17
17
|
double childAspectRatio(bool isDesktop) {
|
|
18
18
|
switch (this) {
|
|
19
19
|
case ListType.small:
|
|
20
|
-
return isDesktop ?
|
|
20
|
+
return isDesktop ? 1.8 : 1.4;
|
|
21
21
|
case ListType.large:
|
|
22
22
|
return isDesktop ? 5 : 4;
|
|
23
23
|
}
|
lib/widgets/verses_view.dart
CHANGED
|
@@ -26,72 +26,78 @@ class VersesView extends StatelessWidget {
|
|
|
26
26
|
child: SingleChildScrollView(
|
|
27
27
|
physics: const BouncingScrollPhysics(),
|
|
28
28
|
child: Column(
|
|
29
|
+
mainAxisAlignment: MainAxisAlignment.start,
|
|
30
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
29
31
|
children: [
|
|
30
32
|
// const Padding(
|
|
31
33
|
// padding: EdgeInsets.only(top: 0),
|
|
32
34
|
// ),
|
|
35
|
+
Align(
|
|
36
|
+
alignment: Alignment.centerLeft,
|
|
33
|
-
|
|
37
|
+
child: Text.rich(
|
|
34
|
-
|
|
38
|
+
// scrollPhysics: const BouncingScrollPhysics(),
|
|
35
|
-
|
|
39
|
+
// contextMenuBuilder: null,
|
|
36
|
-
|
|
40
|
+
textScaleFactor: app.textScaleFactor,
|
|
41
|
+
textAlign: TextAlign.left,
|
|
37
|
-
|
|
42
|
+
// onSelectionChanged: (selection, _) {
|
|
38
|
-
|
|
43
|
+
// },
|
|
39
|
-
|
|
44
|
+
TextSpan(
|
|
40
|
-
|
|
45
|
+
style: app.fontBold
|
|
41
|
-
|
|
46
|
+
? textStyle.copyWith(
|
|
42
|
-
|
|
47
|
+
fontWeight: FontWeight.w500,
|
|
43
|
-
|
|
48
|
+
)
|
|
44
|
-
|
|
49
|
+
: textStyle,
|
|
45
|
-
|
|
50
|
+
// recognizer: TapAndPanGestureRecognizer()..onDragEnd = (e) => print("Hello"),
|
|
46
|
-
|
|
51
|
+
children: chapter.verses
|
|
47
|
-
|
|
52
|
+
.map(
|
|
48
|
-
|
|
53
|
+
(v) => [
|
|
49
|
-
|
|
54
|
+
WidgetSpan(
|
|
50
|
-
|
|
55
|
+
child: Transform.translate(
|
|
51
|
-
|
|
56
|
+
offset: const Offset(0, -2),
|
|
52
|
-
|
|
57
|
+
child: Text("${v.index + 1} ", style: Theme.of(context).textTheme.labelMedium),
|
|
53
|
-
),
|
|
54
58
|
),
|
|
59
|
+
),
|
|
55
|
-
|
|
60
|
+
if (app.hasNote(v))
|
|
56
|
-
|
|
61
|
+
WidgetSpan(
|
|
57
|
-
|
|
62
|
+
child: Padding(
|
|
58
|
-
|
|
63
|
+
padding: const EdgeInsets.only(left: 3, right: 3),
|
|
59
|
-
|
|
64
|
+
child: GestureDetector(
|
|
60
|
-
|
|
65
|
+
onTap: () {
|
|
61
|
-
|
|
66
|
+
app.showNoteField(context, v);
|
|
62
|
-
|
|
67
|
+
},
|
|
63
|
-
|
|
68
|
+
child: const Icon(
|
|
64
|
-
|
|
69
|
+
Icons.sticky_note_2_outlined,
|
|
65
|
-
|
|
70
|
+
size: 18,
|
|
66
|
-
|
|
71
|
+
color: Colors.blue,
|
|
67
|
-
),
|
|
68
72
|
),
|
|
69
73
|
),
|
|
70
74
|
),
|
|
71
|
-
TextSpan(
|
|
72
|
-
text: "${v.text}\n",
|
|
73
|
-
style: context.watch<ChapterViewModel>().isVerseSelected(v)
|
|
74
|
-
? TextStyle(
|
|
75
|
-
backgroundColor: app.darkMode ? Colors.grey.shade800 : Colors.grey.shade200,
|
|
76
|
-
)
|
|
77
|
-
: TextStyle(
|
|
78
|
-
backgroundColor: app.getHighlight(v) ?? Theme.of(context).colorScheme.background,
|
|
79
|
-
),
|
|
80
|
-
recognizer: TapGestureRecognizer()
|
|
81
|
-
..onTap = () {
|
|
82
|
-
model.onVerseSelected(context, v);
|
|
83
|
-
// AppModel.ofEvent(context).showHighlightMenu(context, v, details.globalPosition);
|
|
84
|
-
},
|
|
85
75
|
),
|
|
76
|
+
TextSpan(
|
|
77
|
+
text: "${v.text}\n",
|
|
78
|
+
style: context.watch<ChapterViewModel>().isVerseSelected(v)
|
|
79
|
+
? TextStyle(
|
|
80
|
+
backgroundColor: app.darkMode ? Colors.grey.shade800 : Colors.grey.shade200,
|
|
81
|
+
)
|
|
82
|
+
: TextStyle(
|
|
83
|
+
backgroundColor: app.getHighlight(v) ?? Theme.of(context).colorScheme.background,
|
|
84
|
+
),
|
|
85
|
+
recognizer: TapGestureRecognizer()
|
|
86
|
+
..onTap = () {
|
|
87
|
+
model.onVerseSelected(context, v);
|
|
88
|
+
// AppModel.ofEvent(context).showHighlightMenu(context, v, details.globalPosition);
|
|
89
|
+
},
|
|
90
|
+
),
|
|
86
|
-
|
|
91
|
+
const WidgetSpan(
|
|
87
|
-
|
|
92
|
+
child: Padding(
|
|
88
|
-
|
|
93
|
+
padding: EdgeInsets.only(top: 16, bottom: 16),
|
|
89
|
-
),
|
|
90
94
|
),
|
|
95
|
+
),
|
|
91
|
-
|
|
96
|
+
],
|
|
92
|
-
|
|
97
|
+
)
|
|
93
|
-
|
|
98
|
+
.expand((element) => element)
|
|
94
|
-
|
|
99
|
+
.toList(),
|
|
100
|
+
),
|
|
95
101
|
),
|
|
96
102
|
),
|
|
97
103
|
Padding(
|
macos/Podfile.lock
CHANGED
|
@@ -79,6 +79,8 @@ PODS:
|
|
|
79
79
|
- nanopb/encode (= 2.30909.0)
|
|
80
80
|
- nanopb/decode (2.30909.0)
|
|
81
81
|
- nanopb/encode (2.30909.0)
|
|
82
|
+
- package_info_plus (0.0.1):
|
|
83
|
+
- FlutterMacOS
|
|
82
84
|
- path_provider_foundation (0.0.1):
|
|
83
85
|
- Flutter
|
|
84
86
|
- FlutterMacOS
|
|
@@ -90,6 +92,8 @@ PODS:
|
|
|
90
92
|
- shared_preferences_foundation (0.0.1):
|
|
91
93
|
- Flutter
|
|
92
94
|
- FlutterMacOS
|
|
95
|
+
- url_launcher_macos (0.0.1):
|
|
96
|
+
- FlutterMacOS
|
|
93
97
|
|
|
94
98
|
DEPENDENCIES:
|
|
95
99
|
- audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`)
|
|
@@ -98,9 +102,11 @@ DEPENDENCIES:
|
|
|
98
102
|
- firebase_storage (from `Flutter/ephemeral/.symlinks/plugins/firebase_storage/macos`)
|
|
99
103
|
- FlutterMacOS (from `Flutter/ephemeral`)
|
|
100
104
|
- just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`)
|
|
105
|
+
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
|
101
106
|
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
|
|
102
107
|
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
|
|
103
108
|
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
|
|
109
|
+
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
|
|
104
110
|
|
|
105
111
|
SPEC REPOS:
|
|
106
112
|
trunk:
|
|
@@ -134,12 +140,16 @@ EXTERNAL SOURCES:
|
|
|
134
140
|
:path: Flutter/ephemeral
|
|
135
141
|
just_audio:
|
|
136
142
|
:path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos
|
|
143
|
+
package_info_plus:
|
|
144
|
+
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
|
|
137
145
|
path_provider_foundation:
|
|
138
146
|
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
|
|
139
147
|
share_plus:
|
|
140
148
|
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
|
|
141
149
|
shared_preferences_foundation:
|
|
142
150
|
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
|
|
151
|
+
url_launcher_macos:
|
|
152
|
+
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
|
|
143
153
|
|
|
144
154
|
SPEC CHECKSUMS:
|
|
145
155
|
audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72
|
|
@@ -162,11 +172,13 @@ SPEC CHECKSUMS:
|
|
|
162
172
|
GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
|
|
163
173
|
just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489
|
|
164
174
|
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
|
175
|
+
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
|
165
176
|
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
|
166
177
|
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
|
|
167
178
|
PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
|
|
168
179
|
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
|
|
169
180
|
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
|
|
181
|
+
url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95
|
|
170
182
|
|
|
171
183
|
PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367
|
|
172
184
|
|
macos/Runner.xcodeproj/project.pbxproj
CHANGED
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
isa = PBXProject;
|
|
263
263
|
attributes = {
|
|
264
264
|
LastSwiftUpdateCheck = 0920;
|
|
265
|
-
LastUpgradeCheck =
|
|
265
|
+
LastUpgradeCheck = 1430;
|
|
266
266
|
ORGANIZATIONNAME = "";
|
|
267
267
|
TargetAttributes = {
|
|
268
268
|
331C80D4294CF70F00263BE5 = {
|
macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<Scheme
|
|
3
|
-
LastUpgradeVersion = "
|
|
3
|
+
LastUpgradeVersion = "1430"
|
|
4
4
|
version = "1.3">
|
|
5
5
|
<BuildAction
|
|
6
6
|
parallelizeBuildables = "YES"
|
pubspec.lock
CHANGED
|
@@ -969,14 +969,6 @@ packages:
|
|
|
969
969
|
url: "https://pub.dev"
|
|
970
970
|
source: hosted
|
|
971
971
|
version: "1.0.1"
|
|
972
|
-
toggle_switch:
|
|
973
|
-
dependency: "direct main"
|
|
974
|
-
description:
|
|
975
|
-
name: toggle_switch
|
|
976
|
-
sha256: "9e6af1f0c5a97d9de41109dc7b9e1b3bbe73417f89b10e0e44dc834fb493d4cb"
|
|
977
|
-
url: "https://pub.dev"
|
|
978
|
-
source: hosted
|
|
979
|
-
version: "2.1.0"
|
|
980
972
|
typed_data:
|
|
981
973
|
dependency: transitive
|
|
982
974
|
description:
|
pubspec.yaml
CHANGED
|
@@ -28,7 +28,6 @@ dependencies:
|
|
|
28
28
|
share_plus: ^7.1.0
|
|
29
29
|
flutter_markdown: ^0.6.17+1
|
|
30
30
|
url_launcher: ^6.1.12
|
|
31
|
-
toggle_switch: ^2.1.0
|
|
32
31
|
package_info_plus: ^4.1.0
|
|
33
32
|
|
|
34
33
|
dev_dependencies:
|
|
@@ -46,8 +45,7 @@ flutter:
|
|
|
46
45
|
assets:
|
|
47
46
|
- assets/bibles/
|
|
48
47
|
- assets/fonts/
|
|
49
|
-
- assets/privacy-policy.md
|
|
50
|
-
- assets/
|
|
48
|
+
- assets/md/
|
|
51
49
|
fonts:
|
|
52
50
|
- family: Roboto
|
|
53
51
|
fonts:
|