re factor rog
This commit is contained in:
53
lib/features/initializer/app_initializer.dart
Normal file
53
lib/features/initializer/app_initializer.dart
Normal 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
|
||||
}
|
||||
19
lib/features/initializer/camera_check.dart
Normal file
19
lib/features/initializer/camera_check.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
17
lib/features/initializer/icheck.dart
Normal file
17
lib/features/initializer/icheck.dart
Normal 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
|
||||
}
|
||||
19
lib/features/initializer/location_check.dart
Normal file
19
lib/features/initializer/location_check.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
10
lib/features/initializer/network_check.dart
Normal file
10
lib/features/initializer/network_check.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user