182 lines
5.6 KiB
Dart
182 lines
5.6 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/pages/index/index_controller.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.is_in_rog.value);
|
|
pref.setBool("rogaining_counted", destinationController.rogaining_counted.value);
|
|
}
|
|
|
|
void restoreGame() async{
|
|
SharedPreferences pref = await SharedPreferences.getInstance();
|
|
DestinationController destinationController = Get.find<DestinationController>();
|
|
destinationController.skip_gps = false;
|
|
destinationController.is_in_rog.value = pref.getBool("is_in_rog") ?? false;
|
|
destinationController.rogaining_counted.value = pref.getBool("rogaining_counted") ?? false;
|
|
}
|
|
|
|
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();
|
|
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);
|
|
// }
|
|
|
|
|
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
|
DestinationController destinationController = Get.find<DestinationController>();
|
|
switch (state) {
|
|
case AppLifecycleState.resumed:
|
|
print("RESUMED");
|
|
restoreGame();
|
|
if(destinationController.positionStream == null){
|
|
destinationController.startGPSTimer();
|
|
destinationController.startGame();
|
|
}
|
|
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: 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,
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// class MyApp extends StatelessWidget {
|
|
// MyApp({Key? key}) : super(key: key);
|
|
|
|
// // This widget is the root of your application.
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return MaterialApp(
|
|
// title: 'Flutter Demo',
|
|
// theme: ThemeData(
|
|
// primaryColor: Color(0xfff00B074),
|
|
// textTheme: const TextTheme(
|
|
// bodyText1: TextStyle(
|
|
// fontSize: 18.0,
|
|
// fontFamily: 'Barlow-Medium',
|
|
// color: Color(0xff464255)),
|
|
// ),
|
|
// ),
|
|
// home: PermissionHandlerScreen(),
|
|
// );
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
|
|
// class SplashScreen extends StatelessWidget {
|
|
// const SplashScreen({Key? key}) : super(key: key);
|
|
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return WillPopScope(
|
|
// onWillPop: () async {
|
|
// SystemNavigator.pop();
|
|
// return true;
|
|
// },
|
|
// child: Scaffold(
|
|
// body: Center(
|
|
// child: Text(
|
|
// "Splash Screen",
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|