~repos /only-bible-app

#kotlin#android#ios

GIT_CONFIG_PARAMETERS="'http.version=HTTP/1.1'" git clone https://git.pyrossh.dev/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.



lib/main.dart



import "package:flutter/material.dart";
import "package:flutter/scheduler.dart";
import "package:flutter/services.dart";
import "package:flutter/foundation.dart";
import "package:flutter_azure_tts/flutter_azure_tts.dart";
import "package:flutter_soloud/flutter_soloud.dart";
import "package:flutter_native_splash/flutter_native_splash.dart";
import "package:async_redux/async_redux.dart";
import "package:only_bible_app/app.dart";
import "package:only_bible_app/dialog.dart";
import "package:only_bible_app/env.dart";
import "package:only_bible_app/store/app_persistor.dart";
import "package:only_bible_app/store/app_state.dart";
import "package:only_bible_app/utils.dart";
final navigatorKey = GlobalKey<NavigatorState>();
void updateStatusBar(bool v) {
if (v) {
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
systemNavigationBarColor: Color(0xFF1F1F22),
statusBarColor: Color(0xFF1F1F22),
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
),
);
} else {
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.white,
statusBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
),
);
}
}
void main() async {
FlutterNativeSplash.preserve(
widgetsBinding: WidgetsFlutterBinding.ensureInitialized(),
);
FlutterError.onError = (errorDetails) {
FlutterError.presentError(errorDetails);
if (kDebugMode) {
debugPrint("FlutterError: ${errorDetails.exception}");
debugPrint("${errorDetails.stack}");
}
SchedulerBinding.instance.addPostFrameCallback((d) {
final context = navigatorKey.currentContext;
if (context == null || !context.mounted) return;
showReportError(
context,
errorDetails.exception.toString(),
errorDetails.stack,
);
});
};
PlatformDispatcher.instance.onError = (error, stack) {
if (kDebugMode) {
debugPrint("PlatformError: $error");
debugPrint("$stack");
}
final context = navigatorKey.currentContext;
if (context != null && context.mounted) {
showReportError(
context,
error.toString(),
stack,
);
}
return true;
};
await SoLoud.instance.init();
FlutterAzureTts.init(
subscriptionKey: Env.ttsSubscriptionKey,
region: "centralindia",
withLogs: true,
);
final persistor = AppPersistor();
final json = await persistor.readJson();
final bibleName = json?["bibleName"] as String? ?? "en_kjv";
final bible = await loadBible(bibleName);
final initialState = json != null ? AppState.fromJson(json, bible) : AppState(bible: bible);
final store = Store<AppState>(
initialState: initialState,
persistor: persistor,
);
updateStatusBar(store.state.darkMode);
runApp(App(globalNavigatorKey: navigatorKey, store: store));
FlutterNativeSplash.remove();
}