Initial public commit

This commit is contained in:
Shawn
2022-08-29 20:38:28 -06:00
commit a1e1aa156f
708 changed files with 21643 additions and 0 deletions
.github
.gitignore.metadata
.vscode
LICENSEREADME.mdanalysis_options.yaml
android
assets
fonts
images
_common
2.0x
3.0x
adjust-search.pngapp-logo-plain.pngapp-logo.pngarrow-indicator.pngcloud-white.pngcloud-white.svgcompass-full.svgcompass-simple.svgconstruction.pnggeography.pnghistory.png
icons
intro-camel.jpgintro-mask-1.pngintro-mask-2.pngintro-mask-3.pngintro-petra.jpgintro-statue.jpglocation-pin.pngparticle-21x23.pngribbon-end.pngsearch-map.pngtab-artifacts-active.pngtab-artifacts.pngtab-bubble-bar.pngtab-bubble.pngtab-editorial-active.pngtab-editorial.pngtab-photos-active.pngtab-photos.pngtab-timeline-active.pngtab-timeline.png
texture
chichen_itza
christ_the_redeemer
collectibles
colosseum
great_wall_of_china
machu_picchu
petra
pyramids
taj_mahal
marketing
flutter_native_splash.yaml
ios
l10n.yaml
lib
_tools
assets.dartcommon_libs.dart
l10n
logic
main.dartrouter.dart
styles
ui
app_scaffold.dart
common
screens
wonder_illustrations
pubspec.lockpubspec.yaml
py
release_notes.txt
tools

69
lib/logic/app_logic.dart Normal file

@ -0,0 +1,69 @@
import 'dart:async';
import 'package:wonders/common_libs.dart';
import 'package:wonders/ui/common/utils/page_routes.dart';
class AppLogic {
/// Indicates to the rest of the app that bootstrap has not completed.
/// The router will use this to prevent redirects while bootstrapping.
bool isBootstrapComplete = false;
/// Initialize the app and all main actors.
/// Loads settings, sets up services etc.
Future<void> bootstrap() async {
// Default error handler
FlutterError.onError = _handleFlutterError;
// Load any bitmaps the views might need
await AppBitmaps.init();
// Default to only allowing portrait mode
setDeviceOrientation(Axis.vertical);
// Localizations load
await localeLogic.load();
// Data load
await timelineLogic.init();
// Settings load
await settingsLogic.load();
// Collectibles init
await collectiblesLogic.load();
// flag bootStrap as complete
isBootstrapComplete = true;
// load initial view (replace empty initial view)
if (settingsLogic.hasCompletedOnboarding.value) {
appRouter.go(ScreenPaths.home);
} else {
appRouter.go(ScreenPaths.intro);
}
}
void setDeviceOrientation(Axis? axis) {
final orientations = <DeviceOrientation>[];
if (axis == null || axis == Axis.vertical) {
orientations.addAll([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
}
if (axis == null || axis == Axis.horizontal) {
orientations.addAll([
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
}
SystemChrome.setPreferredOrientations(orientations);
}
void _handleFlutterError(FlutterErrorDetails details) {
FlutterError.dumpErrorToConsole(details);
}
Future<T?> showFullscreenDialogRoute<T>(BuildContext context, Widget child) async {
return await Navigator.of(context).push<T>(
PageRoutes.dialog<T>(child, $styles.times.pageTransition),
);
}
}