Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/shop_app_example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ void _initDependencies() {
final talker = TalkerFlutter.init(
settings: TalkerSettings(
colors: {
TalkerLogType.verbose.key: AnsiPen()..yellow(),
TalkerKey.verbose: AnsiPen()..yellow(),
GoodLog.getKey: GoodLog.getPen,
},
),
Expand Down
18 changes: 9 additions & 9 deletions packages/talker/example/talker_example.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ Future<void> main() async {
final talker = Talker(
settings: TalkerSettings(
colors: {
TalkerLogType.info.key: AnsiPen()..magenta(),
YourCustomLog.logKey: AnsiPen()..green(),
TalkerKey.info: AnsiPen()..magenta(),
YourCustomKey.logKey: AnsiPen()..green(),
},
titles: {
TalkerLogType.exception.key: 'Whatever you want',
TalkerLogType.error.key: 'E',
TalkerLogType.info.key: 'i',
YourCustomLog.logKey: 'Custom',
TalkerKey.exception: 'Whatever you want',
TalkerKey.error: 'E',
TalkerKey.info: 'i',
YourCustomKey.logKey: 'Custom',
},
),
);
Expand All @@ -32,11 +32,11 @@ Future<void> main() async {
}

/// Custom logs
talker.logCustom(YourCustomLog('Something like your own service message'));
talker.logCustom(YourCustomKey('Something like your own service message'));
}

class YourCustomLog extends TalkerLog {
YourCustomLog(String message) : super(message);
class YourCustomKey extends TalkerLog {
YourCustomKey(String message) : super(message);

/// Your own log key (for color customization in settings)
static const logKey = 'custom_log_key';
Expand Down
2 changes: 1 addition & 1 deletion packages/talker/lib/src/models/talker_error.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class TalkerError extends TalkerData {
super.title,
LogLevel? logLevel,
}) : super(message, error: error) {
_key = key ?? TalkerLogType.error.key;
_key = key ?? TalkerKey.error;
_logLevel = logLevel ?? LogLevel.error;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/talker/lib/src/models/talker_exception.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class TalkerException extends TalkerData {
super.title,
LogLevel? logLevel,
}) : super(message, exception: exception) {
_key = key ?? TalkerLogType.exception.key;
_key = key ?? TalkerKey.exception;
_logLevel = logLevel ?? LogLevel.error;
}

Expand Down
97 changes: 46 additions & 51 deletions packages/talker/lib/src/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,64 +2,64 @@ import 'package:talker/talker.dart';

final _defaultTitles = {
/// Base logs section
TalkerLogType.critical.key: 'critical',
TalkerLogType.warning.key: 'warning',
TalkerLogType.verbose.key: 'verbose',
TalkerLogType.info.key: 'info',
TalkerLogType.debug.key: 'debug',
TalkerLogType.error.key: 'error',
TalkerLogType.exception.key: 'exception',
TalkerKey.critical: 'critical',
TalkerKey.warning: 'warning',
TalkerKey.verbose: 'verbose',
TalkerKey.info: 'info',
TalkerKey.debug: 'debug',
TalkerKey.error: 'error',
TalkerKey.exception: 'exception',

/// Http section
TalkerLogType.httpError.key: 'http-error',
TalkerLogType.httpRequest.key: 'http-request',
TalkerLogType.httpResponse.key: 'http-response',
TalkerKey.httpError: 'http-error',
TalkerKey.httpRequest: 'http-request',
TalkerKey.httpResponse: 'http-response',

/// Bloc section
TalkerLogType.blocEvent.key: 'bloc-event',
TalkerLogType.blocTransition.key: 'bloc-transition',
TalkerLogType.blocCreate.key: 'bloc-create',
TalkerLogType.blocClose.key: 'bloc-close',
TalkerKey.blocEvent: 'bloc-event',
TalkerKey.blocTransition: 'bloc-transition',
TalkerKey.blocCreate: 'bloc-create',
TalkerKey.blocClose: 'bloc-close',

/// Riverpod section
TalkerLogType.riverpodAdd.key: 'riverpod-add',
TalkerLogType.riverpodUpdate.key: 'riverpod-update',
TalkerLogType.riverpodDispose.key: 'riverpod-dispose',
TalkerLogType.riverpodFail.key: 'riverpod-fail',
TalkerKey.riverpodAdd: 'riverpod-add',
TalkerKey.riverpodUpdate: 'riverpod-update',
TalkerKey.riverpodDispose: 'riverpod-dispose',
TalkerKey.riverpodFail: 'riverpod-fail',

/// Flutter section
TalkerLogType.route.key: 'route',
TalkerKey.route: 'route',
};

final _defaultColors = {
/// Base logs section
TalkerLogType.critical.key: AnsiPen()..red(),
TalkerLogType.warning.key: AnsiPen()..yellow(),
TalkerLogType.verbose.key: AnsiPen()..gray(),
TalkerLogType.info.key: AnsiPen()..blue(),
TalkerLogType.debug.key: AnsiPen()..gray(),
TalkerLogType.error.key: AnsiPen()..red(),
TalkerLogType.exception.key: AnsiPen()..red(),
TalkerKey.critical: AnsiPen()..red(),
TalkerKey.warning: AnsiPen()..yellow(),
TalkerKey.verbose: AnsiPen()..gray(),
TalkerKey.info: AnsiPen()..blue(),
TalkerKey.debug: AnsiPen()..gray(),
TalkerKey.error: AnsiPen()..red(),
TalkerKey.exception: AnsiPen()..red(),

/// Http section
TalkerLogType.httpError.key: AnsiPen()..red(),
TalkerLogType.httpRequest.key: AnsiPen()..xterm(219),
TalkerLogType.httpResponse.key: AnsiPen()..xterm(46),
TalkerKey.httpError: AnsiPen()..red(),
TalkerKey.httpRequest: AnsiPen()..xterm(219),
TalkerKey.httpResponse: AnsiPen()..xterm(46),

/// Bloc section
TalkerLogType.blocEvent.key: AnsiPen()..xterm(51),
TalkerLogType.blocTransition.key: AnsiPen()..xterm(49),
TalkerLogType.blocCreate.key: AnsiPen()..xterm(35),
TalkerLogType.blocClose.key: AnsiPen()..xterm(198),
TalkerKey.blocEvent: AnsiPen()..xterm(51),
TalkerKey.blocTransition: AnsiPen()..xterm(49),
TalkerKey.blocCreate: AnsiPen()..xterm(35),
TalkerKey.blocClose: AnsiPen()..xterm(198),

/// Riverpod section
TalkerLogType.riverpodAdd.key: AnsiPen()..xterm(51),
TalkerLogType.riverpodUpdate.key: AnsiPen()..xterm(49),
TalkerLogType.riverpodDispose.key: AnsiPen()..xterm(198),
TalkerLogType.riverpodFail.key: AnsiPen()..red(),
TalkerKey.riverpodAdd: AnsiPen()..xterm(51),
TalkerKey.riverpodUpdate: AnsiPen()..xterm(49),
TalkerKey.riverpodDispose: AnsiPen()..xterm(198),
TalkerKey.riverpodFail: AnsiPen()..red(),

/// Flutter section
TalkerLogType.route.key: AnsiPen()..xterm(135),
TalkerKey.route: AnsiPen()..xterm(135),
};

final _fallbackPen = AnsiPen()..gray();
Expand Down Expand Up @@ -130,9 +130,9 @@ class TalkerSettings {
///
/// ```dart
/// final customTitles = {
/// TalkerTitle.info.key: "Information",
/// TalkerTitle.error.key: "Error",
/// TalkerTitle.warning.key: "Warning",
/// TalkerKey.info: "Information",
/// TalkerKey.error: "Error",
/// TalkerKey.warning: "Warning",
/// };
///
/// final logger = Talker(
Expand All @@ -153,9 +153,9 @@ class TalkerSettings {
///
/// ```dart
/// final customColors = {
/// TalkerKey.info.key: AnsiPen()..white(bold: true),
/// TalkerKey.error.key: AnsiPen()..red(bold: true),
/// TalkerKey.warning.key: AnsiPen()..yellow(bold: true),
/// TalkerKey.info: AnsiPen()..white(bold: true),
/// TalkerKey.error: AnsiPen()..red(bold: true),
/// TalkerKey.warning: AnsiPen()..yellow(bold: true),
/// };
///
/// final logger = Talker(
Expand All @@ -168,14 +168,9 @@ class TalkerSettings {
/// By using the `colors` field, you can customize the text colors for specific log keys in the console.
final Map<String, AnsiPen> colors = _defaultColors;

String getTitleByLogKey(String key) {
return titles[key] ?? key;
}

AnsiPen getAnsiPenByLogType(TalkerLogType type, {TalkerData? logData}) =>
getPenByLogKey(type.key, fallbackPen: logData?.pen);
String getTitleByKey(String key) => titles[key] ?? key;

AnsiPen getPenByLogKey(String key, {AnsiPen? fallbackPen}) {
AnsiPen getPenByKey(String key, {AnsiPen? fallbackPen}) {
return colors[key] ?? fallbackPen ?? _fallbackPen;
}

Expand Down
29 changes: 14 additions & 15 deletions packages/talker/lib/src/talker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,12 @@ class Talker {
_logger = _logger.copyWith(
settings: _logger.settings.copyWith(
colors: {
LogLevel.critical:
settings.getAnsiPenByLogType(TalkerLogType.critical),
LogLevel.error: settings.getAnsiPenByLogType(TalkerLogType.error),
LogLevel.warning: settings.getAnsiPenByLogType(TalkerLogType.warning),
LogLevel.verbose: settings.getAnsiPenByLogType(TalkerLogType.verbose),
LogLevel.info: settings.getAnsiPenByLogType(TalkerLogType.info),
LogLevel.debug: settings.getAnsiPenByLogType(TalkerLogType.debug),
LogLevel.critical: settings.getPenByKey(TalkerKey.critical),
LogLevel.error: settings.getPenByKey(TalkerKey.error),
LogLevel.warning: settings.getPenByKey(TalkerKey.warning),
LogLevel.verbose: settings.getPenByKey(TalkerKey.verbose),
LogLevel.info: settings.getPenByKey(TalkerKey.info),
LogLevel.debug: settings.getPenByKey(TalkerKey.debug),
},
),
);
Expand Down Expand Up @@ -370,11 +369,11 @@ class Talker {
LogLevel logLevel, {
AnsiPen? pen,
}) {
final type = TalkerLogType.fromLogLevel(logLevel);
final penByLogKey = settings.getPenByLogKey(type.key);
final title = settings.getTitleByLogKey(type.key);
final key = TalkerKey.fromLogLevel(logLevel);
final penByLogKey = settings.getPenByKey(key);
final title = settings.getTitleByKey(key);
final data = TalkerLog(
key: type.key,
key: key,
message?.toString() ?? '',
title: title,
exception: exception,
Expand Down Expand Up @@ -417,10 +416,10 @@ class Talker {

var pen = data.pen;

final logTypeKey = data.key;
if (logTypeKey != null) {
data.title = settings.getTitleByLogKey(logTypeKey);
pen = settings.getPenByLogKey(logTypeKey, fallbackPen: data.pen);
final key = data.key;
if (key != null) {
data.title = settings.getTitleByKey(key);
pen = settings.getPenByKey(key, fallbackPen: data.pen);
data.pen = pen;
}

Expand Down
89 changes: 36 additions & 53 deletions packages/talker/lib/src/talker_key.dart
Original file line number Diff line number Diff line change
@@ -1,65 +1,48 @@
import 'package:talker/talker.dart';

enum TalkerLogType {
/// TalkerKey - String key of log type (After 5.0.0)
/// TalkerLogType (Before 5.0.0)
abstract class TalkerKey {
TalkerKey._();

/// Base logs section
error('error'),
critical('critical'),
info('info'),
debug('debug'),
verbose('verbose'),
warning('warning'),
exception('exception'),
static const error = 'error';
static const critical = 'critical';
static const info = 'info';
static const debug = 'debug';
static const verbose = 'verbose';
static const warning = 'warning';
static const exception = 'exception';

/// Http section
httpError('http-error'),
httpRequest('http-request'),
httpResponse('http-response'),
static const httpError = 'http-error';
static const httpRequest = 'http-request';
static const httpResponse = 'http-response';

/// Bloc section
blocEvent('bloc-event'),
blocTransition('bloc-transition'),
blocClose('bloc-close'),
blocCreate('bloc-create'),
static const blocEvent = 'bloc-event';
static const blocTransition = 'bloc-transition';
static const blocClose = 'bloc-close';
static const blocCreate = 'bloc-create';

/// Riverpod section
riverpodAdd('riverpod-add'),
riverpodUpdate('riverpod-update'),
riverpodDispose('riverpod-dispose'),
riverpodFail('riverpod-fail'),
static const riverpodAdd = 'riverpod-add';
static const riverpodUpdate = 'riverpod-update';
static const riverpodDispose = 'riverpod-dispose';
static const riverpodFail = 'riverpod-fail';

/// Flutter section
route('route');

const TalkerLogType(this.key);
final String key;

static TalkerLogType fromLogLevel(LogLevel logLevel) {
return TalkerLogType.values.firstWhere((e) => e.logLevel == logLevel);
}

static TalkerLogType? fromKey(String key) {
return TalkerLogType.values.firstWhereLogTypeOrNull((e) => e.key == key);
}
}

extension TalkerLogTypeExt on TalkerLogType {
/// Mapping [TalkerLogType] into [LogLevel]
LogLevel get logLevel {
switch (this) {
case TalkerLogType.error:
return LogLevel.error;
case TalkerLogType.critical:
return LogLevel.critical;
case TalkerLogType.info:
return LogLevel.info;
case TalkerLogType.debug:
return LogLevel.debug;
case TalkerLogType.verbose:
return LogLevel.verbose;
case TalkerLogType.warning:
return LogLevel.warning;
default:
return LogLevel.debug;
}
}
static const route = 'route';

static String fromLogLevel(LogLevel logLevel) =>
_logLevels[logLevel] ?? TalkerKey.debug;

static const _logLevels = {
LogLevel.error: TalkerKey.error,
LogLevel.critical: TalkerKey.critical,
LogLevel.info: TalkerKey.info,
LogLevel.debug: TalkerKey.debug,
LogLevel.verbose: TalkerKey.verbose,
LogLevel.warning: TalkerKey.warning,
};
}
Loading