From 93fd96509650a5f2cfeda95d86fb0abbcc8ae9aa Mon Sep 17 00:00:00 2001 From: Yaroslav Vorobev Date: Sat, 14 Jun 2025 16:25:47 +0300 Subject: [PATCH 1/2] perf: use initializer instead of late initialization and polymorph getters this will remove late initialization checks from runtime and unnecessary getter overloads, which will also make classes more friendly to extension --- .../talker/lib/src/models/talker_data.dart | 22 ++++++++----------- .../talker/lib/src/models/talker_error.dart | 19 +++++----------- .../lib/src/models/talker_exception.dart | 21 ++++++------------ 3 files changed, 22 insertions(+), 40 deletions(-) diff --git a/packages/talker/lib/src/models/talker_data.dart b/packages/talker/lib/src/models/talker_data.dart index 54c2c59fc..be7ce90cc 100644 --- a/packages/talker/lib/src/models/talker_data.dart +++ b/packages/talker/lib/src/models/talker_data.dart @@ -14,19 +14,13 @@ class TalkerData { DateTime? time, this.pen, this.key, - }) { - _time = time ?? DateTime.now(); - } - - late DateTime _time; + }) : time = time ?? DateTime.now(); /// {@template talker_data_message} /// [String] [message] - message describes what happened /// {@endtemplate} final String? message; - final String? key; - /// {@template talker_data_loglevel} /// [LogLevel] [logLevel] - to control logging output /// {@endtemplate} @@ -42,24 +36,26 @@ class TalkerData { /// {@endtemplate} final Error? error; - /// {@template talker_data_title} - /// Title of Talker log - /// {@endtemplate} - String? title; - /// {@template talker_data_stackTrace} /// StackTrace?] [stackTrace] - stackTrace if [exception] or [error] happened /// {@endtemplate} final StackTrace? stackTrace; + /// {@template talker_data_title} + /// Title of Talker log + /// {@endtemplate} + String? title; + /// {@template talker_data_time} /// Internal time when the log occurred /// {@endtemplate} - DateTime get time => _time; + final DateTime time; /// [AnsiPen?] [pen] - sets your own log color for console AnsiPen? pen; + final String? key; + /// {@template talker_data_generateTextMessage} /// Internal method that generates /// a complete message about the event diff --git a/packages/talker/lib/src/models/talker_error.dart b/packages/talker/lib/src/models/talker_error.dart index 6b40e68f9..9320fbf34 100644 --- a/packages/talker/lib/src/models/talker_error.dart +++ b/packages/talker/lib/src/models/talker_error.dart @@ -10,19 +10,12 @@ class TalkerError extends TalkerData { String? key, super.title, LogLevel? logLevel, - }) : super(message, error: error) { - _key = key ?? TalkerLogType.error.key; - _logLevel = logLevel ?? LogLevel.error; - } - - late String _key; - late LogLevel _logLevel; - - @override - String get key => _key; - - @override - LogLevel? get logLevel => _logLevel; + }) : super( + message, + logLevel: logLevel ?? LogLevel.error, + error: error, + key: key ?? TalkerLogType.error.key, + ); /// {@macro talker_data_generateTextMessage} @override diff --git a/packages/talker/lib/src/models/talker_exception.dart b/packages/talker/lib/src/models/talker_exception.dart index fb6d50a64..29adc0f46 100644 --- a/packages/talker/lib/src/models/talker_exception.dart +++ b/packages/talker/lib/src/models/talker_exception.dart @@ -1,7 +1,7 @@ import 'package:talker/talker.dart'; /// Base implementation of [TalkerData] -/// to handle ONLY [Exceptions]s +/// to handle ONLY [Exception]s class TalkerException extends TalkerData { TalkerException( Exception exception, { @@ -10,19 +10,12 @@ class TalkerException extends TalkerData { String? key, super.title, LogLevel? logLevel, - }) : super(message, exception: exception) { - _key = key ?? TalkerLogType.exception.key; - _logLevel = logLevel ?? LogLevel.error; - } - - late String _key; - late LogLevel _logLevel; - - @override - String get key => _key; - - @override - LogLevel? get logLevel => _logLevel; + }) : super( + message, + logLevel: logLevel ?? LogLevel.error, + exception: exception, + key: key ?? TalkerLogType.exception.key, + ); /// {@macro talker_data_generateTextMessage} @override From f2ebbb50e6b1d660e07b4a28a42732b9fbb5518d Mon Sep 17 00:00:00 2001 From: Yaroslav Vorobev Date: Sat, 14 Jun 2025 16:26:27 +0300 Subject: [PATCH 2/2] fix: add missing error and exception details to console logs --- packages/talker/lib/src/models/talker_data.dart | 2 +- packages/talker/lib/src/models/talker_log.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/talker/lib/src/models/talker_data.dart b/packages/talker/lib/src/models/talker_data.dart index be7ce90cc..de0d07e55 100644 --- a/packages/talker/lib/src/models/talker_data.dart +++ b/packages/talker/lib/src/models/talker_data.dart @@ -68,7 +68,7 @@ class TalkerData { /// {@endtemplate} String generateTextMessage( {TimeFormat timeFormat = TimeFormat.timeAndSeconds}) { - return '${displayTitleWithTime(timeFormat: timeFormat)}$message$displayStackTrace'; + return '${displayTitleWithTime(timeFormat: timeFormat)}$displayMessage$displayException$displayError$displayStackTrace'; } } diff --git a/packages/talker/lib/src/models/talker_log.dart b/packages/talker/lib/src/models/talker_log.dart index 16691e7da..81874c45c 100644 --- a/packages/talker/lib/src/models/talker_log.dart +++ b/packages/talker/lib/src/models/talker_log.dart @@ -19,6 +19,6 @@ class TalkerLog extends TalkerData { @override String generateTextMessage( {TimeFormat timeFormat = TimeFormat.timeAndSeconds}) { - return '${displayTitleWithTime(timeFormat: timeFormat)}$displayMessage$displayException$displayStackTrace'; + return '${displayTitleWithTime(timeFormat: timeFormat)}$displayMessage$displayException$displayError$displayStackTrace'; } }