137 lines
4.4 KiB
Dart
137 lines
4.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:rogapp/pages/destination/destination_controller.dart';
|
|
import 'package:rogapp/pages/index/index_binding.dart';
|
|
import 'package:rogapp/routes/app_pages.dart';
|
|
import 'package:rogapp/utils/string_values.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
// import 'package:is_lock_screen/is_lock_screen.dart';
|
|
|
|
void saveGameState() async {
|
|
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);
|
|
}
|
|
|
|
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;
|
|
//print(
|
|
// "--restored -- destinationController.isInRog.value ${pref.getBool("is_in_rog")} -- ${pref.getBool("rogaining_counted")}");
|
|
}
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
await FlutterMapTileCaching.initialise();
|
|
final StoreDirectory instanceA = FMTC.instance('OpenStreetMap (A)');
|
|
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',
|
|
);
|
|
runApp(const MyApp());
|
|
}
|
|
|
|
class MyApp extends StatefulWidget {
|
|
const MyApp({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
State<MyApp> createState() => _MyAppState();
|
|
}
|
|
|
|
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
|
|
// This widget is the root of your application.
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
if (context.mounted) {
|
|
restoreGame();
|
|
}
|
|
WidgetsBinding.instance.addObserver(this);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
WidgetsBinding.instance.removeObserver(this);
|
|
super.dispose();
|
|
}
|
|
|
|
// 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);
|
|
// }
|
|
|
|
@override
|
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
|
DestinationController destinationController =
|
|
Get.find<DestinationController>();
|
|
switch (state) {
|
|
case AppLifecycleState.resumed:
|
|
//print("RESUMED");
|
|
restoreGame();
|
|
break;
|
|
case AppLifecycleState.inactive:
|
|
//print("INACTIVE");
|
|
break;
|
|
case AppLifecycleState.paused:
|
|
//print("PAUSED");
|
|
saveGameState();
|
|
break;
|
|
case AppLifecycleState.detached:
|
|
//print("DETACHED");
|
|
saveGameState();
|
|
break;
|
|
case AppLifecycleState.hidden:
|
|
//print("DETACHED");
|
|
saveGameState();
|
|
break;
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GetMaterialApp(
|
|
translations: StringValues(),
|
|
locale: const Locale('ja', 'JP'),
|
|
//locale: const Locale('en', 'US'),
|
|
fallbackLocale: const Locale('en', 'US'),
|
|
title: 'ROGAINING',
|
|
theme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: const Color.fromARGB(255, 36, 135, 221)),
|
|
useMaterial3: true,
|
|
),
|
|
debugShowCheckedModeBanner: false,
|
|
defaultTransition: Transition.cupertino,
|
|
opaqueRoute: Get.isOpaqueRouteDefault,
|
|
popGesture: Get.isPopGestureEnable,
|
|
transitionDuration: const Duration(milliseconds: 230),
|
|
initialBinding: IndexBinding(), //HomeBinding(),
|
|
initialRoute: AppPages.PERMISSION,
|
|
getPages: AppPages.routes,
|
|
enableLog: true,
|
|
);
|
|
}
|
|
}
|