Files
Regroup/lib/main.dart

192 lines
5.8 KiB
Dart
Raw Permalink Normal View History

2024-05-23 15:43:13 +05:30
import 'dart:async';
2024-07-13 23:28:27 +05:30
import 'dart:io';
2024-05-23 15:43:13 +05:30
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:firebase_core/firebase_core.dart';
2024-05-23 13:15:52 +05:30
import 'package:flutter/material.dart';
2024-05-23 15:43:13 +05:30
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/Utils/Common/NoInternet.dart';
import 'package:regroup/firebase_options.dart';
2024-05-23 15:43:13 +05:30
import 'package:regroup/resources/routes/route_name.dart';
import 'package:regroup/resources/routes/routes.dart';
2024-07-12 15:11:59 +05:30
2024-05-23 15:43:13 +05:30
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
2024-05-23 13:15:52 +05:30
2024-07-09 14:46:28 +05:30
SystemChrome.setPreferredOrientations([
2024-05-23 15:43:13 +05:30
DeviceOrientation.portraitUp,
2024-07-09 14:46:28 +05:30
]).then((value) =>
// runApp(MyApp())
runApp(const MyApp())
2024-05-23 13:15:52 +05:30
2024-07-09 14:46:28 +05:30
// StatsFl(
// align: Alignment.center,
// width: 200,
// height: 100,
// child: const MyApp())),
);
}
2024-05-23 13:15:52 +05:30
final streamController = StreamController.broadcast();
2024-05-23 15:43:13 +05:30
class MyApp extends StatefulWidget {
2024-05-23 13:15:52 +05:30
const MyApp({super.key});
@override
2024-05-23 15:43:13 +05:30
State<MyApp> createState() => _MyAppState();
2024-05-23 13:15:52 +05:30
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
// var _connectionStatus = ConnectivityResult.values.toString();
// final Connectivity _connectivity = Connectivity();
// late StreamSubscription<ConnectivityResult> _connectivitySubscription;
2024-07-13 23:28:27 +05:30
List<ConnectivityResult> _connectionStatus = [ConnectivityResult.none];
final Connectivity _connectivity = Connectivity();
late StreamSubscription<List<ConnectivityResult>> _connectivitySubscription;
2024-07-13 23:28:27 +05:30
// Future<void> checkInternet() async {
// final connectivityResult = await (Connectivity().checkConnectivity());
// if (connectivityResult == ConnectivityResult.wifi ||
// connectivityResult == ConnectivityResult.mobile) {
// setState(() {
// _connectionStatus = connectivityResult.toString();
// print("has internet");
// });
// } else {
// setState(() {
// _connectionStatus = connectivityResult.toString();
// print("no internet");
// });
// }
// }
Future<void> initConnectivity() async {
late List<ConnectivityResult> result;
// Platform messages may fail, so we use a try/catch PlatformException.
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<void> _updateConnectionStatus(List<ConnectivityResult> result) async {
// setState(() {
// _connectionStatus = result.toString();
// });
// // ignore: avoid_print
// print('Connectivity changed: $_connectionStatus');
// }
Future<void> _updateConnectionStatus(List<ConnectivityResult> result) async {
// setState(() {
// _connectionStatus = result;
// });
2024-07-13 23:28:27 +05:30
if (result.contains(ConnectivityResult.wifi) ||
result.contains(ConnectivityResult.mobile)) {
setState(() {
_connectionStatus = result;
Get.back(result: true);
});
} else {
2024-07-13 23:28:27 +05:30
setState(() {
_connectionStatus = result;
Get.toNamed(RouteName.nointernet);
});
// Get.toNamed(RouteName.nointernet);
}
// ignore: avoid_print
print('Connectivity changed: $_connectionStatus');
}
2024-07-13 23:28:27 +05:30
Future<void> _getStoragePermission() async {
DeviceInfoPlugin plugin = DeviceInfoPlugin();
AndroidDeviceInfo android = await plugin.androidInfo;
if (android.version.sdkInt < 33) {
if (await Permission.storage.request().isGranted) {
// setState(() {
// permissionGranted = true;
// });
} else if (await Permission.storage.request().isPermanentlyDenied) {
await openAppSettings();
await utils.showToast("Permission denied.");
}
// else if (await Permission.audio.request().isDenied) {
// // setState(() {
// // permissionGranted = false;
// // });
// }
} else {
if (await Permission.photos.request().isGranted) {
// await utils.showToast("Permission granted.");
// setState(() {
// permissionGranted = true;
// });
} 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.");
// setState(() {
// permissionGranted = false;
// });
}
}
}
@override
void initState() {
initConnectivity();
WidgetsBinding.instance.addObserver(this);
2024-07-13 23:28:27 +05:30
_connectivitySubscription =
_connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
//do not remove this coomented code
2024-07-13 23:28:27 +05:30
if (Platform.isAndroid) {
_getStoragePermission();
}
super.initState();
}
@override
void dispose() {
_connectivitySubscription.cancel();
super.dispose();
}
2024-05-23 13:15:52 +05:30
@override
Widget build(BuildContext context) {
2024-05-29 12:13:08 +05:30
return ScreenUtilInit(
2024-05-23 15:43:13 +05:30
builder: (BuildContext context, Widget? child) => GetMaterialApp(
title: 'Regroup',
theme: ThemeData(
2024-07-01 12:14:30 +05:30
primarySwatch: Colors.grey,
2024-05-23 15:43:13 +05:30
fontFamily: 'Cambria',
2024-05-23 13:15:52 +05:30
),
2024-05-23 15:43:13 +05:30
debugShowCheckedModeBanner: false,
2024-07-18 20:15:38 +05:30
initialRoute: RouteName.profiletabbusguest,
2024-05-23 15:43:13 +05:30
getPages: AppRoutes.appRoutes(),
2024-05-23 13:15:52 +05:30
),
2024-07-01 12:14:30 +05:30
designSize: const Size(390, 844),
2024-05-23 13:15:52 +05:30
);
}
}