feat(debug): Добавить экраны отладки для плагинов

This commit is contained in:
Artem Barkalov
2025-06-23 01:03:38 +03:00
parent fb92795b67
commit 9b5f80e7d9
21 changed files with 605 additions and 30 deletions

View File

@@ -2,3 +2,4 @@ library;
export 'src/app_path_provider.dart';
export 'src/app_secure_storage.dart';
export 'src/app_url_launcher.dart';

View File

@@ -11,6 +11,8 @@ class AppPathProvider implements IPathProvider {
/// Наименование сервиса
static const name = 'AuroraAppPathProvider';
String get nameImpl => AppPathProvider.name;
@override
Future<String> getAppDocumentsDirectoryPath() async {
return (await getApplicationDocumentsDirectory()).path;

View File

@@ -15,11 +15,15 @@ final class AppSecureStorage implements ISecureStorage {
FlutterSecureStorageAurora.setSecret(secretKey);
}
/// Наименование сервиса
static const name = 'AuroraAppSecureStorage';
@override
String get nameImpl => AppSecureStorage.name;
@override
final String secretKey;
static const name = 'AuroraAppSecureStorage';
/// Экземпляр хранилища данных
final _box = const FlutterSecureStorage();
@@ -47,7 +51,4 @@ final class AppSecureStorage implements ISecureStorage {
Future<void> write(String key, String value) async {
await _box.write(key: key, value: value);
}
@override
String get nameImpl => AppSecureStorage.name;
}

View File

@@ -0,0 +1,26 @@
import 'package:i_app_services/i_app_services.dart';
import 'package:url_launcher/url_launcher.dart' as url_launcher;
/// {@template app_url_launcher}
/// Класс для Аврора реализации сервиса работы с URL
/// {@endtemplate}
class AppUrlLauncher implements IUrlLauncher {
/// {@macro app_url_launcher}
AppUrlLauncher();
/// Наименование сервиса
static const String name = 'AuroraAppUrlLauncher';
@override
String get nameImpl => AppUrlLauncher.name;
@override
Future<bool> canLaunchUrl(Uri url) async {
return url_launcher.canLaunchUrl(url);
}
@override
Future<bool> launchUrl(Uri url) async {
return url_launcher.launchUrl(url);
}
}

View File

@@ -17,9 +17,12 @@ dependencies:
url: https://gitlab.com/omprussia/flutter/flutter-community-plugins/flutter_secure_storage_aurora.git
ref: aurora-0.5.3
# для работы с путями (плагин встроен в sdk flutter 3.27.1)
# Зависимости для работы с путями (плагин встроен в sdk flutter 3.27.3)
path_provider: 2.1.5
# Зависимости для работы с открытием ссылок (плагин встроен в sdk flutter 3.27.3)
url_launcher: 6.3.1
# Обязательные интерфейсы
i_app_services:
path: ../../i_app_services

View File

@@ -2,3 +2,4 @@ library;
export 'src/app_path_provider.dart';
export 'src/app_secure_storage.dart';
export 'src/app_url_launcher.dart';

View File

@@ -11,6 +11,9 @@ class AppPathProvider implements IPathProvider {
/// Наименование сервиса
static const name = 'BaseAppPathProvider';
@override
String get nameImpl => AppPathProvider.name;
@override
Future<String> getAppDocumentsDirectoryPath() async {
return (await getApplicationDocumentsDirectory()).path;

View File

@@ -11,12 +11,15 @@ final class AppSecureStorage implements ISecureStorage {
/// {@macro app_secure_storage}
AppSecureStorage({this.secretKey});
@override
final String? secretKey;
/// Наименование сервиса
static const name = 'BaseAppSecureStorage';
@override
String get nameImpl => AppSecureStorage.name;
@override
final String? secretKey;
/// Экземпляр хранилища данных
final _box = const FlutterSecureStorage();
@@ -44,7 +47,4 @@ final class AppSecureStorage implements ISecureStorage {
Future<void> write(String key, String value) async {
await _box.write(key: key, value: value);
}
@override
String get nameImpl => AppSecureStorage.name;
}

View File

@@ -0,0 +1,26 @@
import 'package:i_app_services/i_app_services.dart';
import 'package:url_launcher/url_launcher.dart' as url_launcher;
/// {@template app_url_launcher}
/// Класс для базовой реализации сервиса работы с URL
/// {@endtemplate}
class AppUrlLauncher implements IUrlLauncher {
/// {@macro app_url_launcher}
AppUrlLauncher();
/// Наименование сервиса
static const String name = 'BaseAppUrlLauncher';
@override
String get nameImpl => AppUrlLauncher.name;
@override
Future<bool> canLaunchUrl(Uri url) async {
return url_launcher.canLaunchUrl(url);
}
@override
Future<bool> launchUrl(Uri url) async {
return url_launcher.launchUrl(url);
}
}

View File

@@ -19,6 +19,9 @@ dependencies:
# для работы с путями в хранилища
path_provider: 2.1.5
# Зависимости для сервиса внешних ссылок
url_launcher: 6.3.1
# Обязательные интерфейсы
i_app_services:
path: ../../i_app_services

View File

@@ -2,3 +2,4 @@ library;
export 'src/i_path_provider.dart';
export 'src/i_secure_storage.dart';
export 'src/i_url_launcher.dart';

View File

@@ -1,9 +1,11 @@
/// Класс для описания интерфейса сервиса
/// для получения пути хранения файлов
/// Класс для описания интерфейса сервиса для получения пути хранения файлов
abstract interface class IPathProvider {
/// Наименования интерфейса
static const name = 'IPathProvider';
/// Получение имени имплементации
String get nameImpl;
/// Получение path на внутренне хранилище приложения
Future<String?> getAppDocumentsDirectoryPath();
}

View File

@@ -1,4 +1,4 @@
/// Класс интерфейса для работы с защищенным хранилищем
/// Класс для описания интерфейса для работы с защищенным хранилищем
abstract interface class ISecureStorage {
/// Описывает обязательные параметры имплементаций
///
@@ -6,14 +6,17 @@ abstract interface class ISecureStorage {
/// - [secretKey] - секретный ключ для шифрования данных
const ISecureStorage._({required this.secretKey});
/// Наименования интерфейса
static const name = 'ISecureStorage';
/// Получение имени имплементации
String get nameImpl;
/// Секретный ключ для шифрования данных
/// Нужен, если надо передать ключ в реализацию
/// например, в Aurora
final String? secretKey;
/// Наименования интерфейса
static const name = 'ISecureStorage';
/// Метод для получения значения из защищенного хранилища
///
/// Принимает:
@@ -41,6 +44,4 @@ abstract interface class ISecureStorage {
/// Принимает:
/// - [key] - ключ
Future<bool> containsKey(String key);
String get nameImpl;
}

View File

@@ -0,0 +1,18 @@
/// Класс для описания интерфейса сервиса для запуска URL
abstract interface class IUrlLauncher {
/// Наименования интерфейса
static const name = 'IUrlLauncher';
/// Получение имени имплементации
String get nameImpl;
/// Метод для проверки возможности запуска ссылки
///
/// - [url] - ссылка для проверки
Future<bool> canLaunchUrl(Uri url);
/// Метод для запуска ссылки
///
/// - [url] - ссылка для запуска
Future<bool> launchUrl(Uri url);
}