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:is_lock_screen/is_lock_screen.dart';

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 didChangeAppLifecycleState(AppLifecycleState state) {
      switch (state) {
        case AppLifecycleState.resumed:
          print("RESUMED");
          DestinationController destinationController = Get.find<DestinationController>();
          if(destinationController.positionStream == null){
            destinationController.startGPSTimer();
          }
          break;
        case AppLifecycleState.inactive:
          print("INACTIVE");
          break;
        case AppLifecycleState.paused:
          print("PAUSED");
          break;
        case AppLifecycleState.detached:
          print("DETACHED");
          break;
        case AppLifecycleState.hidden:
          print("DETACHED");
          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",
//           ),
//         ),
//       ),
//     );
//   }
// }
