Files
rog_app/lib/main.dart

148 lines
5.0 KiB
Dart
Raw Normal View History

2022-03-14 12:28:57 +05:30
import 'package:flutter/material.dart';
2023-03-17 11:54:12 +05:30
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
2022-03-14 12:28:57 +05:30
import 'package:get/get.dart';
2023-08-16 14:53:32 +05:30
import 'package:rogapp/pages/destination/destination_controller.dart';
2022-05-12 02:17:08 +05:30
import 'package:rogapp/pages/index/index_binding.dart';
2022-03-14 12:28:57 +05:30
import 'package:rogapp/routes/app_pages.dart';
import 'package:rogapp/utils/location_controller.dart';
2022-03-14 12:28:57 +05:30
import 'package:rogapp/utils/string_values.dart';
2023-09-08 21:19:12 +05:30
import 'package:shared_preferences/shared_preferences.dart';
2023-09-04 22:46:53 +05:30
// import 'package:is_lock_screen/is_lock_screen.dart';
2023-03-17 11:54:12 +05:30
2023-09-11 00:45:54 +05:30
void saveGameState() async {
2023-10-06 16:25:21 +05:30
DestinationController destinationController =
Get.find<DestinationController>();
SharedPreferences pref = await SharedPreferences.getInstance();
pref.setBool("is_in_rog", destinationController.isInRog.value);
pref.setBool(
"rogaining_counted", destinationController.rogainingCounted.value);
pref.setBool("ready_for_goal", DestinationController.ready_for_goal);
2023-10-06 16:25:21 +05:30
}
2023-09-11 00:45:54 +05:30
2023-10-06 16:25:21 +05:30
void restoreGame() async {
SharedPreferences pref = await SharedPreferences.getInstance();
DestinationController destinationController =
Get.find<DestinationController>();
destinationController.skipGps = false;
destinationController.isInRog.value = pref.getBool("is_in_rog") ?? false;
destinationController.rogainingCounted.value =
pref.getBool("rogaining_counted") ?? false;
DestinationController.ready_for_goal =
pref.getBool("ready_for_goal") ?? false;
2023-11-27 14:57:25 +05:30
//print(
// "--restored -- destinationController.isInRog.value ${pref.getBool("is_in_rog")} -- ${pref.getBool("rogaining_counted")}");
2023-10-06 16:25:21 +05:30
}
2023-09-11 00:45:54 +05:30
2023-03-17 11:54:12 +05:30
void main() async {
WidgetsFlutterBinding.ensureInitialized();
2023-09-04 22:46:53 +05:30
await FlutterMapTileCaching.initialise();
2023-03-17 11:54:12 +05:30
final StoreDirectory instanceA = FMTC.instance('OpenStreetMap (A)');
2023-09-04 22:46:53 +05:30
await instanceA.manage.createAsync();
await instanceA.metadata.addAsync(
key: 'sourceURL',
value: 'https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png',
);
await instanceA.metadata.addAsync(
key: 'validDuration',
value: '14',
);
await instanceA.metadata.addAsync(
key: 'behaviour',
value: 'cacheFirst',
);
2023-08-16 14:53:32 +05:30
runApp(const MyApp());
2022-03-14 12:28:57 +05:30
}
2023-08-16 14:53:32 +05:30
class MyApp extends StatefulWidget {
2023-09-04 22:46:53 +05:30
const MyApp({Key? key}) : super(key: key);
2023-08-16 14:53:32 +05:30
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
2022-03-14 12:28:57 +05:30
// This widget is the root of your application.
2023-08-16 14:53:32 +05:30
@override
void initState() {
super.initState();
2023-11-21 22:43:28 +05:30
if (context.mounted) {
restoreGame();
}
2023-09-04 22:46:53 +05:30
WidgetsBinding.instance.addObserver(this);
2023-08-16 14:53:32 +05:30
}
@override
2023-09-04 22:46:53 +05:30
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
2023-08-16 14:53:32 +05:30
}
2023-09-11 00:45:54 +05:30
// void saveGameState() async {
// DestinationController destinationController = Get.find<DestinationController>();
// SharedPreferences pref = await SharedPreferences.getInstance();
// pref.setBool("is_in_rog", destinationController.is_in_rog.value);
// pref.setBool("rogaining_counted", destinationController.rogaining_counted.value);
// }
2023-09-08 21:19:12 +05:30
2023-10-06 16:25:21 +05:30
@override
2023-09-04 22:46:53 +05:30
void didChangeAppLifecycleState(AppLifecycleState state) {
LocationController locationController = Get.find<LocationController>();
2023-10-06 16:25:21 +05:30
DestinationController destinationController =
Get.find<DestinationController>();
switch (state) {
case AppLifecycleState.resumed:
locationController.resumePositionStream();
2023-11-27 14:57:25 +05:30
//print("RESUMED");
2023-10-06 16:25:21 +05:30
restoreGame();
break;
case AppLifecycleState.inactive:
locationController.resumePositionStream();
2023-11-27 14:57:25 +05:30
//print("INACTIVE");
2023-10-06 16:25:21 +05:30
break;
case AppLifecycleState.paused:
locationController.resumePositionStream();
2023-11-27 14:57:25 +05:30
//print("PAUSED");
2023-10-06 16:25:21 +05:30
saveGameState();
break;
case AppLifecycleState.detached:
locationController.resumePositionStream();
2023-11-27 14:57:25 +05:30
//print("DETACHED");
2023-10-06 16:25:21 +05:30
saveGameState();
break;
case AppLifecycleState.hidden:
locationController.resumePositionStream();
2023-11-27 14:57:25 +05:30
//print("DETACHED");
2023-10-06 16:25:21 +05:30
saveGameState();
break;
2023-09-04 22:46:53 +05:30
}
2023-10-06 16:25:21 +05:30
}
2023-08-16 14:53:32 +05:30
2022-03-14 12:28:57 +05:30
@override
Widget build(BuildContext context) {
return GetMaterialApp(
translations: StringValues(),
locale: const Locale('ja', 'JP'),
2022-10-30 21:43:29 +05:30
//locale: const Locale('en', 'US'),
2022-03-14 12:28:57 +05:30
fallbackLocale: const Locale('en', 'US'),
title: 'ROGAINING',
theme: ThemeData(
2023-10-06 16:25:21 +05:30
colorScheme: ColorScheme.fromSeed(
seedColor: const Color.fromARGB(255, 36, 135, 221)),
2023-09-04 22:46:53 +05:30
useMaterial3: true,
2022-03-14 12:28:57 +05:30
),
debugShowCheckedModeBanner: false,
defaultTransition: Transition.cupertino,
opaqueRoute: Get.isOpaqueRouteDefault,
popGesture: Get.isPopGestureEnable,
2022-04-17 11:45:21 +05:30
transitionDuration: const Duration(milliseconds: 230),
initialBinding: IndexBinding(), //HomeBinding(),
2022-07-20 15:57:40 +05:30
initialRoute: AppPages.PERMISSION,
2022-03-14 12:28:57 +05:30
getPages: AppPages.routes,
2022-07-09 22:51:34 +05:30
enableLog: true,
2022-03-14 12:28:57 +05:30
);
}
}