2025-02-04 10:18:41 +03:00
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
import 'package:friflex_starter/features/debug/i_debug_service.dart';
|
2025-04-27 17:08:34 +03:00
|
|
|
|
import 'package:talker_bloc_logger/talker_bloc_logger_observer.dart';
|
|
|
|
|
|
import 'package:talker_dio_logger/talker_dio_logger_interceptor.dart';
|
|
|
|
|
|
import 'package:talker_flutter/talker_flutter.dart';
|
2025-02-04 10:18:41 +03:00
|
|
|
|
|
2025-04-27 17:08:34 +03:00
|
|
|
|
/// {@template debug_service}
|
|
|
|
|
|
/// Реализация сервиса отладки, с помощью Talker
|
|
|
|
|
|
/// {@endtemplate}
|
2025-02-04 10:18:41 +03:00
|
|
|
|
class DebugService implements IDebugService {
|
2025-04-27 17:08:34 +03:00
|
|
|
|
/// {@macro debug_service}
|
|
|
|
|
|
DebugService() {
|
|
|
|
|
|
_talker = TalkerFlutter.init();
|
|
|
|
|
|
_talkerDioLogger = TalkerDioLogger(talker: _talker);
|
|
|
|
|
|
_talkerRouteObserver = TalkerRouteObserver(_talker);
|
|
|
|
|
|
_talkerBlocObserver = TalkerBlocObserver(talker: _talker);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-04 10:18:41 +03:00
|
|
|
|
/// Наименование сервиса
|
|
|
|
|
|
static const name = 'DebugService';
|
|
|
|
|
|
|
2025-04-27 17:08:34 +03:00
|
|
|
|
/// Реализация Talker
|
|
|
|
|
|
late final Talker _talker;
|
|
|
|
|
|
|
|
|
|
|
|
/// Реализация TalkerDioLogger
|
|
|
|
|
|
late final TalkerDioLogger _talkerDioLogger;
|
|
|
|
|
|
|
|
|
|
|
|
/// Реализация TalkerRouteObserver
|
|
|
|
|
|
late final TalkerRouteObserver _talkerRouteObserver;
|
|
|
|
|
|
|
|
|
|
|
|
/// Реализация TalkerBlocLoggerObserver
|
|
|
|
|
|
late final TalkerBlocObserver _talkerBlocObserver;
|
|
|
|
|
|
|
|
|
|
|
|
/// Получает TalkerDioLoggerInterceptor
|
2025-02-04 10:18:41 +03:00
|
|
|
|
@override
|
2025-04-27 17:08:34 +03:00
|
|
|
|
TalkerDioLogger get dioLogger => _talkerDioLogger;
|
2025-02-04 10:18:41 +03:00
|
|
|
|
|
2025-04-27 17:08:34 +03:00
|
|
|
|
/// Получает TalkerRouteObserver\
|
|
|
|
|
|
@override
|
|
|
|
|
|
TalkerRouteObserver get routeObserver => _talkerRouteObserver;
|
|
|
|
|
|
|
|
|
|
|
|
/// Получает TalkerBlocObserver
|
|
|
|
|
|
@override
|
|
|
|
|
|
TalkerBlocObserver get blocObserver => _talkerBlocObserver;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
void logDebug(
|
|
|
|
|
|
Object message, {
|
|
|
|
|
|
Object? logLevel,
|
|
|
|
|
|
Map<String, dynamic>? args,
|
|
|
|
|
|
}) {
|
|
|
|
|
|
_talker.debug(
|
|
|
|
|
|
message is Function ? Function.apply(message, []) as Object : message,
|
|
|
|
|
|
);
|
2025-02-04 10:18:41 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
void logError(
|
|
|
|
|
|
Object message, {
|
|
|
|
|
|
Object? error,
|
|
|
|
|
|
Object? logLevel,
|
|
|
|
|
|
Map<String, dynamic>? args,
|
|
|
|
|
|
StackTrace? stackTrace,
|
|
|
|
|
|
}) {
|
2025-05-28 16:38:56 +03:00
|
|
|
|
final logMessage = message is Function
|
|
|
|
|
|
? Function.apply(message, []) as Object
|
|
|
|
|
|
: message;
|
2025-04-27 17:08:34 +03:00
|
|
|
|
_talker.error(logMessage, error, stackTrace);
|
2025-02-04 10:18:41 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
void log(Object message, {Object? logLevel, Map<String, dynamic>? args}) {
|
2025-05-28 16:38:56 +03:00
|
|
|
|
final logMessage = message is Function
|
|
|
|
|
|
? Function.apply(message, []) as Object
|
|
|
|
|
|
: message;
|
2025-04-27 17:08:34 +03:00
|
|
|
|
_talker.log(logMessage);
|
2025-02-04 10:18:41 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
2025-04-27 17:08:34 +03:00
|
|
|
|
void logWarning(
|
|
|
|
|
|
Object message, {
|
|
|
|
|
|
Object? logLevel,
|
|
|
|
|
|
Map<String, dynamic>? args,
|
|
|
|
|
|
}) {
|
2025-05-28 16:38:56 +03:00
|
|
|
|
final logMessage = message is Function
|
|
|
|
|
|
? Function.apply(message, []) as Object
|
|
|
|
|
|
: message;
|
2025-04-27 17:08:34 +03:00
|
|
|
|
_talker.warning(logMessage);
|
2025-02-04 10:18:41 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
2025-05-28 16:38:56 +03:00
|
|
|
|
Future<void> openDebugScreen(
|
|
|
|
|
|
BuildContext context, {
|
|
|
|
|
|
bool useRootNavigator = false,
|
|
|
|
|
|
}) async {
|
2025-04-27 17:08:34 +03:00
|
|
|
|
await Navigator.of(context).push(
|
|
|
|
|
|
MaterialPageRoute(builder: (context) => TalkerScreen(talker: _talker)),
|
|
|
|
|
|
);
|
2025-02-04 10:18:41 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|