import 'dart:async'; import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:regroup/Utils/dialogs.dart'; import 'package:regroup/firebase_options.dart'; import 'package:regroup/resources/routes/route_name.dart'; import 'package:regroup/resources/routes/routes.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]).then((value) => runApp(const MyApp())); } final streamController = StreamController.broadcast(); class MyApp extends StatefulWidget { const MyApp({super.key}); @override State createState() => _MyAppState(); } class _MyAppState extends State with WidgetsBindingObserver { List _connectionStatus = [ConnectivityResult.none]; final Connectivity _connectivity = Connectivity(); late StreamSubscription> _connectivitySubscription; Future initConnectivity() async { late List result; try { result = await _connectivity.checkConnectivity(); print("initconnectivitity"); } on PlatformException catch (e) { print("errrror"); print(e); return; } if (!mounted) { return Future.value(null); } return _updateConnectionStatus(result); } Future _updateConnectionStatus(List result) async { if (result.contains(ConnectivityResult.wifi) || result.contains(ConnectivityResult.mobile)) { setState(() { _connectionStatus = result; Get.back(result: true); }); } else { setState(() { _connectionStatus = result; Get.toNamed(RouteName.nointernet); }); } print('Connectivity changed: $_connectionStatus'); } Future _getStoragePermission() async { DeviceInfoPlugin plugin = DeviceInfoPlugin(); AndroidDeviceInfo android = await plugin.androidInfo; if (android.version.sdkInt < 33) { if (await Permission.storage.request().isGranted) { } else if (await Permission.storage.request().isPermanentlyDenied) { await openAppSettings(); await utils.showToast("Permission denied."); } } else { if (await Permission.photos.request().isGranted) { } else if (await Permission.photos.request().isPermanentlyDenied) { await openAppSettings(); await utils.showToast("Permission denied."); } else if (await Permission.photos.request().isDenied) { await openAppSettings(); await utils.showToast("Permission denied."); } } } @override void initState() { initConnectivity(); WidgetsBinding.instance.addObserver(this); _connectivitySubscription = _connectivity.onConnectivityChanged.listen(_updateConnectionStatus); if (Platform.isAndroid) { _getStoragePermission(); } super.initState(); } @override void dispose() { _connectivitySubscription.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return ScreenUtilInit( //useInheritedMediaQuery: true, builder: (BuildContext context, Widget? child) => GetMaterialApp( title: 'Regroup', theme: ThemeData( primarySwatch: Colors.grey, fontFamily: 'Cambria', ), debugShowCheckedModeBanner: false, // initialRoute: RouteName.individualactivitystep2, initialRoute: RouteName.splashScreen, getPages: AppRoutes.appRoutes(), ), designSize: const Size(390, 844), ); } }