This commit is contained in:
petrovyuri
2025-01-21 14:24:31 +03:00
parent e7b2c31e86
commit 17d096baac
96 changed files with 3575 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
library i_app_services;
export 'src/i_path_provider.dart';
export 'src/i_secure_storage.dart';

View File

@@ -0,0 +1,60 @@
import 'package:flutter/material.dart';
/// Интерфейс для сервиса отладки
abstract interface class IDebugService {
/// Наименование сервиса
static const name = 'IDebugService';
/// Метод для создания обработчика для BLoC
Object createBlocObserver();
/// Метод для создания обработчика для роутера
NavigatorObserver createRouterObserver();
/// Метод для создания обработчика для http-клиентов
Object createHttpInterceptor();
/// Метод для логгирования предупреждений
///
/// Принимает:
/// - [message] - сообщение для логгирования в формате [String]
void warning(String message);
/// Метод для логгирования ошибок
///
/// Принимает:
/// - [message] - сообщение для логгирования в формате [String]
/// - [exception] - исключение
/// - [stackTrace] - стек вызова
void error(String message, [Object? exception, StackTrace? stackTrace]);
/// Метод для обработки ошибок
///
/// Принимает:
/// - [error] - исключение
/// - [stackTrace] - стек вызова
/// - [message] - сообщение для логгирования в формате [String]
void handleError(Object error, [StackTrace? stackTrace, String? message]);
/// Метод для логгирования информативных сообщений
///
/// Принимает:
/// - [message] - сообщение для логгирования в формате [String]
void info(String message);
/// Метод для логгирования сообщений
///
/// Принимает:
/// - [message] - сообщение для логгирования в формате [String]
void log(String message);
/// Метод для открытия окна отладки
///
/// Принимает:
/// - [context] - для определения навигатора по нему
/// - [useRootNavigator] - при true, открывает окно в корневом навигаторе
Future<T?> openDebugScreen<T>(
BuildContext context, {
bool useRootNavigator = false,
});
}

View File

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

View File

@@ -0,0 +1,44 @@
/// Класс интерфейса для работы с защищенным хранилищем
abstract interface class ISecureStorage {
/// Описывает обязательные параметры имплементаций
///
/// Требует:
/// - [secretKey] - секретный ключ для шифрования данных
const ISecureStorage._({
required this.secretKey,
});
/// Секретный ключ для шифрования данных
final String secretKey;
/// Наименования интерфейса
static const name = 'ISecureStorage';
/// Метод для получения значения из защищенного хранилища
///
/// Принимает:
/// - [key] - ключ
Future<String?> read(String key);
/// Метод для записи значения в защищенное хранилище
///
/// Принимает:
/// - [key] - ключ
/// - [value] - значение
Future<void> write(String key, String value);
/// Метод для удаления значения из защищенного хранилища
///
/// Принимает:
/// - [key] - ключ
Future<void> delete(String key);
/// Метод для очистки защищенного хранилища
Future<void> clear();
/// Метод для проверки наличия значения в защищенном хранилище
///
/// Принимает:
/// - [key] - ключ
Future<bool> exists(String key);
}