refactor(app): Обновить зависимости и улучшить документацию для сервисов

This commit is contained in:
PetrovY
2025-06-23 10:20:29 +03:00
parent fb92795b67
commit 150a85ab24
21 changed files with 348 additions and 37 deletions

View File

@@ -0,0 +1,50 @@
import 'package:geolocator/geolocator.dart';
import 'package:i_app_services/i_app_services.dart';
/// {@template app_location_service}
/// Реализация сервиса для работы с гео в базовой реализацией Android/OS.
/// {@endtemplate}
class AppLocationService implements ILocationService {
/// {@macro app_location_service}
const AppLocationService();
/// Наименование сервиса
static const name = 'BaseAppLocationService';
@override
Future<Position> getCurrentPosition() async {
bool serviceEnabled;
LocationPermission permission;
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
// Службы геолокации не включены, не продолжаем
// обращаться к позиции и запрашиваем у пользователей
// приложения включить службы геолокации.
return Future.error('Location services are disabled.');
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
// Разрешения отклонены, в следующий раз можно попробовать
// запросить разрешения снова (здесь также возвращается
// shouldShowRequestPermissionRationale Android.
// Согласно рекомендациям Android ваше приложение
// должно показать пояснительный интерфейс сейчас.
return Future.error('Location permissions are denied');
}
}
if (permission == LocationPermission.deniedForever) {
// Разрешения отклонены навсегда, обрабатываем соответствующим образом.
return Future.error(
'Location permissions are permanently denied, we cannot request permissions.',
);
}
// Когда мы доходим сюда, разрешения предоставлены и мы можем
// продолжить обращение к позиции устройства.
return await Geolocator.getCurrentPosition();
}
}

View File

@@ -4,7 +4,7 @@ version: 0.0.1
publish_to: none
environment:
sdk: ^3.8.0
sdk: ">=3.0.0 <4.0.0"
dependencies:
flutter:
@@ -19,6 +19,9 @@ dependencies:
# для работы с путями в хранилища
path_provider: 2.1.5
# Работа с геолокацией
geolocator: 14.0.1
# Обязательные интерфейсы
i_app_services:
path: ../../i_app_services