re factor rog

This commit is contained in:
2024-04-01 09:26:56 +05:30
parent dd36ab8399
commit edbf52825b
54 changed files with 2597 additions and 435 deletions

View File

@ -0,0 +1,53 @@
import 'package:rogapp/features/initializer/camera_check.dart';
import 'package:rogapp/features/initializer/icheck.dart';
import 'package:rogapp/features/initializer/location_check.dart';
class AppInitializer {
final List<ICheck> checks;
AppInitializer()
: checks = [
LocationCheck(),
CameraCheck(),
//NetworkCheck(),
];
Future<bool> permissionStatus() async {
return await LocationCheck().locationPermissionStatus() &&
await CameraCheck().cameraPermissionStatus();
}
Future<bool> initializeApp() async {
if (!await runPreFlightChecks()) {
return false;
}
//await initializeTileCaching();
await loadInitialData();
await configureGlobalSettings();
// Add other initialization tasks as needed
return true;
}
Future<bool> runPreFlightChecks() async {
for (var check in checks) {
if (!await check.check()) {
return false;
}
}
return true;
}
Future<void> initializeTileCaching() async {}
Future<void> loadInitialData() async {
// Logic to preload data that your app will need
}
Future<void> configureGlobalSettings() async {
// Logic to set up any global configurations for your app
}
// You can add more methods for other initialization tasks
}

View File

@ -0,0 +1,19 @@
import 'package:permission_handler/permission_handler.dart';
import 'package:rogapp/features/initializer/icheck.dart';
class CameraCheck implements ICameraCheck {
@override
Future<bool> cameraPermissionStatus() async {
var permission = await Permission.camera.status;
return permission.isGranted;
}
@override
Future<bool> check() async {
var permission = await Permission.camera.status;
if (!permission.isGranted) {
permission = await Permission.camera.request();
}
return permission.isGranted;
}
}

View File

@ -0,0 +1,17 @@
abstract class ICheck {
Future<bool> check();
}
abstract class ILocationCheck extends ICheck {
Future<bool> locationPermissionStatus();
// Additional location-specific methods can be defined here
}
abstract class ICameraCheck extends ICheck {
Future<bool> cameraPermissionStatus();
// Additional camera-specific methods can be defined here
}
abstract class INetworkCheck extends ICheck {
// Additional network-specific methods can be defined here
}

View File

@ -0,0 +1,19 @@
import 'package:permission_handler/permission_handler.dart';
import 'package:geolocator/geolocator.dart';
import 'package:rogapp/features/initializer/icheck.dart';
class LocationCheck implements ILocationCheck {
@override
Future<bool> check() async {
var permission = await Permission.locationWhenInUse.status;
if (!permission.isGranted) {
permission = await Permission.locationWhenInUse.request();
}
return permission.isGranted && await Geolocator.isLocationServiceEnabled();
}
@override
Future<bool> locationPermissionStatus() {
return Permission.locationWhenInUse.isGranted;
}
}

View File

@ -0,0 +1,10 @@
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:rogapp/features/initializer/icheck.dart';
class NetworkCheck implements INetworkCheck {
@override
Future<bool> check() async {
var connectivityResult = await Connectivity().checkConnectivity();
return connectivityResult != ConnectivityResult.none;
}
}