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,29 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
build/

View File

@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "7482962148e8d758338d8a28f589f317e1e42ba4"
channel: "stable"
project_type: package

View File

@@ -0,0 +1 @@
# Базовые сервисы для приложения

View File

@@ -0,0 +1 @@
include: package:friflex_lint_rules/analysis_options.yaml

View File

@@ -0,0 +1,4 @@
library app_services;
export 'src/app_path_provider.dart';
export 'src/app_secure_storage.dart';

View File

@@ -0,0 +1,13 @@
import 'package:i_app_services/i_app_services.dart';
import 'package:path_provider/path_provider.dart';
/// Класс для Aurora реализации сервиса работы с путями
class AppPathProvider implements IPathProvider {
/// Наименование сервиса
static const name = 'AuroraAppPathProvider';
@override
Future<String> getAppDocumentsDirectoryPath() async {
return (await getApplicationDocumentsDirectory()).path;
}
}

View File

@@ -0,0 +1,48 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_secure_storage_aurora/flutter_secure_storage_aurora.dart';
import 'package:i_app_services/i_app_services.dart';
/// Класс для Aurora реализации сервис по работе с защищенным хранилищем
final class AppSecureStorage implements ISecureStorage {
/// Создает сервис для работы с защищенным хранилищем
///
/// Принимает:
/// - [secretKey] - ключ шифрования данных
AppSecureStorage({required this.secretKey}){
FlutterSecureStorageAurora.setSecret(secretKey);
}
@override
final String secretKey;
@override
String get name => 'AuroraAppSecureStorage';
/// Экземпляр хранилища данных
final _box = const FlutterSecureStorage();
@override
Future<void> clear() async {
await _box.deleteAll();
}
@override
Future<void> delete(String key) async {
await _box.delete(key: key);
}
@override
Future<bool> exists(String key) {
return _box.containsKey(key: key);
}
@override
Future<String?> read(String key) async {
return _box.read(key: key);
}
@override
Future<void> write(String key, String value) async {
await _box.write(key: key, value: value);
}
}

View File

@@ -0,0 +1,37 @@
name: app_services
description: "Google сервисы для приложения"
version: 0.0.1
publish_to: none
environment:
sdk: ^3.5.0
flutter: ^3.24.0
dependencies:
flutter:
sdk: flutter
# Зависимости для сервиса защищенного хранилища
flutter_secure_storage: 8.0.0
flutter_secure_storage_aurora:
git:
url: https://gitlab.com/omprussia/flutter/flutter-community-plugins/flutter_secure_storage_aurora.git
ref: aurora-0.5.3
# для работы с путями в хранилища
path_provider: 2.1.4
path_provider_aurora:
git:
url: https://gitlab.com/omprussia/flutter/packages.git
ref: aurora-path_provider_aurora-0.6.0
path: packages/path_provider_aurora
# Обязательные интерфейсы
i_app_services:
path: ../../i_app_services
dev_dependencies:
friflex_lint_rules:
hosted: https://pub.friflex.com
version: 4.0.1

View File

@@ -0,0 +1,29 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
build/

View File

@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "7482962148e8d758338d8a28f589f317e1e42ba4"
channel: "stable"
project_type: package

View File

@@ -0,0 +1 @@
# Базовые сервисы для приложения

View File

@@ -0,0 +1 @@
include: package:friflex_lint_rules/analysis_options.yaml

View File

@@ -0,0 +1,4 @@
library app_services;
export 'src/app_path_provider.dart';
export 'src/app_secure_storage.dart';

View File

@@ -0,0 +1,13 @@
import 'package:i_app_services/i_app_services.dart';
import 'package:path_provider/path_provider.dart';
/// Класс для базовой реализации сервиса работы с путями
class AppPathProvider implements IPathProvider {
/// Наименование сервиса
static const name = 'GmsAppPathProvider';
@override
Future<String> getAppDocumentsDirectoryPath() async {
return (await getApplicationDocumentsDirectory()).path;
}
}

View File

@@ -0,0 +1,44 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:i_app_services/i_app_services.dart';
/// Класс для базовой реализации сервис по работе с защищенным хранилищем
final class AppSecureStorage implements ISecureStorage {
/// Создает сервис для работы с защищенным хранилищем
///
/// Принимает:
/// - [secretKey] - ключ шифрования данных
AppSecureStorage({required this.secretKey});
@override
final String secretKey;
static const name = 'GmsAppSecureStorage';
/// Экземпляр хранилища данных
final _box = const FlutterSecureStorage();
@override
Future<void> clear() async {
await _box.deleteAll();
}
@override
Future<void> delete(String key) async {
await _box.delete(key: key);
}
@override
Future<bool> exists(String key) {
return _box.containsKey(key: key);
}
@override
Future<String?> read(String key) async {
return _box.read(key: key);
}
@override
Future<void> write(String key, String value) async {
await _box.write(key: key, value: value);
}
}

View File

@@ -0,0 +1,35 @@
name: app_services
description: "Google сервисы для приложения"
version: 0.0.1
publish_to: none
environment:
sdk: ^3.5.0
flutter: ^3.24.0
dependencies:
flutter:
sdk: flutter
# Зависимости для сервиса логирования
talker_flutter: 4.6.4
talker_dio_logger: 4.6.4
talker_bloc_logger: 4.6.4
# Зависимости для сервиса защищенного хранилища
flutter_secure_storage: 9.2.4
# Зависимости для сервиса незащищенного хранилища
shared_preferences: 2.3.5
# для работы с путями в хранилища
path_provider: 2.1.5
# Обязательные интерфейсы
i_app_services:
path: ../../i_app_services
dev_dependencies:
friflex_lint_rules:
hosted: https://pub.friflex.com
version: 4.0.1

29
app_services/i_app_services/.gitignore vendored Normal file
View File

@@ -0,0 +1,29 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
build/

View File

@@ -0,0 +1 @@
# Хранит в себе все интерфейсы для реализации общих сервисов

View File

@@ -0,0 +1,10 @@
include: package:friflex_lint_rules/analysis_options.yaml
analyzer:
exclude:
- "**/*.g.dart"
- "**/*.freezed.dart"
- "**/*.yaml"
- "app_services/aurora/**"
- "/app_services/aurora/**"
- "**/app_services/aurora/**"

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);
}

View File

@@ -0,0 +1,17 @@
name: i_app_services
description: "Хранит в себе все интерфейсы для реализации общих сервисов"
version: 0.0.1
publish_to: "none"
environment:
sdk: ^3.5.0
flutter: ^3.24.0
dependencies:
flutter:
sdk: flutter
dev_dependencies:
friflex_lint_rules:
hosted: https://pub.friflex.com
version: 4.0.1